Stata: ćwiczenia i zadania -...

Post on 28-Feb-2019

220 views 0 download

Transcript of Stata: ćwiczenia i zadania -...

Stata: ćwiczenia i zadania

Wprowadzenie

Stata1 – wprowadzenie MOTYWACJA (uzupełnienie ćwiczeń z ekonometrii)

PLAN KURSU 1. Operacja na zbiorach danych (tworzenie, importowanie,

eksportowanie danych) 2. Operacja na danych (rodzaje zmiennych, opisywanie zmiennych,

rekodowanie zmiennych, etykietkowanie zmiennych) 3. Wstępny opis statystyczny zmiennych (obliczenie statystyk

klasycznych i pozycyjnych, proste analizy graficzne) 4. Analizowanie problemów z wykładu „Ekonometria” na

przykładowych zbiorach danych 5. Prezentacja wyników modelu.

Stata1 – wprowadzenie Jak używać STATA ?

Na podstawie:

http://fmwww.bc.edu/GStat/docs/StataIntro.pdf

Stata1 – wprowadzenie http://data.princeton.edu/stata/default.html

Stata1 – wprowadzenie http://stata.com/

Stata1 – wprowadzenie

Stata is a full-featured statistical programming language for Windows, Mac OS X, Unix and Linux. It can be considered a “stat package,” like SAS, SPSS, RATS, or eViews. Stata is available in several versions: Stata/IC (the standard version), Stata/SE (an extended version) and Stata/MP (for multiprocessing). The major difference between the versions is the number of variables allowed in memory, which is limited to 2,047 in standard Stata/IC, but can be much larger in Stata/SE or Stata/MP. The number of observations in any version is limited only by memory.

Na podstawia Baum (2011)

Stata1 – wprowadzenie

Jak można używać Stata: 1. z poziomu menu (toolbar)

2. Komendy w oknie „Command” 3. …

Stata1 – wprowadzenie 3. Programując polecenia …

Stata1 – wprowadzenie BARDZO WAŻNE !!!

HELP

Stata: ćwiczenia i zadania

Zajęcia 2

Stata1/2 PLAN

1. Otwieranie zbioru danych 2. Analiza zmiennych w zbiorze

a. Zmienne numeryczne b. Zmienne tekstowe c. Konwersja zmiennych

3. Tworzenie i modyfikacja zmiennych

4. Łączenie zbiorów danych

5. Programowanie

Literatura: Mitchell M., Data Management Using Stata: A Practical Handbook, A Stata Press Publication, 2010.

cd C:\dydaktyka\2012_13\stata_zadania_cwiczenia\mitchell (zmienić adres) net from http://www.stata-press.com/data/dmus net get dmus1 net get dmus2

Stata1/2 /* Plik można otworzyć korzystając z opcji File/Open w menu ze ścieżki "C:\Program Files\Stata11\ado\base\u\” , ale po co ? Czy nie łatwiej jest napisać do-file ? */ sysuse uslifeexp describe summarize notes summarize le if year < 1950 summarize le if year >= 1950 /* polecenia: describe, summarize służą do opisu zbioru. Niedługo się nimi zajmiemy. Na razie spróbujmy wykonać powyższe polecenia za pomocą menu. Najpierw jednak skorzystajmy z helpa. */

OTWIERANIE ZBIORU

Stata 2: używanie zakładki do helpa

OTWIERANIE ZBIORU

Stata 2: help/use To bring the contents of an existing Stata file into memory, the command: use file [,clear] is employed (clear will empty the current contents of memory). You must make sufficient memory available to Stata to load the entire file, since Stata’s speed is largely derived from holding the entire data set in memory. (Baum, str.61)

ZOBACZMY helpa =>

OTWIERANIE ZBIORU

Stata 2: korzystanie z use (zakładka) To bring the contents of an existing Stata file into memory, the command: use file [,clear] is employed (clear will empty the current contents of memory). You must make sufficient memory available to Stata to load the entire file, since Stata’s speed is largely derived from holding the entire data set in memory. (Baum, str.61)

Stata 2: help/use

ZOBACZMY helpa =>

OTWIERANIE ZBIORU

Stata 2: help/use OTWIERANIE ZBIORÓW

1. Dane w formacie STATA (.dta) => use LUB sysuse LUB webuse 2. Analiza opisu „use” z helpa:

a. Składnia (syntax) b. Menu (gdzie jest w menu) c. Description (do czego służy) d. Options (dodatkowe opcje: clear, nolabel) e. Remarks (uwagi: przykłady (!!!) i dodatkowe wyjaśnienia)

OTWIERANIE ZBIORU

Ćwiczenie: Przykład otwierania danych z zakładki (zbiór wws.dta) . Zapis polecenia w do-file.

Stata 2: otwieranie zbiorów csv i tab (przykłady zbiorów)

Otwieranie zbiorów w innych formatach Typy danych, które będziemy otwierać: 1. xxx.csv lub xxx.txt (comma-separated values) 2. xxx.tab lub xxx.txt (tab-separated values) 3. Xxx.txt (space-separated values) 4. Xxx.txt (fixed format data)

Przykład: CSV . type dentists1.txt name,years,fulltime,recom "Y. Don Uflossmore",7.25,0,1 "Olive Tu'Drill",10.25,1,1 "Isaac O'Yerbreath",32.75,1,1 "Ruth Canaale",22,1,1 "Mike Avity",8.5,0,0

Przykład: TAB . type dentists2.txt name years fulltime recom "Y. Don Uflossmore" 7.25 0 1 "Olive Tu'Drill" 10.25 1 1 "Isaac O'Yerbreath" 32.75 1 1 "Ruth Canaale" 22 1 1 "Mike Avity" 8.5 0 0

OTWIERANIE ZBIORU

Przykład: space-separated . type dentists5.txt "Y. Don Uflossmore" 7.25 0 1 "Olive Tu'Drill" 10.25 1 1 "Isaac O'Yerbreath" 32.75 1 1 "Ruth Canaale" 22 1 1 "Mike Avity" 8.5 0 0

Przykład: fixed-column . type dentists7.txt Y. Don Uflossmore 7.2501 Olive Tu'Drill 10.2511 Isaac O'Yerbreath32.7511 Ruth Canaale 22.0011 Mike Avity 8.5000

OTWIERANIE ZBIORU

Stata 2: otwieranie zbiorów ze spacjami i w kolumnach (przykłady zbiorów)

Stata 2: otwieranie zbiorów csv i tab (insheet)

Nie zrobione: insheet : zakładka: help: do-file

Stata 2: otwieranie zbiorów ze spacją (infile lub insheet)

OTWIERANIE ZBIORÓW

1. Dane separowane spacją => infile 2. help(infile) infile str17 name years full rec using dentists5.txt, clear list UWAGA: „str17” informacja, że zmienna „name” jest tekstem o długości do 17 znaków. O typach zmiennych będzie wkrótce. UWAGA: infile nie działa jeżeli w pierwszym wierszu danych są nazwy zmiennych. Wówczas możemy użyć insheet insheet using dentists6.txt, clear delimiter(" ")

OTWIERANIE ZBIORU

Stata 2: otwieranie zbiorów w kolumnach (infix)

OTWIERANIE ZBIORÓW

1. Dane w kolumnach (fixed-column files) => infix 2. help(infix) infix str names 1-17 years 18-22 fulltime 23 recom 24 using dentists7.txt, clear list

OTWIERANIE ZBIORU

Stata 2: otwieranie danych z Excel 1. Dane inne – np.XLSX => odbc lub xmluse (nigdy nie używałem ) 2. help(odbc) clear odbc load, dsn("Excel Files") table("dentists1$") clear dialog(complete) format %24s name LUB xmluse dentists9.xml, doctype(excel) firstrow clear

OK. Da się i tak …

Stata1/2 UWAGI KOŃCOWE.

1. Dane można też kopiować bezpośrednio do edytora danych (Ctrl-C/Ctr-V) 2. Dane można wpisywać do Edytora danych (jak do Excela) 3. Zapisywanie danych działa podobnie jak otwieranie danych

OTWIERANIE ZBIORU

Stata

Analizowanie zbioru danych

ANALIZOWANIE ZBIORU DANYCH

Stata 2: używanie zakładki DATA do opisu danych Data/Describe data

OTWIERANIE ZBIORU

Stata1/2 (describe) Typy zmiennych

. describe idcode age wage storage display value variable name type format label variable label --------------------------------------------------------------------------------------------------------- idcode int %8.0g Unique ID age byte %8.0g age in current year wage float %9.0g hourly wage

1. Zmienne liczbowe (numeryczne) i zmienne tekstowe 2. Kodowanie zmiennych numerycznych (12.2.2 Numeric storage types)

ANALIZA ZBIORU

Stata1/2 (storage types)

12.2.2 Numeric storage types

Ćwiczenie: Utworzyć zbiór danych ze zmiennymi x1 x2 x3 x4. Każda ze zmiennych ma 100 wartości. Niech x1=2, x2 = 101, x3 = min(10000+x2(t-1), 32740), x4 = 10000+x2(t-1), x5=9*10^12. Sprawdź jakie formaty zmiennym przypisze STATA.

ANALIZA ZBIORU

Stata1/2 (numeric format) Stata has three numeric format types: e, f, and g. The formats are denoted by a leading percent sign (%) followed by the string w.d, where w and d stand for two integers. The first integer, w, specifies the width of the format. The second integer d specifies the number of digits that are to follow the decimal point. d must be less than w. Finally, a character denotes the format type (e, f, or g), and to that may optionally be appended a c indicating that commas are to be included in the result (c is not allowed with e.)

ANALIZA ZBIORU

Statistics/Summaries, …/Summary statistics

Stata 2: używanie zakładki STATISTICS do opisu statystycznego

Stata1/2 (summarize) summarize : opis zmiennych ciągłych

su wage, det hourly wage Percentiles Smallest 1% 1.892108 0 5% 2.801002 1.004952 10% 3.220612 1.032247 Obs 2246 25% 4.259257 1.151368 Sum of Wgt. 2246 50% 6.276297 Mean 288.2885 Largest Std. Dev. 9595.692 75% 9.661837 40.19808 90% 12.77777 40.74659 Variance 9.21e+07 95% 16.73912 250000 Skewness 35.45839 99% 38.70926 380000 Kurtosis 1297.042

ANALIZA ZBIORU

Stata1/2 (summarize)

. return list scalars: r(N) = 2246 r(sum_w) = 2246 r(mean) = 288.2885022096515 r(Var) = 92077303.72510321 r(sd) = 9595.691935712777 r(skewness) = 35.45838961389101 r(kurtosis) = 1297.04192474504 r(sum) = 647495.9759628773 r(min) = 0 r(max) = 380000 r(p1) = 1.89210832118988 r(p5) = 2.801002025604248 r(p10) = 3.220612049102783 r(p25) = 4.259257316589356 r(p50) = 6.276296854019165 r(p75) = 9.661836624145508 r(p90) = 12.77777481079102 r(p95) = 16.7391242980957 r(p99) = 38.70925903320313

ANALIZA ZBIORU

Stata1/2 (tabulate)

Tabulate : opis zmiennych dyskretnych

summarize var1 if var2==0 : zmienna ciągła var1 warunkowana zmienną dyskretną var2 bysort var2: su var1 : wartości var1 dla kategorii var2 tabstat var1, by(var2) s(…) : statystyki opisowe var1 warunkowane var2 table var2, c(s1 var1 s2 var1 …. S5 var1)

WARUNKOWE STATYSTYKI ZMIENNEJ CIĄGŁEJ

ANALIZA ZBIORU

Stata1/2

TWORZENIE I MODYFIKOWANIE ZMIENNYCH

Tworzenie i rekodowanie zmiennych

Polecenia: 1. generate 2. replace 3. recode 4. egen

Stata 2: opis zakładki Data (przykłady innych procedur)

OTWIERANIE ZBIORU

describe generate

extended generate

Stata 2: opis zakładki Data (przykłady)

OTWIERANIE ZBIORU

replace recode

merge rename

Stata 2: opis zakładki Data (ćwiczenie)

OTWIERANIE ZBIORU

Korzystając z danych (systemowych) uslifeexp: 1. skorzystać z wymienionych wcześniej poleceń: describe, generate,

egen, replace, recode, rename z poziomu zakładki 2. Zbudować do-file robiący te same procedury

Stata1/2 (gen) gen wageweek = wage * 40 lab var wageweek "godz pracy (tyg)" su wageweek, det desc wageweek replace wageweek = wageweek*hours su wageweek, det desc wageweek

tab married nevermarried gen wageweekM = wageweek*hours if married==1 lab var wageweekM "placa tygodniowa jezeli married==1" gen wageweekN = wageweek*hours if nevermarried==1 lab var wageweekN "placa tygodniowa jezeli nevermarried==1" codebook wageweekM wageweekN /* duzo brakow danych */ recode wageweekM wageweekN (. = -9) su wage* /* bez sensu poniewaz -9 */ recode wageweekM wageweekN (-9=.a) /* -9 w tych zmiennych to braki odp */ su wage* /* bez sensu poniewaz -9 */ gen over40hours = (hours>=40) if ! missing(hours) /* zgadnij co to ? */ tabstat hours, by(over40hours) s(min mean max)

Stata1/2 (gen)

ZWIEDZANIE HELP/FUNCTIONS

TWORZENIE I MODYFIKOWANIE ZMIENNYCH

Stata1/2 (gen)

/* tworzenie zmiennych losowych */ set seed 83271 gen r = runiform() su r histogram r gen randz = rnormal() gen randiq = rnormal(100,15) su rand* histogram randz, normal histogram randiq, normal gen randchi2 = rchi2(5) su randchi2 hist randchi2

/* zastosowania polecenia generate */ gen sqrtwage = sqrt(wage) list wage sqrtwage in 1/10 gen networth1 = int(networth) gen networth2 = round(networth) gen networth3 = round(networth, 0.01) list idcode networth1 networth2

TWORZENIE I MODYFIKOWANIE ZMIENNYCH

Stata1/2 (egen) /* przyklad z rowmean - wartosci dla obserwacji (wiersze) */ use cardio2miss, clear list gen avgbp = (bp1 + bp2 + bp3 + bp4 + bp5)/5 list egen avgbp2 = rowmean(bp1-bp5) egen minbp = rowmin(bp1-bp5) egen minbp = rowmax(bp1-bp5) egen missbp = rowmiss(bp1-bp5) egen nonmissbp = rownonmiss(bp1-bp5) list

/* przyklad z bysort - wartosci dla obserwacji (wiersze) */ use gasctrysmall, clear list, sepby(ctry) egen avggas = mean(gas) list ctry year gas avggas, sepby(ctry) bysort ctry: egen avggas_ctry = mean(gas) list ctry year gas avggas avggas_ctry , sepby(ctry)abb(20) bysort year: egen avggas_year = mean(gas) list ctry year gas avggas avggas_ctry avggas_year, sepby(year)abb(20)

TWORZENIE I MODYFIKOWANIE ZMIENNYCH

Stata1/2 (egen) /* count i match */ use cardio1ex.dta, clear list id ex* /* ile jest 4 ? */ egen cntex4 = anycount(ex1 ex2 ex3 ex4 ex5), values(4) list ex* cntex4 /* czy jest 2 ? */ egen exetex4 = anymatch(ex1-ex5), values(2) list ex*

TWORZENIE I MODYFIKOWANIE ZMIENNYCH

Stata (zaj. 3)

Analizowanie zbioru danych

ANALIZOWANIE ZBIORU DANYCH

Stata 2: używanie zakładki DATA do opisu danych (opuszczamy)

Data/Describe data

OTWIERANIE ZBIORU

Stata1/2 (describe) - krótko

Typy zmiennych

. describe idcode age wage storage display value variable name type format label variable label --------------------------------------------------------------------------------------------------------- idcode int %8.0g Unique ID age byte %8.0g age in current year wage float %9.0g hourly wage

1. Zmienne liczbowe (numeryczne) i zmienne tekstowe 2. Kodowanie zmiennych numerycznych (12.2.2 Numeric storage types)

ANALIZA ZBIORU

Stata1/2 (storage types) - krótko

12.2.2 Numeric storage types

Ćwiczenie: Utworzyć zbiór danych ze zmiennymi x1 x2 x3 x4. Każda ze zmiennych ma 100 wartości. Niech x1=2, x2 = 101, x3 = min(10000+x2(t-1), 32740), x4 = 10000+x2(t-1), x5=9*10^12. Sprawdź jakie formaty zmiennym przypisze STATA.

ANALIZA ZBIORU

Stata1/2 (numeric format) - krótko

Stata has three numeric format types: e, f, and g. The formats are denoted by a leading percent sign (%) followed by the string w.d, where w and d stand for two integers. The first integer, w, specifies the width of the format. The second integer d specifies the number of digits that are to follow the decimal point. d must be less than w. Finally, a character denotes the format type (e, f, or g), and to that may optionally be appended a c indicating that commas are to be included in the result (c is not allowed with e.)

ANALIZA ZBIORU

Statistics/Summaries, …/Summary statistics

Stata 2: używanie zakładki STATISTICS do opisu statystycznego - krótko

Stata1/2 (summarize) - ważne summarize : opis zmiennych ciągłych

su wage, det hourly wage Percentiles Smallest 1% 1.892108 0 5% 2.801002 1.004952 10% 3.220612 1.032247 Obs 2246 25% 4.259257 1.151368 Sum of Wgt. 2246 50% 6.276297 Mean 288.2885 Largest Std. Dev. 9595.692 75% 9.661837 40.19808 90% 12.77777 40.74659 Variance 9.21e+07 95% 16.73912 250000 Skewness 35.45839 99% 38.70926 380000 Kurtosis 1297.042

ANALIZA ZBIORU

Stata1/2 (summarize) - ważne

. return list scalars: r(N) = 2246 r(sum_w) = 2246 r(mean) = 288.2885022096515 r(Var) = 92077303.72510321 r(sd) = 9595.691935712777 r(skewness) = 35.45838961389101 r(kurtosis) = 1297.04192474504 r(sum) = 647495.9759628773 r(min) = 0 r(max) = 380000 r(p1) = 1.89210832118988 r(p5) = 2.801002025604248 r(p10) = 3.220612049102783 r(p25) = 4.259257316589356 r(p50) = 6.276296854019165 r(p75) = 9.661836624145508 r(p90) = 12.77777481079102 r(p95) = 16.7391242980957 r(p99) = 38.70925903320313

ANALIZA ZBIORU

Stata1/2 (tabulate)

Tabulate : opis zmiennych dyskretnych

summarize var1 if var2==0 : zmienna ciągła var1 warunkowana zmienną dyskretną var2 bysort var2: su var1 : wartości var1 dla kategorii var2 tabstat var1, by(var2) s(…) : statystyki opisowe var1 warunkowane var2 table var2, c(s1 var1 s2 var1 …. S5 var1)

WARUNKOWE STATYSTYKI ZMIENNEJ CIĄGŁEJ

ANALIZA ZBIORU

Stata1/2

TWORZENIE I MODYFIKOWANIE ZMIENNYCH

Tworzenie i rekodowanie zmiennych

Polecenia: 1. generate 2. replace 3. recode 4. egen

Stata : opis zakładki Data (przykłady innych procedur) - krótko

OTWIERANIE ZBIORU

describe generate

extended generate

Stata : opis zakładki Data (przykłady innych procedur) - krótko

OTWIERANIE ZBIORU

replace recode

merge rename

Stata1/2 (gen) gen wageweek = wage * 40 lab var wageweek "godz pracy (tyg)" su wageweek, det desc wageweek replace wageweek = wageweek*hours su wageweek, det desc wageweek

tab married nevermarried gen wageweekM = wageweek*hours if married==1 lab var wageweekM "placa tygodniowa jezeli married==1" gen wageweekN = wageweek*hours if nevermarried==1 lab var wageweekN "placa tygodniowa jezeli nevermarried==1" codebook wageweekM wageweekN /* duzo brakow danych */ recode wageweekM wageweekN (. = -9) su wage* /* bez sensu poniewaz -9 */ recode wageweekM wageweekN (-9=.a) /* -9 w tych zmiennych to braki odp */ su wage* /* bez sensu poniewaz -9 */ gen over40hours = (hours>=40) if ! missing(hours) /* zgadnij co to ? */ tabstat hours, by(over40hours) s(min mean max)

Stata1/2 (gen) -ważne

ZWIEDZANIE HELP/FUNCTIONS

TWORZENIE I MODYFIKOWANIE ZMIENNYCH

Stata1/2 (gen) - ważne

/* tworzenie zmiennych losowych */ set seed 83271 gen r = runiform() su r histogram r gen randz = rnormal() gen randiq = rnormal(100,15) su rand* histogram randz, normal histogram randiq, normal gen randchi2 = rchi2(5) su randchi2 hist randchi2

/* zastosowania polecenia generate */ gen sqrtwage = sqrt(wage) list wage sqrtwage in 1/10 gen networth1 = int(networth) gen networth2 = round(networth) gen networth3 = round(networth, 0.01) list idcode networth1 networth2

TWORZENIE I MODYFIKOWANIE ZMIENNYCH

Stata (egen) - ważne /* przyklad z rowmean - wartosci dla obserwacji (wiersze) */ use cardio2miss, clear list gen avgbp = (bp1 + bp2 + bp3 + bp4 + bp5)/5 list egen avgbp2 = rowmean(bp1-bp5) egen minbp = rowmin(bp1-bp5) egen minbp = rowmax(bp1-bp5) egen missbp = rowmiss(bp1-bp5) egen nonmissbp = rownonmiss(bp1-bp5) list

/* przyklad z bysort - wartosci dla obserwacji (wiersze) */ use gasctrysmall, clear list, sepby(ctry) egen avggas = mean(gas) list ctry year gas avggas, sepby(ctry) bysort ctry: egen avggas_ctry = mean(gas) list ctry year gas avggas avggas_ctry , sepby(ctry)abb(20) bysort year: egen avggas_year = mean(gas) list ctry year gas avggas avggas_ctry avggas_year, sepby(year)abb(20)

TWORZENIE I MODYFIKOWANIE ZMIENNYCH

Stata1/2 (egen) /* count i match */ use cardio1ex.dta, clear list id ex* /* ile jest 4 ? */ egen cntex4 = anycount(ex1 ex2 ex3 ex4 ex5), values(4) list ex* cntex4 /* czy jest 2 ? */ egen exetex4 = anymatch(ex1-ex5), values(2) list ex*

TWORZENIE I MODYFIKOWANIE ZMIENNYCH

Stata (zaj. 3)

Analizowanie zbioru danych

ŁĄCZENIE ZBIORÓW

Stata1/2 (append)

ŁĄCZENIE ZBIORÓW DANYCH

Polecenia: 1. append 2. merge 3. joinby

cd "C:\dydaktyka\2012_13\stata_zadania_cwiczenia\mitchell" use moms, clear sort famid list use dads, clear sort famid list /* 1 */ clear append using moms dads sort famid list /* 2 */ use moms, clear append using dads sort famid list

master file

using file

Stata1/2 (append) use moms1, clear list use dads1, clear list clear append using moms1 dads1 list /* konflikt nazw zmiennych */ use moms1, clear rename mage age rename mrace race rename mhs hs save m1, replace use dads1, clear rename dage age rename drace race rename dhs hs save d1, replace

use momslab, clear describe use dadslab, clear describe clear append using momslab dadslab describe /*konflikt etykiet */ lab var age "Age" lab var race "Ethnicity" lab var hs "Is a HS Graduate"

Stata1/2 (append) /** konflikt etykiet wartosci */ use momslab, clear list lab list use dadslab, clear list lab list /* konflikt etykiet w zmiennych race */ clear append using momslab dadslab, gen(datasrc) lab list /* etykietu z momslab */ list

/* rozw */ use momslab, clear gen sex = 1 lab var sex "Gender" label define sex_lab 1 "female" 2 "male" lab val sex sex_lab lab def eth 1 "White" 2 "Black", modify lab def grad 0 "non HS Grade" 1 "HS Grade", modify save momslab1, replace use dadslab, clear gen sex=2 save dadslab1, replace clear append using momslab1 dadslab1, gen(datasrc) lab list /* etykietu z momslab */ list

Stata1/2 (append)

/* KONFLIKT kodowania wartosci */ use momshs, clear append using dads, gen(src) list tab src hs /*konflikt kodów */ use momshs, clear recode hs (1=0) (2=1) append using dads tab hs

/* KONFLIKT typu zmiennych */ use moms, clear append using dadstr /* hs jest zmienna tekstowa */ use dadstr, clear destring hs, replace append using moms list

Stata1/2 (append)

ŁĄCZENIE ZBIORÓW DANYCH

dir br*.dta clear append using br_clarence br_isaac br_sally, gen(rev) list, sepby(rev)

Łączenie wielu zbiorów

Stata1/2 (merge) /* przyklad 1 */ use moms1, clear list use dads1, clear list use moms1, clear merge 1:1 famid using dads1 list /* przyklad 2 */ use moms2, clear list use dads2, clear list use moms2, clear merge 1:1 famid using dads2 sort famid list

/* przyklad 3 - niejednoznaczne obserwacje */ use momsdup, clear list duplicates report merge 1:1 famid using dads2 /* nie da sie polaczyc zbiorów */ /* przyklad 4 - laczenie wzgledem wiecej niz 1 zmiennej */ use kids1, clear sort famid kidid list use kidname, clear sort famid kidid list use kids1, clear merge 1:1 famid kidid using kidname list

ŁĄCZENIE ZBIORÓW DANYCH

Stata1/2 /* przyklad 5 - 1:m*/ global log "C:\dydaktyka\2012_13\stata_zadania_cwiczenia" log using $log\lab2\lab2.txt, text append use moms1, clear sort famid list use kids1, clear sort famid kidid list use moms1 merge 1:m famid using kids1 sort famid kidid list, sepby(famid) log close

+ -------- ------- -------- ----- -------- ------- -------- ------------- + | famid mage mrace mhs kidid kage kfem _merge | | -------- ------- -------- ----- -------- ------- -------- ------------- |

1 | 1 33 2 1 1 3 1 matched (3) | | -------- ------- -------- ----- -------- ------- -------- ------------- |

2 | 2 28 1 1 1 8 0 matched (3) | 3 | 2 28 1 1 2 3 1 matched (3) |

| -------- ------- -------- ----- -------- ------- -------- ------------- | 4 | 3 24 2 1 1 4 1 matched (3) | 5 | 3 24 2 1 2 7 0 matched (3) |

| -------- ------- -------- ----- -------- ------- -------- ------------- | 6 | 4 21 1 0 1 1 0 matched (3) | 7 | 4 21 1 0 2 3 0 matched (3) | 8 | 4 21 1 0 3 7 0 matched (3) |

ŁĄCZENIE ZBIORÓW DANYCH

Stata1/2

+---- ------ ------- ------ -------- ------- ----- -------------------- famid age race hs kidid kage kfem _merge ----- ------ ------- ------ -------- ------- ----- --------------------

1 1 33 2 1 . . . master only (1) 2 2 28 1 1 2 3 1 matched (3) 3 3 24 2 1 2 7 0 matched (3) 4 4 21 1 0 2 3 0 matched (3) 5 2 28 1 1 1 8 0 matched (3)

----- ------ ------- ------ -------- ------- ----- -------------------- 6 3 24 2 1 1 4 1 matched (3) 7 4 21 1 0 3 7 0 matched (3) 8 4 21 1 0 1 1 0 matched (3)

+---- ------ ------- ------ -------- ------- ----- --------------------

/* przyklad 6 - 1:m */ use moms2, clear list use kids2, clear list, sepby(famid) use moms, clear merge 1:m famid using kids2

ŁĄCZENIE ZBIORÓW DANYCH

Stata1/2

+----- ------ -------- -------- ---------- -------- ------ ------ ----------------------+ famid mage mrace mhs fr_moms2 kidid kage kfem _merge ------ ------ -------- -------- ---------- -------- ------ ------ ---------------------

1 1 33 2 1 1 . . . master only (1) 2 2 . . . . 1 8 0 using only (2) 3 2 . . . . 2 3 1 using only (2) 4 3 24 2 1 1 1 4 1 matched (3) 5 3 24 2 1 1 2 7 0 matched (3)

------ ------ -------- -------- ---------- -------- ------ ------ --------------------- 6 4 21 1 0 1 1 1 0 matched (3) 7 4 21 1 0 1 2 3 0 matched (3) 8 4 21 1 0 1 3 7 0 matched (3) 9 5 39 2 0 1 . . . master only (1)

+----- ------ -------- -------- ---------- -------- ------ ------ ----------------------+

/* przyklad 7 - 1:m */ use moms2, clear list use kids2 list, sepby(famid) use moms2, clear merge 1:m famid using kids2 sort famid kidid list

ŁĄCZENIE ZBIORÓW DANYCH

Stata1/2 /* przyklad 8 - m:1 */ use kids1, clear list use moms1, clear list use kids1, clear merge m:1 famid using moms1 sort famid kidid list, sepby(famid)

+---- -------- --------- ----- ------- -------- ----- ---------------- famid kidid kage kfem mage mrace mhs _merge ----- -------- --------- ----- ------- -------- ----- ----------------

1 1 1 3 1 33 2 1 matched (3) ----- -------- --------- ----- ------- -------- ----- ----------------

2 2 1 8 0 28 1 1 matched (3) 3 2 2 3 1 28 1 1 matched (3)

----- -------- --------- ----- ------- -------- ----- ---------------- 4 3 1 4 1 24 2 1 matched (3) 5 3 2 7 0 24 2 1 matched (3)

----- -------- --------- ----- ------- -------- ----- ---------------- 6 4 1 1 0 21 1 0 matched (3) 7 4 2 3 0 21 1 0 matched (3) 8 4 3 7 0 21 1 0 matched (3)

+---- -------- --------- ----- ------- -------- ----- ----------------

ŁĄCZENIE ZBIORÓW DANYCH

Stata

Ważne rzeczy, których nie było: 1. local, global 2. foreach (pętle) 3. Macierze (matrix)