Läsarfråga: Koda variabler med villkor

Q: Hur kan man skapa en ny variabel (X) med fyra svarsalternativ eller celler med villkor från fyra dikotoma variabler d.v.s. krav1, krav2, kontroll1, kontroll2 med respektive svarsalternativ ”Ja” = 1 och ”Nej” = 2.

Cell1 med villkor: om (krav1 = 1 & krav2 = 1) & (minst ett av kontrollmåtten = 2).

Cell2 med villkor: om (minst ett av kravmåtten = 2) & (minst ett av kontrollmåtten = 2).

Cell3 med villkor: om (krav1 = 1 & krav2 = 1) & (kontroll1 = 1 & kontroll2 = 1).

Cell4 med villkor: (minst ett av kravmåtten = 2) & (kontroll1 = 1 & kontroll2 = 1).

A: Jag tror att ”transform –> recode” är det bästa.

1. Först går du in på ”transform–>recode into different variables”. Du kodar då in att din gamla variabel ska bli till en ny variabel. På ”Old and new values” skriver du in att ”all other values” ska kodas om till 1. Tryck sedan på knappen ”If”. Där skriver du in ditt villkor för cell 1. Man använder precis som du skriver &-tecken för att beteckna att båda villkoren måste vara uppfyllda. När man vill ange eller-villkor, som du vill när det är att minst ett av måtten ska vara nånting, använder man tecknet |, eller skriver ”OR”. Första villkoret ska alltså se ut såhär:

(krav1 = 1 & krav2 = 1) & (kontroll1 = 2 | kontroll2 = 2)

2. När du gjort en sån variabel går du in på ”transform–>recode into same variables”. Skriv i att du vill koda om din nya variabel. På ”Old and new values” skriver du i att ”all other values” ska bli till 2.
På knappen ”If” skriver du sedan in villkor 2.

3. Sen upprepar du steg 2 för villkor 3 och villkor 4.

Det borde göra susen!

9 thoughts on “Läsarfråga: Koda variabler med villkor

  1. Hej Anders,

    Tack för bra blogg. Hoppas det är ok att lämna en fråga här.

    Jag och min uppsatspartner sitter och analyserar data från en genomförd kundundersökning. Vi vill hitta några attraktiva segment bland ett företags kunder. Enkäten bestod av en mängd olika demografiska frågor samt köprelaterade frågor (t ex Köpsfrekvens och köpesumma). Om vi vill hitta samband variabler emellan, t ex hitta en profil som ofta handlar för mycket pengar. Hur går vi bäst tillväga?

    Vi kan ställa upp en mängd olika villkor på det sättet som beskrivs i inlägget jag kommenterar. Men då gissar vi eller antar vilka villkor som ska uppfyllas utefter att bara titta på data sammanställningen.

    Jag undrar om det finns ett enkelt sätt i SPSS för oss att ta fram olika grupper som svarat liknande i Enkäten. T ex att 40 av 291 intervjuade är kvinnor över 55 år som handlar för 300 kr eller mer vid varje köp som bor i Villa. Detta skulle vara ett attraktivt segment för företaget.

    /Magnus

    • Hej Magnus!
      Att hitta samband mellan olika variabler är rätt enkelt, och det gör ni lämpligen med hjälp av korrelationsanalys: https://spssakuten.wordpress.com/2010/01/08/korrelation-1/

      Då kan ni till exempel se vilka egenskaper de som handlar för mycket pengar har.
      Jag tror att det är vad ni vill göra.

      Det man också kan göra är så kallad klusteranalys. Då kan man identifiera grupper av respondenter som svarat på samma sätt på en mängd variabler. Men det är en mycket mer avancerad analysteknik, som jag själv inte behärskar.

      /Anders

  2. Hej!
    Jag analyserar hsCRP (inflammatorisk markör) i en hjärtsjuk population. Distrubutionen är inte normafördelad. Jag vill nu jämföra den nedre 3:e delen med den övre 3:e delen med avseende på samsjuklighet, man har använt dessa mått i tidigare publicerade artiklar i ämnet (J Danish et al BMJ VOLUME 321 22 JULY 2000). Jag har logartimerat min kontinuerliga hsCRP variabel men vill göra en ny variable där värdena kategoriseras i 1, 2, 3, beroende på vilken 1/3 -del de tillhör och sedan jämföra 1 och 3. Hur skappar jag denna nya variable utifrån min tidigare hsCRP variabel (eller från min ln_hsCRP variabel) ?

    • Hej Erik!
      Du kan använda dig av ”Analyze->Descriptive statistics->Frequencies” för att få fram värdena för kvintilerna, alltså vilket värde som definierar de olika 1/3-delarna.

      Du klickar bara på ”Statistics” och säger att du vill ha cut points för 3 lika stora grupper. Sen använder du ”Transform->Recode into different variables” och gör en ny variabel där du definierar den nya variabeln med hjälp av ”Range” utifrån värdena du fått fram.

      /Anders

  3. Hej!
    Vi skriver en uppsats om träningsminuter i relation till en tillfredsställd med livet-skala. Vi vill kunna dela in våra data i tre grupper där träningsminuterna bestämmer vilken grupp man tillhör. Hur tilldelar man villkor så att de hamnar i en av de tre grupperna?

    Vänligen, Josefin & Linnea

  4. Tack för en mycket trevlig och användbar sida!

    Jag arbetar på ett projekt där jag undersöker olika egenskaper hos personer som söker vård vid en sjukvårdsinstans, med syftet att kunna förbättra flödet på nämnda sjukvårdsinstans och förhindra onödiga väntetider.

    Som led i detta konstruerar jag en binär logistisk regressionsmodell, till vilken jag kodar om en mängd kontinuerliga variabler till dikotoma variabler.

    Nu till problemet. Alla som söker vård kategoriseras med en siffra 1-4 beroende på hur brådskande deras tillstånd är. Varje dag söker många patienter sjukvård, fördelat på ovanstående 4 prioritetsnivåer.

    Det jag behöver göra är att skapa variabler som visar huruvida antalet besök med en viss prioritetsnivå är större än det genomsnittliga antalet besök per dag inom samma prioritetsnivå för den aktuella månaden. Percentilerna jag planerar använda är 50, 75, 90 och 95.

    1. Hittills har jag löst det hela genom att använda funktionen ”Frequencies” för varje prioritetsnivå 1-4, med ”Split file” efter datum och på så sätt fått fram antalet sökanden med respektive prioritetsnivå för varje dag i en outputfil.
    2. Dessa siffror har jag sedan klistrat in manuellt i kommandot ”Recode into different variables” i syntax editor och skapat variablerna ”AntalPrioritet1/dag”, ”AntalPrioritet2/dag” etc.
    3. Därefter har jag använt kommandot ”Examine” för att ta reda på det genomsnittliga antalet sökande per dag inom varje prioritetsnivå under respektive månad.
    4. Efter det har jag på samma sätt manuellt konstruerat variablerna ”MedianantalPrio1/dagJuni”, MedianantalPrio2/dagJuni” etc för varje månad.
    5. Först därefter har jag kunnat använda funktionen ”IF” för att konstruera variabler som visar om antalet sökande en viss dag är större än vald percentil för genomsnittligt antal besök per dag inom samma prioritetsnivå för den aktuella månaden.

    Det jag eftersöker är någon typ av IF-loop eller liknande som gör det möjligt att kondensera femstegsmodellen ovan till ett enda steg och skriva ner den direkt i syntax.

    Mycket tacksam för all hjälp i detta ärende.

    Vänliga hälsningar,
    Mathias

  5. Hej.

    Fantastisk sida! Jag skulle önska ett utförligare inlägg om att koda om variabler. Jag behöver slå ihop flera indikatorer på olika kategorier av ett fenomen till en beroende variabel att använda i en logistisk regression. Dock lyckas jag inte läsa mig till hur jag kan slå ihop dessa till en helt ny kategorisk variabel som jag sedan kan göra dummies av. Såhär ser mitt dataset ut:, variabel 1 (ja, nej) variabel 2 (ja/nej) . . .variabel 7 (ja/nej) ska bli y: 0=kat1, 1=kat2, 2=kat3,. Det hjälper ju inte att göra ett index för då förlorar jag möjligheterna att urskilja kategorierna. Jag vet att ni inte har möjlighet att svara utifrån specifika fall men det känns lättare att förklara ungefär vad jag är ute efter utifrån mitt problem. Inlägget skulle ju kunna ta upp olika sätt att slå ihop, villkora, kategorisera variabler.

    Ha det fint!

  6. Hej Anders! tack för din fina sida. Jag har problem med Chi2-test.
    jag vet inte hur man läser av en chi2 tabell? hur vet man om det finns samband ? och vad innebär 5% eller 0,05? Tacksam för ditt svar :) Snälla hjälp mig :(

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s