Guide: Flernivåregressionsanalys del 1

I den här guiden ska vi gå igenom:

  • Varför man ibland bör använda flernivåregressionsanalys istället för OLS
  • Hur man räknar ut intraklasskorrelationskoefficienten

Den absolut vanligaste tekniken för regressionsanalys är den så kallade OLS-tekniken. Med den kan man undersöka samband mellan en beroende variabeln och en eller flera oberoende variabler. I den här guiden tänkte jag försöka gå igenom en annan teknik, flernivåregressionsanalysen (multi-level regression analysis på engelska).

Innehåll:
En teknisk anledning att använda sig av flernivåanalys
En substantiell anledning att använda sig av flernivåanalys
Hur man genomför en flernivåanalys
Hur man gör en tom modell
Intraklasskorrelationskoefficienten

 

En teknisk anledning att använda sig av flernivåanalys

Jag har inte skrivit något om det i tidigare inlägg, men ett viktigt antagande för att OLS-regression ska fungera som det är tänkt är att analysenheterna är oberoende av varandra. Det innebär till exempel att samma person inte får ha svarat på flera enkäter i en enkätundersökning. Om analysenheterna är beroende av varandra tenderar standardfelen att underskattas, vilket leder till att sinifikansen överskattas – vi tror att vi är mer säkra på effekterna än vad vi egentligen har rätt att vara.

Särskilt problematiskt blir detta problem när vi är intresserade av kontextuella variabler. Tänk att man vill undersöka hur politiskt styre påverkar kommuninvånares nöjdhet med service. Man kan då samla in enkäter från kommuninvånare i en mängd olika kommuner och där fråga hur nöjda de är med servicen i kommunen. Som oberoende variabel använder vi om kommunen styrs av de rödgröna eller alliansen (eller av en blocköverskridande koalition). Problemet är att alla som kommer från samma kommun får samma värde på den oberoende variabeln – analysenheterna är här inte oberoende av varandra. Trots att vi då kanske har 50 analysenheter från en kommun så kan det ändå bara ses som ett fall, eftersom de alla bor i samma kommun.

Vi har alltså två nivåer i vår analys – kommunnivån och individnivån. Individerna är grupperade i kommuner. Den beroende variabeln, nöjdhet med service, är en individvareiabel – alla individer har sitt eget värde på variabeln. Den oberoende variabeln, färg på det politiska styret i kommunen, är en kommunvariabel. Alla individer som bor i samma kommun har samma värde. Man kan säga att individnivån är nivå 1, och kommunnivån är nivå 2.

Ett sätt att lösa problemet med att analysenheterna inte är oberoende är att använda så kallade ”klustrade standardfel”, och på den här länken finns en bra beskrivning av varför man bör använda dem. Jag känner emellertid inte till något enkelt sätt att implementera klustrade standardfel i SPSS! En annan lösning är att använda sig av flernivåanalys.

 

En substantiell anledning att använda sig av flernivåanalys

Det ovan är en mer ”teknisk” anledning att använda flernivåanalys, som ett sätt att korrigera för ett fel. Men det ger oss också möjligheter att göra spännande analyser som inte går att göra med OLS-regression. En sådan anledning är att vi kan låta effekten av en nivå 1-variabel variera mellan nivå 2-enheterna.

Tänk till exempel att man vill undersöka effekten av arbetslöshet på en individs lycka. Båda variablerna är nivå 1-variabler: alla individer är olika lyckliga, och är eller är inte arbetslösa. Men man kan lätt tänka sig att det är olika jobbigt att bli arbetslös i olika länder. I Norge fick man enligt en artikel i Forbes 2008 87% av den tidigare lönen i arbetslöshetsersättning, medan man i vissa stater i USA bara får 27%. Arbetslöshet borde alltså ha en mycket större effekt på lyckan i USA än i Norge.

Vi kan tänka oss att individer (nivå 1) här är grupperade i länder (nivå 2). Med flernivåregressionsanalys kan låta effekten av arbetslöshet variera mellan länder, och få ett sammanfattande mått på hur mycket effekten av arbetslöshet varierar. Om vi finner att det inte finns en sådan variation kan man dra slutsatsen att olika arbetslöshetsersättningssystem inte verkar lindra effekten av arbetslöshet. Om vi istället finner att effekten av arbetslöshet varierar mellan länder kan vi gå vidare och försöka hitta de variabler som förklarar variationen i effekten – arbetslöshetsersättningsnivåer är en het kandidat.

 

Hur man genomför en flernivåregressionsanalys

I det här exemplet tänkte jag använda mig av data på 385 bostadsrätter i Göteborg, som låg ute på Hemnet under hösten 2011. Datan kan laddas ned härifrån för den som vill följa med i exemplet.

Syftet är att göra en modell som kan förklara pris på bostadsrätterna, och som man sedan till exempel kan använda för att avgöra om en bostadsrätt är dyrare eller billigare än vad man kunnat förvänta sig. Analysenheten är alltså en bostadsrätt (nivå 1), och bostadsrätterna är grupperade i olika stadsdelar (nivå 2). I analysen ska vi undersöka:

  • Om medelinkomsten i en stadsdel förklarar genomsnittspriset
  • Om storleken på en lägenhet förklarar priset
  • Om effekten av storlek varierar mellan stadsdelar
  • Om variationen i effekt av storlek kan förklaras av medelinkomsten

Hur man gör en tom modell

Det första man bör göra när man gör en flernivåanalys är att göra en så kallad ”tom modell”. Syftet med den är att kartlägga hur mycket variation det finns att förklara i den beroende variabeln, och hur mycket av variationen som återfinns på varje nivå. I vårt fall innebär det att ta reda på hur stor andel av variationen i pris som återfinns mellan stadsdelar, och hur mycket variation som återfinns mellan lägenheter inom stadsdelar.

Analyskommandot hittar vi under ”Analyze->Mixed models->Linear”, som i Bild 1.

 

Bild 1. Hur man hittar flernivåregressionsanalyskommandot.

I den första dialogrutan man får upp ska man ange vilken variabel som visar vilken nivå 2-enhet varje analysenhet tillhör. I det här exemplet så har vi lägenheter grupperade inom stadsdelar i Göteborg, så vi klickar in variabeln ”omrade” i rutan ”Subjects”. ”Repeated” bryr vi oss inte om. Tryck sedan på continue.

 

Bild 2. Hur man väljer nivå 2-enheter.

I nästa ruta ska man ange beroende och oberoende variabler. Vi skulle börja med att göra en tom modell, så vi ska bara ange den beroende variabeln, ”pris_1000”, pris i 1000-tals kronor. Anledningen till att vi använder pris i 1000-tals kronor istället för den vanliga variabeln är att det nu blir mer lätthanterliga koefficienter. Den beroende variabeln klickar man in i rutan ”Dependent variable”. Vi behöver nu ställa in lite alternativ genom att klicka på knapparna ”Random” och ”Statistics”.

 

Bild 3. Hur man gör en tom modell.

Efter att ha klickat på knappen ”Random” får vi upp en ruta där vi ska ställa in de varierande effekterna, som vi också kommer återkomma till längre fram. Det vi ska göra nu är att ställa in så att interceptet, startvärdet, kan tillåtas variera mellan de olika nivå 2-enheterna. Det är till exempel rimligt att anta att en lägenhet i Vasastan kostar mer än en likadan lägenhet belägen i Biskopsgården, bara på grund av det mer centrala läget.

Vi behöver göra två saker. Först ska man klicka i rutan ”Include intercept” för att visa att vi vill att interceptet ska kunna variera. Därefter ska man flytta över variabeln ”omrade” till rutan ”Combinations”, för att visa att det är mellan stadsdelarna i Göteborg som vi vill att interceptet ska kunna variera. Klicka sedan på continue.

 

Bild 4. Varierande effekter.

Därefter ska man klicka på knappen ”Statistics”. Här väljer vi vilken information vi vill få ut från analysen. Klicka här i ”Parameter estimates” och ”Test for covariance parameters”. ”Parameter estimates” visar att vi vill få ut effekterna av de oberoende variablerna, och ”Test fo covariance parameters” visar att vi vill få ut uppskattningar av hur mycket de olika sakerna varierar (Interceptet i det här fallet). Klicka sedan på continue och OK.

 

Bild 5. Vilken output man ska ta fram

I Bild 6 visas en del av outputen man får ut. Det vi framförallt är intresserade av är tabellerna ”Estimates of fixed effects” och ”Estimates of covariance parameters”. I tabellen ”Estimates of fixed effects” ser vi så att säga den ”vanliga” regressionstabellen. Eftersom vi nu inte har några oberoende variabler i modellen finns det bara ett intercept, som visar snittpriset för en lägenhet. Det är uppskattat till 1906, och eftersom det är i tusentals kronor betyder det att bostadsrätter i Göteborg vid den här tidpunkten kostade cirka 1,9 miljoner kronor.

I tabellen ”Estimates of covariance parameters” hittar vi uppskattningar av de varierande effekterna. Här har vi två saker att hålla reda på: ”Residuals” och ”Intercept [subject=omrade]”. Om vi börjar med interceptet så har vi här en uppskattning på hur mycket genomsnittspriset varierar mellan olika stadsdelar i Göteborg. Kostar bostadsrätter olika mycket beroende på var de är belägna?

 

Bild 6. Output

I kolumnen ”Estimate” hittar vi en uppskattning på variansen. Den verkar väldigt stor, men det är normalt. För att omvandla den till ett tal som det är lättare att förhålla sig till kan vi kvadratroten ur variansen. Då får man fram standardavvikelsen. Variansen är alltså standardavvikelsen i kvadrat.

Kvadratroten ur 702500 är 838. Vi kan alltså säga att snittpriset på en lägenhet i Göteborg är 1,9 miljoner, och mellan stadsdelarna så är standardavvikelsen i snittpriset 838 tusen. SPSS gör också ett test för att avgöra om det här är en signifikant variation, och resultatet visas i kolumnen ”Sig.”. I det här fallet ser vi att variationen i snittpris mellan områdena är signifikant. Testet som SPSS gör kallas för ”Wald test” och det finns mer korrekta varianter, men det här är det enklaste och vi nöjer oss med det i den här guiden.

I tabellen ”Test for covariance parameters” står det också ”Residual”. Det här är den del av variationen som inte är mellan stadsdelar, utan mellan lägenheter inom stadsdelar. Om vi tar kvadratroten ur 1464546 så får vi 1210, 1,2 miljoner. Det verkar alltså som det finns större skillnader i lägenhetspris inom stadsdelar än mellan stadsdelar.

 

Intraklasskorrelationskoefficienten

Slutligen kan vi räkna fram hur stor del av variationen som finns mellan stadsdelar och inte mellan lägenheter inom stadsdelar. Vi tar då variansen för interceptet (702500) och delar med den totala variansen (702500+1464546). Vi får då 702500((702500+1464546)=0,47. Det kan vi tolka som att 47% av variationen är mellan stadsdelar. Det här kallas intraklasskorrelationskoefficienten (intra class correlation coefficient). Högre värden betyder alltså att analysenheterna inom varje grupp (klass) är mer lika varandra jämfört med de i andra grupper.

I de här sammanhangen tycker jag ändå att det kan betraktas som väldigt mycket, med tanke på att lägenheter kan variera kraftigt i storlek och i hur moderna de är med mera. Det verkar alltså som läget är en väldigt viktigt faktor när det gäller pris på bostadsrätter.

Nu när vi sett att det finns en signifikant variation på nivå 2 kan det vara lämpligt att försöka förklara den variationen med hjälp av nivå 2-variabler (stadsdelsegenskaper). Hade det däremot inte funnits någon signifikant variation kring interceptet mellan stadsdelar är det inte sannolikt att de variablerna skulle ha kunnat ha någon effekt – det finns ju då ingen variation att förklara. I Bild 7 har jag gjort ett stapeldiagram (Graphs->Chart builder->Bar) som visar medelpriset på lägenheter i de olika stadsdelarna.

 

Bild 7. Genomsnittligt pris på bostadsrätter i olika stadsdelar i Göteborg.

I nästa del av den här guiden ska vi gå igenom hur man lägger in variabler på nivå 1 och 2, och hur man kan låta effekterna av nivå 1-variablerna variera mellan nivå 2-enheterna.

8 reaktioner till “Guide: Flernivåregressionsanalys del 1

  1. Hej! Den här guiden är fantastisk! Nu väntar jag med spänning på del två av flernivåregressionsanalys. Några planer?

  2. Hej!

    Jag kikar in titt som tätt här på akuten och har lite grubblerier om multilevelanalys. Jag kanske är lite för tidigt ute, eftersom del två av multilevel saknas än så länge, men jag gör ett försök iaf.

    I ditt exempel finns det en tämligen hög intraklasskoefficient (d.v.s. effekter som förklaras av variabel på nivå 2).
    Om jag arbetar med en modell där det INTE finns ngn signifikant effekt på utfallsvariabeln (den beroende variabeln) som varierar på nivå 2 (t.ex. mellan länder).
    Vad händer om man trots det testar olika variabler på nivå 2 (t.ex. Skattetryck, demokratiindex, BNP, etnisk fragmentering).
    När jag lägger in en nivå2 variabel får jag en massa icke-signifikanta estimat – vilket borde vara fullkomligt logiskt eftersom det styrker att effekten på utfallsvariabeln inte varierar mellan land. Är det normalt att få helt orimliga estimat på intercept och nivå 2 variabeln när man tvingar in den i fixed model?

    Jag undrar även hur estimaten för fixed intercept ska avläsas ifall man endast använder 1 identifikationsvariabel (länder) på nivå2 samt en variabel för att testa effekten på landsnivå (t.ex. Skattetryck, demokratindex, BNP, etnisk fragmentering). Länder läggs som “subjects” och nivå 2-variabeln (som ska testa effekten mellan länder) läggs som “model” under mixed effects…

    Läses estimatet för nivå2variabeln av för hur mycket ett steg påverkar utfallsvariabeln?
    Måste dessa variabler centreras för att bli begripliga?

    Output för Covariancen är enkel och klar som korvspad, men output för fixed effects är svårtolkad tycker jag….

    Tack på förhand.

  3. Hej! Tack för en bra intro-beskrivning av multilevel. Undrar om ni kan ge tips på hur man kan ladda ner större mängd material från Hemnet till just excel?

    /Adel

  4. Hej!
    Jag har en fråga!
    Skriver en C-uppsats där jag undersöker olika bakgrundsfaktorer (elevers fysiska aktivitet, föräldrars fysiska aktivitet och utbildningsbakgrund, lärarens arbete) till elevers betygsresultat i Idrott och hälsa. Min handledare nämnde att jag borde göra en mulrippel regressionsanalys. Stämmer det, och isof hur gör man en sådan?

    Tacksam för svar!
    /Linn

  5. Bra genomgång! Ser dock inte hur du räknat med exemplet på hur stor del av variationen som finns mellan stadsdelar, vilket du får till 47%. 702500 + 1464546 = 2167046. Tar vi då som du säger (702500 / 2167046) = 0,324174014. Borde alltså i min mening vara 32%. Tänker jag fel?

Kommentera

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

WordPress.com-logga

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 )

Ansluter till %s