Guide: Konstruera ett index från flera variabler

I det här inlägget ska vi:
• Gå igenom när det kan vara bra att göra ett index
• Vända variabler som ska ingå i indexet
• Normera variabler som ska ingå i indexet
• Testa indexets reliabilitet med hjälp av Cronbach’s Alpha

Ibland vill man använda flera variabler som indikatorer på ett större fenomen. En vanlig tillämpning i frågeundersökningar är att använda flera åsiktsfrågor som indikatorer på politisk ideologi, istället för att fråga om ideologin direkt. Jämfört med att använda en enskild fråga som indikator så har ett sammansatt index fördelen av att jämna ut slumpmässiga variationer i enskilda frågesvar. Om vi till exmpel vill mäta vänster-högerideologi kanske vi frågar respondenterna vad de tycker om att privatisera sjukhus, starta fler friskolor, sänka skatterna och minska fackens inflytande. Respondenter som tycker att det här är bra idéer kan sägas stå längre till höger på den politiska skalan. Däremot är det troligt att många personer som står till höger politiskt inte instämmer till fullo i alla frågor. Att bara använda en fråga som indikator gör att vår mätning blir mer känslig för andra faktorer, som exempelvis speciella omständigheter i friskolefrågan.

Ur statistisk synpunkt har sammansatta index också en fördel eftersom det är lättare att hävda att de utgör intervallskalor än vad det är att hävda att enskilda surveyfrågor gör det. Surveyfrågor är ofta på ordinalskalenivå. Och att variablerna är på intervallskalenivå är en förutsättning för många statistiska analystekniker, som till exempel regressionsanalys.

I det här exemplet tänkte ska vi konstruera ett index för attityder till kvinnor i arbetslivet, utifrån den amerikanska General Social Survey, årgång 2010. Den kan laddas ner härifrån för den som vill följa med i exemplet. Jag har tänkt mig att vi ska använda oss av fyra påståenden, som man kan instämma eller ta avstånd ifrån:

1. (fechld) Mother working doesn’t hurt children
2. (fefam) Better for man to work, woman to tend home
3. (fepresch) Preschool kids suffer if mother works
4. (fepol) Women not suited for politics

Tanken är alltså att skapa ett index som fångar upp inställningen till om man tycker att kvinnor framförallt bör ägna sig åt familjen, eller delta I arbetslivet och politiken.

 

Vända på variabler som ska ingå i indexet

Det första man märker utifrån frågorna är att de är ”ställda åt olika håll”. Ta till exempel variabeln ”fechld” och variabeln ”fepresch”. Om man instämmer i ”Mother working doesn’t hurt children” så instämmer man antagligen inte i påståendet ”Preschool kids suffer if mother works”. Det är därför viktigt att vi kodar om frågorna så att högre värden på alla frågor så att säga betyder samma sak, I vårt fall att man tycker att kvinnor ska delta i arbetsliv och politiken.

Frågorna 1-3 har svarsalternativ från ett till fyra som är:
1: “Strongly agree”
2: “Agree”
3: “Disagree”
4: “Strongly disagree”

Medan fråga fyra (Women not suited for politics) bara har två svarsalternativ:
1: ”Agree”
2: ”Disagree”

På alla frågorna är det alltså så att högre värden betyder att man tar avstånd från påståendet. Vi vill att höga värden ska betyda att man vill att kvinnor ska delta i arbetsliv och politik.

Det betyder alltså att vi ska vända på variabeln ”fechld”, eftersom höga värden i nuläget innebär att man tar avstånd från påståendet att moderns arbete inte skadar barnen. Ett sätt att vända på variabler är att använda sig av ”Transform->Recode into different variables” och för varje värde på den gamla variabeln skriva i vad den nya variabeln ska ha för värde.

Men det finns ett ännu enklare sätt, som dessutom fungerar när det finns ännu fler svarsalternativ, eller om variabeln är kontinuerlig. Man använder sig då av ”Transform->Compute”. Principen är som följer:

Formel för att vända på en variabel:
maxvärde + minvärde – variabel

Vår variabels maxvärde är 4.
Vår variabels minvärde är 1.
Alltså ska vi ta 4+1-variabel.
I Bild 1 visas hur det ska se ut när man gör omkodningen i ”Transform->Compute”.

 

Bild 1. Att vända på en variabel.

 

Hade man tidigare värdet 4 får man alltså nu värdet 4+1-4=1.
Hade man tidigare värdet 3 får man alltså nu värdet 4+1-3=2.
Hade man tidigare värdet 2 får man alltså nu värdet 4+1-1=3.
Hade man tidigare värdet 1 får man alltså nu värdet 4+1-1=4.

Variabeln är nu alltså ”vänd åt andra hållet”, åt samma håll som de andra variablerna i indexet.

 

Normera variabler som ska ingå i indexet

När vi sedan gör indexet, ska vi addera ihop de olika variablerna. Problemet är nu att variablerna har olika många svarsalternativ. Tre av frågorna har fyra svarsalternativ, medan en av frågorna bara har två svarsalternativ (women not suited for politics). Om vi bara adderar ihop variablerna kommer den frågan då få mindre vikt – det kommer spela större roll vad man svarat på de andra frågorna. Om man inte har någon teoretisk idé om varför det bör vara så, bör man se till så att alla frågorna väger lika mycket i indexet. Det kan man göra genom att normera variablerna, så att de alla får samma min- och maxvärde.

Vi ska därför göra om variablerna så att de alla har minvärdet 0, och maxvärdet 1. Sen spelar det ingen roll hur många svarsalternativ de har däremellan, så länge min- och maxvärdet är detsamma. För att göra det använder vi oss återigen av ”Transform->Compute”.

Formel för att normera en variabel till att gå mellan 0 och 1:
(variabel-minvärde)/(maxvärde-minvärde)

För variablerna som i nuläget går mellan 1 och 4 blir det alltså:
(variabel-1)/(4-1)

I Bild 2 ser man hur det ser ut för variabeln ”fefam”.

 

Bild 2. Normera en variabel.

 

Hade man tidigare värdet 4 får man alltså nu värdet (4-1)/(4-1)=1.
Hade man tidigare värdet 3 får man alltså nu värdet (3-1)/(4-1)=0,6667.
Hade man tidigare värdet 2 får man alltså nu värdet (2-1)/(4-1)=0,3333.
Hade man tidigare värdet 1 får man alltså nu värdet (1-1)/(4-1)=0.

Det nya maxvärdet blir alltså 1, och minvärdet blir 0, och hur många värden som blir däremellan beror på hur många skalsteg det tidigare fanns. Variabeln ”fepol” som bara hade två värden kommer nu bara få två värden, men de kommer vara 0 och 1. Den här formeln funkar alltså oavsett hur många skalsteg variabeln har.

 

Testa indexets reliabilitet med Cronbach’s alpha

När vi vänt på variablerna så att alla variabler går åt samma håll, och alla är normerade från 0-1 är vi reda att testa indexets reliabilitet. Tanken med indexet var ju att göra ett index som skulle fånga upp en bakomliggande attityd till alla frågorna. För att det rimligen ska sägas göra det behöver de ingående variablerna vara korrelerade, dvs att om man svarat högt på en av frågorna, bör man också ha gjort det på de andra frågorna. Annars är det svårt att hävda att frågorna fångar upp en gemensam, bakomliggande attityd. Vi kan testa om frågorna hänger ihop med hjälp av ett mått som heter Cronbach’s alpha.

Behöver index alltid ”hänga ihop?”
Jag vill emellertid förtydliga att man ibland kan bygga index som inte empiriskt hänger ihop, och det beror på om indexet ska vara beroende eller oberoende variabel. Om man till exempel vill testa effekten av hushållsinkomst på någon beroende variabel, till exempel val av semestermål, kan man ju bygga ett index bestående av till exempel respondentens lön, och en fråga om respondenten nyligen vunnit någon stor lotterivinst. De två sakerna behöver ju inte alls hänga ihop, men det är ju ändå faktiskt så att den som har hög lön och har vunnit på lotto har mer pengar än den som inte har hög lön och inte har vunnit på lotto, och därför kan åka på en dyrare semester. Det är alltså när indexet ska vara oberoende variabel.

Om indexet istället ska vara en beroende variabel betyder det att vi ska leta efter en gemensam förklaring till de olika saker som ingår i indexet. Då blir det problematiskt om indexfrågorna inte hänger ihop. Hur skulle man då kunna hitta en gemensam förklaring? I det här exemplet är det troligt att vi efter att ha konstruerat vårt index skulle vilja förklara varför vissa har högre värden på indexet än andra, och då är det viktigt att indexet hänger ihop, eller har hög reliabilitet.

Hur man testar Cronbach’s alpha
Det är väldigt enkelt att testa indexets reliabilitet i SPSS. Man går då in på ”Analyze->Scale->Reliability analysis”, som i Bild 3.

 

Bild 3. Hur man hittar Cronbach’s alpha-testet.

 

 

När man får upp rutan klickar man i de variabler man vill testa i rutan ”Items”. Därefter klickar man på knappen ”Statistics” och klickar i knappen ”Scale if item deleted”. Tryck därefter på ”Continue” och ”OK”.

 

Bild 4. Hur man testar för Cronbach’s alpha.

 

Man får då ut output som ser ut som i Bild 5. Det intressantaste är rutan ”Reliability statistics”. Där står det i kolumnen ”Cronbach’s Alpha” ett värde som kan variera mellan 0 och 1, där högre värden betyder högre reliabilitet. I det här fallet blir värdet ,602. Den vanliga tumregeln för när man ska tycka att index är tillräckligt bra brukar sägas vara ,700. Vårt index är alltså inte riktigt okej. Vi kan då gå till rutan ”Item-total statistics” och titta i kolumnen ”Cronbach’s alpha if item deleted”. Där visar SPSS vad vi skulle få för värde på Cronbach’s alpha ifall vi tog bort en enskild variabel. Vi ser då att Cronbach’s alpha skulle sjunka ifall vi tog bort någon av frågorna ”fechld”, ”fefam” eller ”fepresch”, det vill säga frågorna som har att göra med mödrar och arbete. Däremot ser vi att Cronbach’s alpha skulle öka till ,690 ifall vi tog bort frågan som handlar om kvinnor i politiken.

 

Bild 5. Output från testet.

 

Det tyder på att frågan om kvinnor i politiken fångar upp något annat än det som fångas upp av frågorna om mödrar och arbete. De verkar ha att göra med olika saker. Om man då istället nöjer sig med att ha ett index som handlar om inställningen till mödrar i arbetslivet så kan vi strunta i att ta med frågan om kvinnor i politiken. Vi testar därför att göra om reliabilitetsanalysen, fast den här gången utan frågan om kvinnor i politiken, och får output som ser ut som i Bild 6.

 

Bild 6. Output efter att ha tagit bort en fråga.

 

Vi ser nu att Cronbach’s alpha blir 0,692, och att det skulle bli sämre om vi tog bort någon ytterligare fråga. 0,692 är givetvis lägre än 0,700, men då det är så nära, och det inte finns någon annan bra fråga att ta med i indexet tycker jag att det är okej.

För att slutligen skapa indexet går vi in på ”Transform->Compute” och adderar ihop de tre variabler som vi bestämt ska ingå i indexet, som i Bild 7.

 

Bild 7. Hur man skapar indexet.

 

Vårt index ska nu gå mellan 0 och 3, eftersom man som mest kan ha tre 1:or på de olika variablerna. För att kontrollera att så är fallet tar jag fram en frekvenstabell genom ”Analyze->Descriptive statistics->Frequencies”, som i Bild 8. Vi ser där att minvärdet är 0, och att maxvärdet är 3. Det verkar också vara ganska bra spridning.

 

Bild 8. Frekvenstabell över indexet.

 

Och som ett sista exempel på hur man nu kan analysera indexet gör jag ett t-test för att se om kvinnor och män har olika uppfattningar om kvinnors roll i arbetslivet. Jag använder variabeln ”sex”, som indikerar respondentens kön som oberoende variabel, och indexet som beroende variabel. Resultatet blir följande:

Medelvärde för män: 1,7
Medelvärde för kvinnor: 1,9

Och t-testet visar att skillnaden mellan män och kvinnor är signifikant med 95% säkerhet. Det betyder att vi kan vara 95% säkra på att amerikanska kvinnor i högre utsträckning än amerikanska män tycker att kvinnor och mödrar bör delta i arbetslivet. Skillnaden finns alltså antagligen inte bara mellan de kvinnor och män som ingår i urvalet, utan bland populationen (USA:s befolkning) som helhet.

22 thoughts on “Guide: Konstruera ett index från flera variabler

  1. Hej! Tack för en otroligt bra sida! Min fråga är om det är nödvändigt att normera alla enskilda variabler som ska ingå i indexet till att sträcka sig mellan 0 till 1 även om alla enskilda variabler har samma antal svarsalternativ? Som exempel har jag tolv variabler med svarsalternativ mellan 1 till 6 som jag ska göra om till ett index, kan jag hoppa över normeringssteget och gå direkt till att testa reliabiliteten?

  2. Hej!
    Stämmer in med samma undran som Andreas ovan… Måste variablerna normeras innan indexet skapas om alla ingående variabler har samma antal svarsalternativ?

    • Hej Andreas och Dan!
      Har man lika många svarsalternativ måste man inte normera dem. Om de har lika många alternativ kommer de ju väga lika tungt i indexet.

      /Anders

  3. Tack för ditt svar. Jag har en fråga även om nästa steg där man ska testa indexets reliabilitet med Cronbach’s alpha. Jag undrar hur denna procedur skiljer sig åt från så kallad faktoranalys (och kanske specifikt så kallad ”confirmatory factor analysis”)? Jag har lite svårt att förstå vad som skiljer de båda åt och när man egentligen ska använda sig av vardera teknik då beskrivningarna av de båda för mig i stort sett låter likadana (skapa en samlad variabel/index av ett antal variabler med vissa givna krav på reliabilitet och validitet). Ett klargörande skulle vara mycket uppskattat! Tack!

  4. Tack för en bra sida där man snabbt hittar det man vill lära sig.
    Min fråga är om variabeln/frågan måste beröra mätning av attityd i en fråga för att skapa ett index och sedan göra faktoranalys? Kan man tänka sig att skapa ett index av exempelvis en variabel som mäter hur ofta man vill besöka en djurpark, där svarsalternativen är exempelvis aldrig – sällan – ibland – ofta och därefter köra faktoranalys på det hela?

    • Hej Calle O!
      Nej det måste inte vara en attityd. Däremot måste man ha flera variabler.
      Till exempel kunde man ha frågor om man vill besöka:
      Djurpark
      Liseberg
      Bio
      Museum
      Opera
      Teater

      Med de svarsalternativen du beskriver. Sedan kan man köra faktoranalys på de olika alternativen, och då skulle man kanske få fram två dimensioner – en för ”nöjen” – Djurpark, Liseberg och Bio – och en för ”finkultur”, med Museum, Opera och Teater. Till exempel.

      /Anders

  5. Tack för en bra sida.
    Jag har satt samman ett index enligt ovan och får ett högt Cronbach’s Alpha men indexet är kraftigt snedfördelat. Jag vill använda indexet som oberoende variabel i framtida regressionsanalyser (ev även beroende) och är osäker på vilken effekt snedfördelningen har på regressionen. Vet att det ”inte är bra” men har inte förstått varför. Undrar alltså hur jag kan hantera detta på bästa sätt?

    Antar att det är möjligt att göra en enkel dummy(?) men är intresserad av att få ut mer information ur variabeln. Är det en god idé att göra 3 dummy’s och dela upp variablen i 4 lika stora grupper utefter deras indexvärden, för att sedan jämföra referensgruppen (0) med alternativen (1,2,3)? Vad skulle ni ha gjort?

    I detta nu är ni väl mitt uppe i den amerikanska eftervalsanalysen men vore tacksam för svar ;)

    • Du kan läsa mer i kap 17 i Discovering Statistics Using SPSS (3:e upplagan) av Andy Field.

      Kan också rekommendera
      Cortina, J. M. (1993). What is coefficient alpha? An examination of theory and applications. Journal
      of Applied Psychology, 78, 98–104.

  6. Dum fråga: Hur gör man för att förenkla förfarandet när/om man har internt bortfall på någon/några av variablerna som ska ingå i indexet? Jag har brukat bygga index i Excel där summan kan divideras med antalet variabler som inte har något bortfall men det kanske finns ett enkelt sätt att utföra samma sak i SPSS?

    Tack för raketbra sajt!

  7. Hej!
    Jag undrar om jag behöver ändra i variable view när jag skapat mina index, dels marginal,label, values och hur blir det när frågorna har haft samma antal svarsalternativ och jag hoppat över att normera dem, det mäter inte alltid i samma svar. Jag vill använda mina index till att göra korrelationer mellan mina ob. variabler och mina index som jag skapat för beroende variabler alternativt göra en variansanalys.
    Sen undrar jag vad jag gör för fel när jag vill använda en del av mitt gigantiska datamatreal. Jag har fem olika arbetskategorier inom skolväsendet och vill bara använda två av dessa som är kodade 1-5 jag går in på data selct cases -if och skriver in (occupational_cat=3)&(occupational_cat=4) mitt filter stryker allt!!!!
    Tacksam för svar!

    • Du ska inte använda & utan |.
      | betyder ”eller”. Om cat=3 eller cat=4 så väljs endast de.
      & används om du har flera variabler. Nu har du bara en variabel, men olika kategorier. Då används |.

  8. Hej !

    Undrar hur man gör en korrelation samt ser korrelationskoefficientens riktning på åtta variabler? Samt hur skapar man ett sammansatt mått av de åtta variablerna ?

  9. Hej
    Jag har skapat ett index och undrar varför det blir så högt bortfall? Även på ert index är bortfallet stort, alltså i första rutan case processing summary: valid och excluded.
    Jag har gjort en surveyundersökning och har tagit med alla svar förutom vet ej (som inte många uppgett) trots detta är det bara hälften av de 400 som blivit valid, i likhet mer era siffror. Är det bara en slump eller vad beror det på? Gör ju signifikansen sämre vid t-test med annan variabel.

  10. När man bygger index genom att addera variabler med COMPUTE och +, uppstår bortfall i indexet så snart någon enda av de ingående variablerna har bortfall. (Nu brukar samma individer, som ofta inte är så många, ha bortfall på flera variabler; men om man har otur har olika personer bortfall på olika frågor så att det totala bortfallet blir besvärande stort.)

    Ett snajdigt sätt att skapa indexen är att istället välja Function Group = Statistical samt Functions and Special Variables = Mean i COMPUTE-rutan. Då blir indexet medeltalet av alla variabler som ingår och som inte har bortfall (dvs det uppstår inget bortfall så länge det finns någon enda ingående variabel som har godkända värden).

    I båda fallen, särskilt det andra, tror jag det är bra och nödvändigt att kolla bortfallet på alla variabler man har tänkt ska ingå i indexen. Variabler med häpnadsväckande stort bortfall är nog inte särskilt bra att använda i analyserna.

  11. Hej!
    Då vi transkriberar en enkät just nu där repondenterna på två frågor har möjlighet att kryssa i flera alternativ, hur transkriberas detta in? På excel vill jag minnas att det var någon liknande som detta ” 2; 4; 6;”. Om dessa tre alternativ ska införas för analys. Vet ni hur man kryssar i dessa i Data View?

    Stort tack på förhand
    Med vänlig hälsning, Ludwig

  12. Hej!
    Jag ska jämföra olika gruppers uppfattning om ett fenomen. Kan jag skapa index (som oberoende variabel) baserat på egenskaper som jag vill att de olika grupperna ska inneha? Om jag exempelvis vill att en grupp ska bestå av arbetslösa lågutbildade, hur går jag till väga?

    Jag är nybörjare på SPSS så jag är väldigt tacksam för all hjälp jag kan få!
    Tack för en toppenbra hemsida.

    /Sara

  13. Hej!
    Jag har gjort ett index på sju frågor sam är på en skala 1 till 7.
    Nu är mitt minsta värde 7 och mitt högsta 49. Jag undrar hur jag gör för att få det på en skala 0 till 1 istället?
    Jag läste om att formeln för att normera, men klurar på hur jag ska göra då jag har så många värden ( inte har 1 till 4, utan 7 till 49)

    Med förhoppningar att höra från dig!

    Vänligen, Amanda

  14. Hej och tack för en väldigt bra blogg!

    Upptäckte detta korrekturfel: ”Hade man tidigare värdet 2 får man alltså nu värdet 4+1-1=3.” Det ska väl vara 4+1-2=3

  15. Hej
    Jag funderar på detta med att jag alltid tidigare har sett att index har värden från 0 till 100, och jag har nåt ställe ett notat som berättar mig formuläret matematiskt (men ej om hur jag ska gå fram i SPSS, men det hittar jag säkert fram till).
    MEN ni har här presenterat index som går upp till 3.
    Frågan är då om vilken av dessa metoder är korrekt i förhållande till statistisk redovisning i artiklar som kommer publiceras i akademisk tidsskrift ??(nej tidsskriften har inte spesificerad detta i handledning til författare)

  16. Hej, tack för en superbra sida såhär i uppsatstider.

    Jag håller på att analysera data från E-panelen, där samma frågor har ställts till respondenterna flera gånger över tid. Nu vill jag skapa ett index av samma fråga som ställts vid två olika tillfällen där variabeln har ett intervall mellan 0 och 10.

    Antalet som svarat på frågan är 2923 respektive 2584, när jag ska testa reliabiliteten med hjälp av Cronbach’s Alpha får jag dock felmeddelandet: ”there are too few cases (n = 0) for the analysis. execution of this command stops”.

    Förstår inte vad som är felet här alls, samtliga svarsalternativ är besvarade.

    Tacksam för hjälp!

    /Tim

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