Munkaer -piaci mutatók id sorai
Aktivitási, foglalkoztatottsági és munkanélküliségi ráták id sora nemek szerint az 1993-2009. közötti id szakra a 2. negyedévek adatai alapján
clear
set mem 300000
A korábban új változókkal kiegészített 70. hullám adatait használjuk use alfsx70b
A munkaer piaci mutatókat tartalmazó változók:
d csoe active U sum csoe active U Ha nincsenek meg:
use alfsx70
gen active = 0 if kor > 14 & kor < 75 replace active = 1 if csoe == 1 replace active = 1 if csou == 1
label var active "Munkaer -piaci részvétel (aktivitás)"
gen U = 0 if active == 1 replace U = 1 if csou == 1 save alfsx70b, replace
Átlagokból és más statisztikákból álló adaállomány készítése - collapse tab U
collapse U alapértelmezés: átlag a teljes mintára list
help collapse use alfsx70b, clear
collapse (mean) mU=U (count) n=U [w=wei]
A munkanélküliek aránya súlyozással és az esetszám (esetszám = ahol az U változó értéke nem missing).
(mean): számítson átlagot; mU=U: mU legyen az U változó átlagát tartalmazó új változó neve; (count): számolja össze, hány nemhiányzó érték van; n=U: n legyen az U változó nemhiányzó értékeinek számát tartalmazó változó
list
Iskolai végzettség szerint bontva use alfsx70b, replace
collapse (mean) mU=U (count) n=U [w=wei], by(educH)
list így annyi megfigyelés lesz, ahány értéke van az educH változónak Iskolai végzettség és nem szerint bontva
use alfsx70b, replace
collapse (mean) mU=U (count) nU=U [w=wei], by(educH sex) list esetszám: educH*sex
Három ráta iskolai végzettség szerint, elemszámokkal use alfsx70b, replace
collapse (mean) mP=active mE=csoe1 mU=U (count) nP=active nE=csoe1 nU=U [w=wei], by(educH)
list
"Ráta változók" nemek szerint külön-külön, amelyek átlaga a nemre jellemz rátát adja, a másik nem esetében hiányzó az értéke.
Mire jó? A kapott állományban nem sokszorozzuk meg a megfigyelések számát a csoportosító változó értéke szerint, hanem egy megfigyeléshez kerülnek a csoportosító változó szerinti mutatók
aktivitási ráták use alfsx70b, replace
gen byte aktf = active if sex == 1 label var aktf "aktivitás, férfiak"
gen byte aktn = active if sex == 2 label var aktn "aktivitás, n k"
ellen rzés
tab sex [w=wei],sum(active) sum aktf aktn [w=wei]
foglalkoztatási ráták
gen byte foglf = csoe1 if sex == 1 label var foglf "foglalkoztatott, férfiak"
gen byte fogln = csoe1 if sex == 2 label var fogln "foglalkoztatott, n k"
tab sex [w=wei],sum(csoe1) sum foglf fogln [w=wei]
munkanélküliségi ráták
gen byte mnrf = U if active == 1 & sex == 1
label var mnrf "munkanélküli, aktívak között férfiak"
gen byte mnrn = U if active == 1 & sex == 2
label var mnrn "munkanélküli, aktívak között n k"
tab sex [w=wei],sum(U) sum mnrf mnrn [w=wei]
collapse active aktf-mnrn [w=wei]
list
eredmények mentése text fájlba táblázat formában outsheet using mutatok2009q2.xls, replace
Most több hullámban fogunk ilyen rátákat számítani, ehhez megtanuljuk, hogyan kell utasításokat ismételni
Stata utasítások ismétlése: foreach számokból álló lista
foreach sz of numlist 1 2 4 7 9 { dis `sz'
}
` - nyitó zárójel, ' - záró zárójel, `sz' - sz nev lokális makro behelyettesítése A makro a definiált lista elemeivel lesz egyenl egymás után sorban.
a nyitó zárójel a billenty zeten a Alt-Gr+7 a záró zárójel pedig a Shift+1
Példák a foreach használatára számokból álló lista 2
foreach n of numlist 1/20 { dis `n'
}
a pause paranccsal nyomon tudjuk követni, mi történik:
pause on bekapcsoljuk, álljon meg a végrehajtás a pause utasításra foreach n of numlist 1/8 {
pause `n' következik pause=utasítás, utána a kiírandó szöveg áll
q vagy end beírásával lehet folytatni a végrehajtást, BREAK beírásával megszakítani (csupa nagybet ) dis `n'
}
változólista
use alfsx70b, replace két változó
foreach v of varlist county sex { sum `v'
}
változólista tól-ig
foreach v of varlist county-sex { sum `v'
}
új változók létrehozása
foreach var of newlist z1-z20 {
gen `var' = runiform() runiform() véletlen szám 0-1 között }
d var*
sum var*
Rövidített adatállományok sok negyedévre – vlfs1.dta – vlfs70.dta use vlfs2, replace
des
use vlfs6, replace des
use vlfs42, replace d
use vlfs66, replace d
use vlfs70, replace d
Most a foreach numlist utasítást használjuk a program végrehajtására a munkaer -felmérés hullámain egymás után. A második negyedévi hullámokat használjuk, a 6.
hullámmal kezdünk, és minden 4. hullámon hajtjuk végre az utasításokat egymás után, egészen a 70. hullámig, ami 2009. 2. negyedév. A következ részt érdemes egy do fájlba írni.
mutatok.do
munkaer -piaci mutatók a 2. negyedévekre, 1993-2009 clear
set more off
more on/off: megáll-e egy képerny nyi eredmény megjelenítése után (on), vagy nem áll meg (off). A program futása közben nem kell billenty t nyomogatni, ha kikapcsoljuk foreach w of numlist 6(4)70 {
use "vlfs`w'" normál idéz jel, vlfs, nyitó szipla idéz jel, w, záró szimpla idéz jel, normál idéz jel
a munkaképes koron kívülieket töröljük keep if korH >= 15 & korH <= 74
aktivitás 0/1 változó gen active = 0
replace active = 1 if csoe1 == 1 | csou == 1
foglalkoztatottság 0/1 változónk van: csoe1 munkanélküliség 0/1 változónk van: csou állapot-változók létrehozása nemek szerint aktivitás
gen byte aktf = active if sex == 1
gen byte aktn = active if sex == 2 foglalkoztatottság
gen byte foglf = csoe1 if sex == 1 gen byte fogln = csoe1 if sex == 2 munkanélküliség
gen byte mnr = 0 if active == 1
replace mnr = 1 if mnr == 0 & csou == 1 gen byte mnrf = mnr if sex == 1
gen byte mnrn = mnr if sex == 2 év
gen ev = iyear
collapse – átlagokat kérünk
collapse (mean) ev active csoe1 csou aktf-mnrn [w=weight]
változók sorrendje
order ev active csoe1 csou mnr az év változó legyen az els a változólistában ezt kövesse a három rátaváltozó (majd a nemek szerinti változók) save afmnratak`w',replace
} itt ér véget a foreach parancs, ami az 57. oldalon kezd dött
a mutatókat tartalmazó fájlok összerakása
use afmnratak6 a 2. negyedévit beolvassuk a memóriába foreach n of numlist 10(4)70 { a 6., 10., 14. … 70. fájlok append
append using afmnratak`n' }
save afmnratak,replace dta file
outsheet using afmnratak.xls, replace mentés text fájlba táblázat formában mutatok.do vége
Futtatás:
do mutatok
Excelben lehet folytatni a szerkesztést, és ábrákat készíteni!
Stata utasítások a gyakorlatban:
Memória-allokálás memory
set memory
Stata állomány beolvasása use fájlnév
Adatállomány és változók jellemz i describe
Adatok listázása list
list in +range, list if +feltétel
Átlagokból és más statisztikákból álló adatállomány készítése: collapse collapse clist [if] [in] [weight] [, options]
clist:
[(stat)] varlist [ [(stat)] ... ]
vagy: [(stat)] target_var=varname [target_var=varname ...] [ [(stat)] ...]
Új változó létrehozása, változó módosítása:
generate replace Táblázat tabulate Cimkézés:
label var(iable) label define label values
Stata utasítások ismétlése – foreach foreach of numlist – számokból álló lista:
foreach lname of numlist numlist { utasítások
}
foreach of varlist – változókból álló lista foreach lname of varlist varlist {
utasítások }
foreach of newlist – új változókból álló lista foreach lname of newlist newvarlist { utasítások
}
A program végrehajtásának felfüggesztése pause
Változók sorrendjének megadása order varlist
Adatok mentése text formában outsheet using filename
Függelék a gyakorlathoz:
A gyakorlatanyagot tartalmazó do fájl