Transcript Här
Introduktion till Stata 10 Love Bohman Detta är Statafönstret, det kan se ut på lite olika sätt eftersom varje delfönster är flyttbart. Om ett delfönster inte är öppet kan man aktivera det under ”Window” i menyraden. Det går att ändra storlek och plats på alla fönster med hjälp av musen. De flesta fönster går även att scrolla och man kan ändra typsnitt genom att klicka på fyrkanten framför respektive fönsters namn. I Stata skriver man kommandon i kommandofönstret som sedan verkställs när man trycker på enter-knappen. I Stata 10 kan man göra även göra det mesta via snabbknappar eller menyerna i menyraden. När dessa används kommer det kommando man skulle ha kunnat använda sig av istället att visas i resultatfönstret, så kan man lära sig kommandot till nästa gång om man vill. Använder man Stata mycket är det väldigt arbetsbesparande att använda kommandon, och 1 kommandona behövs också för att man ska kunna använda sig av de behändiga do-filerna, vilka gås igenom nedan. Resultatfönstret visar utförda kommandon och resultat. Det går att klippa och klistra från resultatfönstret (kopiera med Ctrl+C). När alla resultat inte får plats samtidigt i resultatfönstret står det --more-- längst ner på skärmen. När man trycker på någon bokstavstangent kommer ytterligare en sida fram. Vill man stoppa frammatningen klickar man på break-knappen . Om man försöker utföra ett ogiltigt kommando kommer inget annat att hända än att ett rött felmeddelande visas i resultatfönstret. Titta därför alltid i resultatfönstret att du verkligen gjort det du tror att du gjort. Variabelfönstret visar datasetets variabler. Om man klickar på ett variabelnamn med musen så kopieras det över i kommandofönstret, så slipper man skriva det. Review-fönstret visar de senaste utförda kommandona. Även detta är klickbart, praktiskt om man vill utföra samma kommando som man redan gjort en gång. Gamla kommandon kan även återkallas till kommandofönstret genom PageUp- och PageDown-knapparna. Öppna och spara en fil eller en loggfil Det brukar vara bra att börja med att öppna en loggfil . Då kan man alltid gå tillbaka och se vad man gjort för något. Tänk på att loggfilar i .smcl-format ser ganska otrevliga ut om man öppnar dom med ett vanligt textprogram. Alternativet att skapa loggfilen i .log-format är bra om man vill kunna läsa filen när man inte har tillgång till Stata. Det går båda ett skriva över och fortsätta på gamla loggfiler, se bara till att välja rätt alternativ! Loggfilen kan stängas antingen med samma knapp som man öppnar den med eller med kommandot log close. Vill man skriva in något i loggfilen, som Stata inte ska uppfatta som ett kommando (om man t.ex. vill förklara för sig själva vad man gör) kan man börja ”kommandot” med en asterisk (*). T.ex.: * sum (summarize) är användbart för att beskriva kontinuerliga variabler 2 Om man vill infoga en kommentar i direkt anslutning till ett kommando kan man använda dubbelt snedstreck (//). Det signalerar till Stata att kommandot är slut. T.ex.: sum var1 //Detta kommando summerar variabeln var1 Obs att enkelt samt trippelt snedstreck (/ samt ///) har andra betydelser. Obs att grafer inte sparas i loggfilen. Vill man spara en graf måste denna sparas i en separat fil. Vill man öppna en ny datafil kan man antingen använda öppna-knappen eller kommandot use och sedan platsen och namnet på den nya filen. När man öppnar en fil så kopierar Stata filen från hårddisken (eller från disketten) till arbetsminnet. Det ursprungliga datasetet är intakt tills man sparar ett ändrat dataset under samma namn. OBS att det är oftast bra att spara det ändrade datasetet under ett nytt namn och behålla originaldatan så att man alltid kan gå tillbaka till den om något blir fel. Vill man titta direkt i datamatrisen kan den antingen öppnas med eller med . I det förra fallet kan man även göra ändringar direkt i datan, så vill man bara titta bör man för säkerhets skull använda den senare av de två knapparna. Filer spara antingen med spara-knappen , eller med kommandot save följt av placering och namn på den fil som ska sparas. Om man vill spara över en annan fil måste kommandot också avslutas med , replace, vilket förhindrar att man råkar spara över en gammal fil av misstag. För att spara en fil under ett nytt namn, tryck på Save As… under File i menyraden. För att stänga en fil kan man antingen skriva clear, öppna en ny fil eller stänga av Stata. Stata stängs av antingen med kommandot exit (eller exit, clear om det finns osparade ändringar i det öppna datasetet) eller genom att man trycker på x:et högst uppe i högra hörnet. Statas hjälpfunktion Stata har en inbyggd hjälpfunktion, som nås antingen via viewer-knappen eller med kommandona help eller search. 3 Förkortningar De flesta Statakommandon kår att förkortas till den inledande bokstavskombination som unikt identifierar kommandot. Istället för summarize kan man t.ex. skriva sum. Detta gäller dock ej kommandon som ändrar i datan, vilket gör det svårare att råka ändra på saker av misstag. Även variabelnamn kan förkortas till den inledande bokstavskombination som unikt identifierar variabeln. Operatorer Relationella > större än < mindre än >= större än eller lika med <= mindre än eller lika med == lika med ~= inte lika med != inte lika med Notera att det dubbla likhetstecknet (==) används vid vilkorssatser. I andra fall, när t.ex. nya + * / ^ Aritmetiska addition subtraktion multiplikation division upphöjt i Logiska ~ inte ! inte | eller & och variabler genereras, används det enkla likhetstecknet (=). Se nedan för exempel. Datatransformering Skapa nya variabler med generate Nya variabler skapas vanligtvis med kommandot generate (se emellertid även kommandot egen). Man kan skapa en säkerhetskopia av en variabel a, och döpa den till aa, genom att skriva gen aa=a Antag att vi har två variabler som heter a och b och önskar skapa en ny variabel, c, som är lika med summan av a och b. I Stata görs detta på följande sätt: generate c=a+b Stata använder sig av konventionella matematiska uttryck. Exempel: generate d=a-b generate e=a*b 4 gen f=a/b gen g=(a*a)/(a+b) gen h=a^2 (betyder a2) I dessa uttryck kan även en mängd statistiska och matematiska funktioner användas. Om vi exempelvis önskar skapa en ny variabel i som är lika med den naturliga logaritmen av a så görs det på följande sätt: generate i=ln(a) Existerande variabler förändras med kommandot replace. Exempel: replace a=a-1 replace-kommandot fungerar på exakt samma sätt som generate-kommandot och kan innehålla ett obegränsat antal led och funktioner. Exempel: replace a=ln(p(1-p)) Variabelvärden kan också förändras med kommandot recode. Vi kan exempelvis omkoda alla observationer som har värdet 2 på variabel a till att istället få värdet 0: recode a 2=0 OBS! Använd helst generate för att skapa en säkerhetskopia innan ni använder replace eller recode. Eftersom det är lätt att göra fel när man ändrar en variabel, är det bra att ha kvar den ursprungliga variabeln i datasetet. Istället för exemplet ovan skulle kanske följande vara att föredra: generate b=a recode b 2=0 Variabelnamn ändras med kommandot rename. T.ex. ändrar rename a b namnet på den existerande variabeln a till b. Villkor Vid datatransformeringar använder man sig ofta av olika villkorssatser. Se listan över de vanligaste operatorerna ovan för vanliga kommandon i villkorssatserna. 5 Vilkorssatsen if används för att begränsa ett kommandos räckvidd till observationer som uppfyller vissa villkor, t ex individer med vissa egenskaper. Detta är en ofta använd funktion. Exempel: replace a = b if a == d OBS! Skillnaden mellan = och == uppfattas ofta som lite lurig för nya Stata-användare. Tecknet == (ett matematiskt uttryck för lika med och endast lika med) används i villkorssatser, annars används tecknet =. Om vi exempelvis vill ändra en variabel c till att bli hälften så stor som variabeln d för de observationer som har värdet 2 på variabeln a kan detta göras med kommandot: replace c = d/2 if a == 2 När man använder flera if-villkor i samma kommando kan man kombinera dem på olika sätt. Om två villkor ska vara uppfyllda används &-tecknet. Exempel: replace a = 0 if b == 1 & c != 0 (!= betyder “inte lika med”, se operatorer ovan) Om antingen det ena eller det andra villkoret ska vara uppfyllt används ”|” (eller) –tecknet. Exempel: replace a = 0 if b == 1 | c != 0 Vilkorssatsen in används för att begränsa räckvidden till vissa observationer som anges i den nummerordning som de är sorterade i. T.ex. kodar replace a = 0 in 1 om variabeln a till 0 för den första observationen i datasetet. Kommandot replace a = 0 in –1 kodar dock om den sista observationen till 0. Minustecknet betyder att man räknar bakifrån, så replace a = 0 in –8 innebär att man kodar om observation nummer 8 räknat bakifrån i datamaterialet. replace a = 0 in 1/10 innebär att observation 1 t.o.m. 10 kodas om till 0 i variabeln a. På samma sätt kodar replace a = 0 in -10/-1 om de sista 10 observationerna till nollor. Tecknet ”/” kan således utläsas som ”till och med” när det används i en numerisk lista. Missing values I Stata är missing values representerade med en punkt, ”.”. I alla analyser utesluts dessa observationer automatiskt. I villkorssatser tolkas dock missing values som +∞, dvs som högre 6 än alla andra tal. Om man exempelvis vill dikotomisera en kontinuerlig eller kategorisk variabel a kan man skriva: replace a = 1 if a >= 1 Detta betyder att man kodar om alla andra värden än 0 till att bli 1, inklusive alla missing values. Man bör därför hellre skriva: replace a = 1 if a >= 1 & a !=. I detta fall ändrar man inte de saknade värdena. Ta bort och behåll variabler Variabler och/eller observationer tas bort från datamängden med kommandona drop och keep. T.ex. tar kommandot drop age utbild bort variablerna age och utbild från datamängden, och kommandot keep age utbild tar bort alla variabler förutom age och utbild. På motsvarande sätt innebär kommandot drop if age==15 att individer som är 15 år gamla tas bort från datamängden, och kommandot keep if age==15 innebär att samtliga individer förutom 15-åringarna tas bort från datamängden. Omvandla kontinuerliga variabler till kategoriska Antag exempelvis att vi har en åldervariabel som kallas alder och som faller inom intervallet 15 – 75 år. Vi önskar nu omkoda denna variabel så att vi får 3 åldersgrupper, 15-40, 41-65 och 66-. I Stata kan det åstadkommas med kommandot recode alder 15/40=1 41/65=2 66/75=3. (Tecknet ”/” betyder ”till och med” i en numerisk lista). När man vill behålla den ursprungliga variabeln, är dock kommandot gen aldkat = recode(alder, 40, 65,75) att rekommendera. Skillnaden från föregående skrivsätt är att den omkodade kategoriska variabeln kallas aldkat, och att ursprungsvariabeln är sparad. Skapa dummyvariabler Om man har en kategorisk variabel, t ex utbildning, med sju olika kategorier och vill skapa dummyvariabler (= indikatorvariabler) kan man skriva tab utbildning, gen(utb). Då får man 7 nya variabler utb1, utb2 …. utb7, som är kodade 0 och 1 och som har samma missing values som ursprungsvariabeln. Man kan också skapa dummyvariabler genom att använda villkorssatser. Antag att man har en variabel, antalbarn, som anger hur många barn en person har, och man vill skapa en 7 dummyvariabel som anger om personen är en barnlös man, barnlosman. Då kan man t ex skriva gen barnlosman = 1 if antalbarn ==0 & kvinna ==0. Nu har vissa individer fått värdet 1, medan andra har värdet ”missing”. Med kommandot recode barnlosman . = 0 if antalbarn !=. & kvinna !=. omvandlas sedan vissa av observationerna från ”missing” till 0. Tänk dock på att datamaterialet kan ha saknade värden från början, då får inte dessa kodas om till ett numeriskt värde. Man kan också skapa en dummyvariabel enligt följande exempel: gen barnlosman = antalbarn ==0 & kvinna ==0 Alla observationer som uppfyller båda villkoren får värdet 1, de övriga får värdet 0. Därför bör man se till att missing förblir missing: replace barnlosman = . if antalbarn ==. | kvinna ==. Diverse tips och påpekanden display Man kan använda Stata som en minikalkylator om man skriver display (eller förkortningen dis) före ett matematiskt uttryck. T ex: dis 2 + 3 assert Kommandot assert kan användas för att kontrollera om ett påstående är sant. Till exempel kommer kommandot assert 1==2 generera meddelandet ”assertion is false” skrivet i rött. Andra mer användbara kommandon med assert kan kanske vara assert var1>=var2 eller varför inte assert var1!=. . Om assert används i en do-fil och det gjorda antagandet är falskt kommer Statas behandling av do-filen att stoppas och ett felmeddelande visas. compress Ett kommando som med tanke på utvecklingen av datorkapacitet sällan är aktuellt idag (men jobbar man med riktigt stora dataset kan det ibland vara användbart) är kommandot compress. Eftersom Stata håller den aktiva datamängden i RAM-minnet kunde man för ett antal år sedan kanske känna ett behov av att spara variablerna i ett format som kräver så lite utrymme som 8 möjligt. Kommandot compress söker automatiskt igenom de olika variablerna och undersöker om de kan sparas i ett mer komprimerat format. Enkel beskrivande statistik Stata innehåller en mängd olika kommandon för att producera enkel beskrivande statistik. codebook ger de intervall varemellan variabelvärdena ligger, antal unika värden samt antalet saknade värden (.). För kategoriska variabler visas även varje värdes frekvens och för kontinuerliga variabler visas medelvärde, standardavvikelse samt vissa intressanta percentiler. count räknar antalet observationer. Används oftast tillsammans med if -satser. T ex: count if a == 0 tabulate används för kategoriska variabler. tab var1 visar en frekvenstabell med procent. tab var1, m visar en frekvenstabell där även antalet saknade värden (.) redovisas tab var1 var2 visar en korstabell. tab var1 var2, row col cell all visar en korstabell. row visar radprocent, col kolumnprocent, cell cellprocent, och all visar flera olika sambandsmått. 9 tab1 var1 var2 var3 visar tre separata frekvenstabeller. tab2 var1 var2 var3 visar tre korstabeller, var1 mot var2, var1 mot var3, var2 mot var3. summarize Används för kontinuerliga variabler. sum var2 visar antal observationer, medelvärde, standardavvikelse, min och max (fler än en variabel kan anges). sum var2, det kommandot detail visar mer information, t.ex. percentiler och varians. tab var1, sum(var2) visar statistik för den kontinuerliga variabeln var2 uppdelat på den kategoriska variabeln var1. correlate corr var1 var2 var3 visar en korrelationsmatris. inspect visar antalet nollor, positiva samt negativa tal, antalet heltal och tal med decimaler samt antalet saknade värden (.). Listning av variabler Vill man få ut en lista på samtliga observationer av en variabel kan man använda kommandot list var1. Ofta är man dock endast intresserad av observationer som antar vissa värden på någon eller några variabler. De flesta kommandon går att använda ihop men kommandot if, vilket även gäller för list. Kommandot list var1 if var2==54 skapar en lista över var1 för samtliga observationer som antar värdet 54 på var2. Villkorssatsen in kan också vara 10 användbar ihop med list: list var1 in 1/7 skapar en lista över var1 för de 7 första observationerna (kom ihåg att tecknet ”/” betyder ”till” när det används i en numerisk lista). Även här går minustecknet att använda, så list in -7/-1 genererar en lista på de 7 sista observationerna i datamaterialet. Sortering av variabler I vissa fall är det önskvärt att förändra den ordning i vilken observationerna ligger i datafilen. Detta görs i Stata med kommandot sort. Om vi har en åldersvariabel som kallas alder och som faller inom intervallet 15 – 75 år kommer kommandot sort alder medföra att observationerna sorteras i stigande ordning på basis av deras ålder. Först kommer 15-åringarna, därefter 16åringarna osv. Detta gör bl.a. att det är lätt att identifiera den yngsta och den äldsta individen (t.ex. med kommandona list in 1 och list in -1). Om vi även har en utbildningsvariabel, utbild, som anger antalet utbildningsår kommer kommandot sort alder utbild medföra att observationerna först sorteras i stigande ordning på basis av ålder och därefter, inom respektive ålderskategori, i stigande ordning på utbildningsbasis. Först kommer 15-åringarna med låg utbildning, därefter 15-åringarna med lite högre utbildning, efter ytterligare ett tag 16-åringarna med låg utbildning osv. Vill man lista en variabel uppifrån och ner (med högsta värdet först) använder man gsort, och sätter sedan ett minustecken framför de variabler man vill lista fallande. T.ex. listar kommandot gsort alder –utbild variablerna efter ålder i stigande ordning, men utbildningsvariabeln listas i fallande ordning inom varje ålderskategori. Kommandona by: och bysort: utför det aktuella kommandot för alla observationer uppdelat på olika grupper. by: används efter sort medan bysort: används om data inte är sorterad. Om man t.ex. vill se bl.a. medelinkomsten separat för män respektive kvinnor med olika utbildningsnivåer kan man använda sig av två olika strategier: Strategi 1 Strategi 2 sort kon utbild bysort kon utbild: summarize inkomst by kon utbild: summarize inkomst 11 Strukturen på Statas syntax Så gott som samtliga Statakommandon är uppbyggda på följande sätt: [by variabel:] kommando [variabellista] [=uttryck] [if uttryck] [in uttryck] [, optioner] Uttrycken inom hakparenteserna är frivilliga. I de flesta fall särskiljs ord genom ett blankslag. När man inkluderar mer än en option kan de stå i vilken ordning som helst efter kommatecknet. Enkel grafik Grafkommandona kan ofta upplevas som lite bökiga i Stata 10, men tänk på att det även går bra att skapa grafer med hjälp av menyerna högst upp. Nedan följer kommandon för några enkla beskrivande grafer (menyerna i Stata 10 gör det enkelt att experimentera och leka med grafkommandot själv): histogram var1 visar ett histogram. histogram var1, bin(10) visar ett histogram med specificerat antal staplar (i detta fall 10). Andra alternativ att sätta efter kommat är fraction, frequency eller percent, vilket specificerar hur datan ska visas (enhet på y-axeln). Man kan också lägga in en normalfördelningskurva i grafen med hjälp av kommandot normal, som ska placeras efter kommatecknet i kommandoraden. Om variabeln är diskret kan man med fördel även lägga in kommandot discrete efter kommatecknet, då får staplarna automatiskt bredden 1. scatter vary varx visar en plot med vary på y-axeln och varx på x-axeln 12 scatter var1 var2, xlab(0 10 20 30) ylab(0 2 4) visar en plot med valda värden på axlarna scatter var1 var2, xlab(0(10)30) ylab(0(1)4) visar en plot med där värdena är utsatta med intervallet 10 mellan 0 och 30 på x-axeln (d.v.s. värdena 0, 10, 20 och 30 är utsatta) och med intervallet 1 mellan 0 och 4 på y-axeln. twoway connected var1 var2 skapar en plot med sammanbundna observationer. För att denna plot ska vara meningsfull måste man ibland sortera variablerna i y-värdet. Detta görs om man lägger till , sort sist i kommandoraden: twoway connected var1 var2, sort gr box var1 visar boxplot av var1 gr box var1, by(var2) visar boxplot av kontinuerlig var1 för olika värden av kategorisk var2. graph matrix var1 var2 var3 visar en matris av plottar line var1 var2 skapar ett linjediagram Stata har olika typer av diagram-layout förprogrammerade. För att bestämma layout anger man scheme(xxx), där xxx ska ersättas med önskad layout-typ, efter kommatecknet. Använd kommandot help scheme för att få se tillgängliga layouter. Axlarnas etiketter kan specificeras med xlab(x x x x), där varje x står för önskat värde som ska sättas ut på i detta fall x-axeln. Utseendet på datapunkterna kan i aktuella grafer specificeras med msymbol(x x), använd hjälpfunktionen help symbolstyle för att få en lista på tillgängliga symboler. Det finns många mer finesser – lek med graferna via Graphics i menyraden högst upp! 13 Vill man spara eller kopiera en graf kan man klicka på grafen med höger musknapp, och sedan välja önskad åtgärd i listan som kommer upp. Grafer kan också sparas med hjälp av ett kommando, se kommentarerna till exemplet på en do-fil nedan. Tänk på att grafer inte sparas i loggfilen! Regressionsanalys Regressionsanalyser görs med kommandot regress beroende_var oberoende_var1 oberoende_var2 (kommandot regress kan förkortas till reg). Man kan avgränsa de observationer som ska ingå i regressionen med hjälp av de ovan beskrivna villkorssatserna. Efter regressionsanalysen kan predicerade värden erhållas med predict nyvarnamn, där nyvarnamn är ett valfritt namn på den variabel som ska innehålla de predicerade värdena. På motsvarande sätt får man residualerna med kommandot predict nyvarnamn, res, dfbetas med predict nyvarnamn, dfbeta, o s v Logistisk regressionsanalys En logistisk regressionsanalys erhålls med logistic berovar oberovar. Resultaten redovisas som oddskvoter. Vill man istället ha resultatet redovisat i regressionskoefficienter (= logaritmerade oddskvoter) får man antingen använda kommandot logistic berovar oberovar, coef eller logit berovar oberovar (kommandot logit berovar oberovar, or ger resultatet redovisat som oddskvoter – detta kan vara lite lurigt, så var observant på hur resultatet redovisas!). Do-filer 14 Genom att trycka på knappen får man upp do-fil fönstret. Här kan man skriva en serie kommandon och sedan utföra alla i en följd. Det bästa med do-filen är att den kan sparas som en egen fil, som kan tas fram och köras vid ett senare tillfälle. För att köra do-filen måste man först markera de kommandon som ska köras och sedan trycka på knappen ”Do current file” (den högra lite ljusare av de två liknande knapparna). Sen är det bara att sitta och titta i resultatfönstret hur alla kommandon utförs. Kommandona utförs även om man trycker på knappen ”Run current file” . I detta senare fall visas dock ingen output i resultatfönstret, och heller inga felmeddelanden om man gjort något fel. Av säkerhetsskäl bör man därför använda Do- framför Run-knappen. Det är när man använder sig av do-filer som tecknet // (två snedstreck) blir användbart, eftersom man kan kommentera sina kommandon direkt i filen. Även tecknet /// (tre snedstreck) kan vara användbart i do-filen om man har väldigt långa kommandon, då det talar om för Stata att kommandot fortsätter på nästa rad. Exempel på en do-fil: Observera ordet replace i slutet av det kommando som öppnar loggfilen (log using…). Detta sparar över den aktuella loggfilen andra gången man använder do-filen. Fösta gången man kör do-filen kommer Stata påpeka att det inte finns någon fil med aktuellt namn – sedan skapa en 15 ny loggfil och utföra resten av do-filen. Det är också bra att använda replace i kommandot som sparar datan trots att datan sparas under ett annat namn än originaldatan. Detta behövs om man kör do-filen en andra gång, då det ju redan kommer att finnas en sparad fil med samma namn som ska sparas över. Do-filens första kommando (version 10.0) signalerar till Stata vilken version som kommandona gäller för. Om en nyare version av Stata med delvis nya kommandon används kan ändå den gamla do-filen köras, eftersom detta första kommando signalerar till Stata att kommandona ska tolkas utifrån den angivna Stataversionen. Du ser vilken version av Stata du har i början av ett nytt resultatfönster. Du kan också skriva kommandot version, så talar stata om vilken version du jobbar i. Kommandot graph export… sparar grafen i angivet format på angivet ställe. Då slipper man kopiera och spara grafen manuellt. Använd kommandot help graph export för mer information om grafsparande och för vilka format man kan spara i. Några länkar till mer Stata-kunskap http://www.princeton.edu/~erp/stata/main.html http://www.stata.com/links/resources1.html http://www.bsos.umd.edu/gvpt/uslaner/statatut.pdf http://www.ats.ucla.edu/stat/stata/webbooks/reg/default.htm http://www.ats.ucla.edu/stat/stata/ Naturligtvis finns det mycket mer än så. För den som vill lägga ner mer tid (och pengar) finns det en uppsjö med webbsidor, handböcker och kurser. Stata har såväl introduktionskurser som kurser i avancerad Stata-programmering, se http://www.stata.com/netcourse/ för mer info. Även Statas sökfunktion search länkar till hjälpsidor på nätet. 16