Den här veckans fråga fick jag klura på ett tag, och för att hålla frågan på sekretessnivå har jag hittat på helt nya variabler i själva frågan (åldersgrupp och arbetslöshet).
Fråga:
Jag har en datafil
med hundra variabler och mer än 160 000 poster Jag vill dra slumpmässigt urval
stratifierat efter variabeln Åldersgrupp med 1000 personer per strata och kravet
vilka som ska slumpas ut är endast arbetslösa mer än 3 månader.
Svar:
Det här måste göras i flera steg. Jag har ett mindre dataset så jag byter ut 1000 mot 10 st i exemplet.
Steg 1 - gör en datafil med endast de som får slumpas ut , dvs arbetslösa mer än 3 månader.
Steg 2 - Skapa en urvalsvariabel 1 med koden 1 för de 10 som slumpats ut för åldersgrupp 1.
Steg 3 - Skapa en urvalsvariabel 2 med koden 1 för de 10 som slumpats ut för åldersgrupp 2.
Steg 4 - Skapa en urvalsvariabel 3 med koden 1 för ALLA de som tillhör åldersgrupp 3 eller 4.
Steg 5 - Skapa ett slutligt urval för de som har valts ut (dvs har koden 1) i steg 2,3 eller 4.
(Jag är medveten om att steg 4 och 5 hade kunnat läggas ihop i samma steg, men ville få det pedagogiskt).
****************** RECEPT **************
Hela instruktionen nedan visas steg för steg via menyer, men rekommenderas varmt att spara ned som syntax, för att du ska kunna ha kontroll och sen kunna återanvända detta.
Syntaxkurs för nybörjare i april, (Statistikakademin) kan rekommenderas om du inte känner dig bekväm.
Steg 1 - Här rekommenderar jag att du först sparar ner din originalfil med ett helt nytt namn, och sen tar du bort de som inte ska tillhöra urvalsramen (dvs som inte får vara med i utslumpningen).
a) Jag har sparat filen med namnet "urvalsram datafil.sav"
b) Sen kan du tryggt ta bort de som inte får vara med, dvs vi ska selektera ut alla som är arbetslösa och har varit arbetslösa i mer än 3 månader.Kommando : Data - Select cases
c) Jobba nu vidare i din nya fil.
Själva utslumpningen - Här ska jag slumpa ut 10 st från de 34 st i åldersgrupp 1 (18-25 år) och sen 10 st från åldersgrupp 2. Och därefter behålla alla som tillhör de 2 äldsta åldersgrupperna eftersom de är så få.
Det går egentligen att slumpa ut 10 st direkt från en fil, men eftersom jag endast ska göra det från åldersgrupp 1 (och sen åldersgrupp 2), så har jag löst det i några steg så här (tips emottages om ni har andra lösningar):
Steg 2 - a) Skapa en slumpvariabel för de som tillhör åldersgrupp 1.
Kommando : Transform - Compute Variable
Fyll i detta:
b) Klicka på knappen "if" längst ned till vänster och fyll i detta (villkoret): c) Continue. OK.
Du har då fått 1 ny variabel (slump1) med utslumpade tal mellan 0 och 1 för den yngsta åldersgruppen :
d) Sortera nu datafilen utifrån slump1 i fallande ordning.

e) Vi ska nu skapa en ny variabel (urval1) som kodas 1 för de första 10 individerna i filen, det kommer alltså bli uppmärkningen för det slumpmässiga urvalet för exakt 10 personer i yngsta åldersgrupen.

Kommandot: Transform - Compute
och fyll sen i detta:

Så ser det ut så här sen:

Steg 3 -
a) Skapa nu en till slumpvariabel på exakt samma sätt som steg 2, men kalla slumpvariabeln för slump2 och välj villkoret Åldersgrupp=2 istället
Steg 4 -
a) Skapa en tredje urvalsvariabel som du kallar urval3 med koden 1 för ALLA de som tillhör åldersgrupp 3 eller 4.
Välj igen kommandot: Transform - Compute
b) Klicka på reset (så inga gamla villkor ligger kvar).
c) Fyll i detta.

OK.
Så här ser nu filen ut. Jag har ringat in exempel på det sista vi skapade.

Steg 5 -
a) Skapa slutligen en urvalsvariabel som väljer ut de med 1 på variablerna urval1, urval2 och urval3 , dvs de som slumpats ut alternativt valts ut i steg 2-4.
Kommando : Transform - Compute Variable

OK.
Då har SPSS skapat koden 1 när variablerna haft koden 1 i någon av de 3 variablerna (urval1-3), se inringade 1:orna.

Dubbelkolla med en korstabell att det blivit korrekta antal:

Om steg 2-5 hade gjorts som syntax så hade det bara varit den här lilla programmeringen:
Tack för titten, och en liten fråga till er:
Hade ni löst det på något annat sätt.?
/Gunilla