fredag 11 december 2020

11 dec skapa slumptal och 2 randomiserade grupper

 Hej, jag fick frågan hur man skapar slumptal och det är en enkel sak kommer ni snart se. Men i frågan ingick också att skapa 1000 nya individer med dessa slumptal, och där fick jag problem. Kanske någon känner till hur man via macron/loop-kommandot får till detta ?

Jag delar upp det här inlägget i 3 delar.

Del 1. Skapa 1000 nya cases

Del 2. Skapa slumptal

Del 3. Slumpa ut 2 grupper (testgrupp och kontrollgrupp)


Del 1: Skapa 1000 nya cases

Eftersom jag inte minns hur man gör detta med syntax (det ska gå) så gör jag på mitt "ful-sätt" men som ändå funkar: jag skapar dessa 1000 cases i Excel och läser in Excelfilen till SPSS. Anledningen till just Excel är för där kan man smidigt skriva in 1,2,3 i en kolumn och sen bara dra i nedre högra hörnet på de cellerna du just skrev in i , och dra sen musen rakt ner så fortsätter Excel att skriva ut en serie så långt du vill dvs fortsätter med 4,5,6,.....1000.



Läs in filen till SPSS på vanligt sätt, File - Open - Data och välj format : Excel.


Så ser det ut så här i SPSS:



Del 2. Skapa slumptal

Nu ska jag randomisera ut värden mellan 0 och 1 och då använder jag compute- kommandot och sen en randomiseringsfunktion som heter UNIFORM 

Kommandot: Transform - Compute

Den nya slumpvariabeln kallar jag för rand


Alternativt: Syntaxen (om du föredrar att använda det) ser ut så här:

COMPUTE rand = rv.uniform(0,1).

EXECUTE.


Resultatet blir en ny variabel (rand) som består av värden mellan 0 och 1.


Del 3. Slumpa ut 2 grupper (testgrupp och kontrollgrupp)

Om du vill dela upp rand i två lika stora grupper så gör du så här. Enklast är faktiskt att skriva i syntaxform på detta sätt (Rank-kommandot hittar du annars under Transform - Rank Cases): 


RANK rand / ntiles (2) INTO GRUPP.

EXECUTE.

VALUE LABELS GRUPP 1 'Kontrollgrupp' 2 'Testgrupp'.


Och resultatet blir nu en ny variabel: Grupp som består av hälften utslumpade till kontrollgrupp och hälften utslumpade till testgrupp



Trevlig helg! Gunilla

2 kommentarer:

  1. Om det går att skapa 100 kolumner med 1000 slumptal i varje? Ja, inte för att riktigt begriper mig på detta med loopar, men med lite stölder från andra som kan det går det nog att få ihop. I nedanstående syntax skapas först två långa kolumner med antalet rader och antalet kolumner, följt av beräkning av slumptal i en tredje variabel. Efter detta stuvas materialet om så att det blir fler och kortare kolumner.

    /Robert

    *Variabeln n anger hur antalet upprepningar/rader, variabeln kol anger antalet kolumner/variabler det blir i slutändan.
    NEW FILE.
    INPUT PROGRAM.
    LOOP nr=1 TO 1000.
    LEAVE nr.
    LOOP kol=1 to 1000.
    END CASE.
    END LOOP.
    END LOOP.
    END FILE.
    END INPUT PROGRAM.

    DATASET NAME slumptal_enkel.

    FORMATS nr kol(F6).

    COMPUTE rn=RV.NORMAL(0,1).

    DATASET ACTIVATE slumptal_enkel.
    DATASET COPY slumptal_i_kolumner.
    DATASET ACTIVATE slumptal_i_kolumner.

    SORT CASES BY nr kol.
    CASESTOVARS
    /ID=nr
    /INDEX=kol
    /GROUPBY=VARIABLE.




    SvaraRadera
  2. Den här kommentaren har tagits bort av skribenten.

    SvaraRadera

Manualer att ladda ner

SPSS manualer går att ladda ner som PDF-filer.  Länken : https://www.ibm.com/support/pages/ibm-spss-statistics-29-documentation#en Vill du h...