fredag 23 oktober 2020

23 okt - intro syntax och flytta variabler i bred fil

 

”Oj, jag missade 20 personer som skulle varit med i datafilen, sa en person jag konsulterade efter några timmars preparering och analysering. Behöver vi sitta några timmar igen nu?"

Mitt svar: ”Nej det kommer bara ta en kvart.

Hur är det möjligt? Svaret heter syntax och jag kan inte nog upprepa att spara allt ni gör genom att klicka på knappen ”Paste” varje gång ni gjort en körning, så att kommandot sparas (jag visar nedan).

Syntax är också ett sätt att jobba mer effektivt när man blivit varm i kläderna , 

Intresserad av nybörjarkurs, se här: Klicka för info om introduktionskurs i syntax

Här kommer först lite "kom-i-gång-med-syntax" och sen kommer jag svara på en fråga som syntax behövs till som jag fick där frågan var hur man flyttar en massa variabler till ett annat ställe i datafilen .

Kom igång med syntax

Varje gång du kör ett kommando från menyerna i SPSS, så genereras en kod i bakgrunden och den kan du spara ned och återanvända. 

Vi tar ett enkelt kommando: frekvensanalys på kön. Men istället för att klicka på OK klickar du på "Paste" (se bilden nedan):


Då öppnas ett syntaxfönster automatiskt (rent textformat på filen om du sparar den). Så här ser kommandot ut som just klistrades in:



Kommandot är uppbyggt av huvudkommandon (blå) och subkommandon (grönt) samt vilka variabler du vill köra på (svart). 


Innan kommandot står också vilket dataset du har aktiverat:


Sen är det bara att markera texten och köra kommandot genom att klicka på gröna triangeln.


Du får ut resultatet som vanligt.


Smart är nu att spara syntaxfilen med texten, och fortsätta klistra in kommandon under ditt arbete - då får du både en dokumentation och kan återanvända alla kommandon. (Man kan markera många kommandon på en gång).


Fråga - flytta variabler

En fråga kom in från en användare:

Fråga: Hur flyttar man ett schok av variabler till ett annat ställe i datafilen? Det "lätta sättet" är ju att markera variablerna och flytta till önskad plats, typ drag-n-drop, men inte med 1000 variabler!

Svar: Det är ofta jag behöver flytta om i stora datafiler enligt olika önskemål och bäst kontroll har du om du nyttjar syntaxen. Så här bygger du upp syntaxen:

Du kan också scrolla till tidsmärket 4:03 för att se en  inspelning av en liknande flytt:

Instruktion: Börja med att öppna filen du ska jobba i, men välj att klistra in kommandot genom att klicka på knappen "Paste":


Då får du in denna syntax i syntaxfönstret:


Vi behöver nu lägga till ett subkommando som heter /KEEP, så skriv in det efter filnamnet och se till att punkten hamnar sist. (Om "/KEEP" färgas grönt är det korrekt).


Nu ska variablerna in efter /KEEP och då ska alla variabler in där (så att du sen kan flytta om ). Här är det smart att klicka på variabelknappen:


Markera alla variabler och klistra in dem (se nedan):


I min fil hade jag 500 variabler så de hamnar så här:


Nu är det ett schok av variabler här i mitten som jag vill flytta sist i filen, så jag klipper helt enkelt ut dessa och klistrar in dem allra sist i syntaxen (men innan punkten).


Så här hamnar de:


Nu markerar du hela GET-kommandot och kör syntaxen (genom att klicka på den gröna triangeln):


Från början såg filen ut så här innan flytten av variablerna:




Nu när jag kört kommandot så ser jag att de sista variablerna istället är dessa:


Hälsn Gunilla Rudander





fredag 16 oktober 2020

16 okt - proportionstest och selektering

 Hej, två frågor har jag fått med i veckans inlägg. I den första frågan så vill jag bara tillägga att proportionstest är möjligt att göra i korstabellskommandot också (CROSSTABS).


Fråga: jag har upptäckt en ny(?) funktion i SPSS som jag inte sett tidigare med signifikanstest i tables. Funderar på om detta är t-test som görs eller vad är det för test? Sedan funderar jag på de här ”Bonferroni” / ”Benjamini-Hochberg” – bör jag använda mig av dem som standard?


Svar 1a: SPSS känner av vilken typ av variabel du lagt in och är det en scale-variabel så föreslås ett t-test men om du lagt in en kategorivariabel så föreslås proportionstest (eller sk z-test)

Om du gör proportionstest så är det kolumnerna som jämförs med varandra

Se ett tidigare bloginlägg genom att klicka här

Svar 1b: Ja, jag rekommenderar att Bonferroni är ikryssat så slipper man få kritik för att man gjort för många tester, då blir kravet större på när något blir signifikant eller inte.

Om 3 tester görs så jämför man signifikansvärdet (p) med 0.05/3 så det måste vara under 0.0167 för att räknas som signifikant.

Benjamini- vet jag inte vad det gör faktiskt, har inte tänkt på det ens utan kör alltid Bonferroni.


Fråga 2:

Går det inte att selektera ut ifrån flera grupper? Dvs jag vill titta bara på de som hamnade i division nr 1, 3, och 5 (alltså 3 divisioner). När jag tar select cases och skriver in grupp = 1 OR 3 OR 5 så får jag
massa varningar och SPSS selekterar bara ut de som är i division 1

 

Svar: Du måste upprepa variabelnamnet Division för att SPSS ska kunna förstå vilka du väljer ut, se bilden nedan:



Resultat:




måndag 12 oktober 2020

12 okt 2020 - Split file

SPLIT FILE

Frågan var hur kör man SPLIT FILE, när man vill splitta upp sina frekvensanalyser för olika grupper tex för kön så en tabell blir för män och en för kvinnor.

Youtube videoklipp av Gunilla

Scrolla till 4:32 så kommer du till SPLIT FILE.

 

Kommandot är Data – Split File

Bocka sen för valet: Organize output by och lägg in Kön i den stora vita rutan. 

Som du nu ser i resultatet så splittas frekvenstabellen som gjorts för division i 2 tabeller, en för män och en för kvinnor (du ser fotnoterna i botten av respektive tabell).




OBS OBS – glöm inte att slå av splitten när du är klar.

Du går till samma kommando: Data – Split File

Välj: Select All



DATUMINTERVALL - ALTERNATIV

Jag fick nog 3 olika svar på mitt inlägg förra veckan.

Se inlägget från den 2 oktober som jag nu uppdaterat med flera alternativ.

Trevlig arbetsvecka!

torsdag 1 oktober 2020

2 okt 2020 - Gruppera datumintervall

 Det här med datum är verkligen ett kapitel för sig själv...SPSS använder sig av antal sekunder efter 14 okt 1582, medan andra programvaror använder andra startpunkter.

Frågan jag fick var:

Hur skapar jag grupperingar av en datumvariabel, jag vill

skapa koden 1 för kvartal 1 koden 2 för kvartal 2 osv och kalla den nya variabeln för grupp. Har försökt med recode into different variable men det blir bara felmeddelande.



Svar: Det som gör att man inte bara kan köra omkodnings-kommandot rakt av är för att Datumet bara är ett skal (etikett) och egentligen visar den ett numeriskt tal nämligen sekunder efter 14 okt 1582. 

Men det finns många olika sätt att gruppera ett datum, så jag kallar dem för alternativ 1, alternativ 2 osv . Min varmaste rekommendation är att spara som syntax, tipsar om syntaxkursen - en introduktion på 1 dag via Statistikakademin.


 Alternativ 1 - då du har ett specifikt datumintervall

Kommando : Transform – Compute

fyll i:



Klicka på knappen if:

Fyll i följande: 



Klicka på ”Continue” och sen på ”OK”.

Resultat i filen:


Fortsätt nu att göra samma sak för kvartal 2 och ge samma variabelnamn ”grupp”. Du kommer få en varning att du kommer förstöra variabeln grupp men det är ok eftersom villkoren inne i ”if” inte överlappar varandra.

Så då blir det så här:


Och sen klicka på if-knappen


Klicka ”Continue” och ”OK”



Och sen upprepa för grupp 3, kvartal 3.

Vill du hellre använda syntax, klickar du på knappen Paste istället för OK inne i Compute-kommandot.


Då kan du ha kontroll på det du gör, exempelvis klippa och klistra den inklistrade strängen ovan och återanvända detta kommando i resterande grupper (se nedan).



Resultat




 Alternativ 2 - då datumintervallet är ett kvartal

Då intervallen är jämna kvartal eller månader så kan man utnyttja färdiga datumfunktioner i SPSS, och här är det QUARTER (dvs kvartal) jag visar.

Det blir superenkelt att skapa gruppvariabeln KVARTAL:



 

Alternativ 3 - använd RANGE för datumintervallet 

Här är ett ännu bättre tips från Robert (jämfört med alternativ 1)  hur man enkelt kan använda funktionen RANGE i kombination med datumintervall.

I det här exemplet skapas gruppvariabeln Period och får koden 1 om datumet ligger i intervallet 1 jan 2016 till och med sista mars 2016.

IF RANGE(Datum, DATE.DMY(1,1,2016), DATE.DMY(1,4,2016)) period=1

 




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...