Logistisk multilevel analyse i SAS?
Hej alle,
Jeg sidder og roder med SAS-modulet "proc mixed", men efter at have læst sasdoc igennem har jeg ikke kunne finde frem til en måde at lave logistisk multilevel analyse på. Jeg kan kun finde frem til lineær multilevel regression. Det nonlineære må kunne lade sig gøre.
Er der nogen, der har prøvet sådan noget frækt før? I så fald kunne det være fantastisk med noget input. Hvis der også er mulighed for multinomisk logistisk multilevel regression så er det helt i top.
Eller skal man ty til andre, og måske mere specifikke, programmer?
Mvh. Kristian
Jeg sidder og roder med SAS-modulet "proc mixed", men efter at have læst sasdoc igennem har jeg ikke kunne finde frem til en måde at lave logistisk multilevel analyse på. Jeg kan kun finde frem til lineær multilevel regression. Det nonlineære må kunne lade sig gøre.
Er der nogen, der har prøvet sådan noget frækt før? I så fald kunne det være fantastisk med noget input. Hvis der også er mulighed for multinomisk logistisk multilevel regression så er det helt i top.
Eller skal man ty til andre, og måske mere specifikke, programmer?
Mvh. Kristian
Hej Kristian
SAS kan sagtens lave multilevel logistisk regression. Du skal bruge modulet PROC NLMIXED, som er lidt mere sværere at programmere end PROC MIXED men som til gengæld kan langt mere.
I NLMIXED skal du selv programmere modellen og likelihoodfunktionen. Det betyder, at programmeringen er lidt mere "hardcore" end de fleste sociologer er vant til. Til gengæld forstår man (eller er tvunget til at forstå ...!) modellen langt bedre og kan programmere "custom"-modeller til ethvert formål. Nedenfor er vist et program, som estimerer en multinomial logistisk regression med random effects (dvs. en multilevel model). Jeg prøver at skitsere hvad der foregår i programmet, men du må endelig vende tilbage hvis noget er uklart. Mine kommentarer er markeret indenfor "#" (dvs. de skal ikke med i selve programmet!). Jeg antager, at du er sådan nogenlunde velbevandret i SAS basics.
Den afhængige variabel i modellen hedder y og har tre niveauer (1,2,3) og der er én binær forklarende variabel, x. Random effecten som fanger "multilevel"-strukturen i data (enten gentagne observationer på det samme individ eller fx elever "nested" i skoler) hedder u.
Modellen har 5 parametre. i2 er konstanten for y=2 (y=1 er referencegruppe), i3 er konstant for y=3, b_x2 er regressionskoefficient for x-variablen for y=2, b_x3 er regressionskoefficient for x-variablen for y=3, og var_u er variansen for random effecten.
proc nlmixed data=data_x; # angiver procedure, datasæt osv. #
parms i2=0 i3=0 b_x2=0 b_x3=0 var_u=0; # sætter startværdier for modellens parametre. Et godt men naivt bud er 0 for alle parametre #
# De næste linjer opskriver den lineær prediktor - dvs. strukturen af forklarende var. #
y2 = i2 + b_x*x + u;
y3 = i3 + b_x*x + u;
# Her kommer den multinomelle modelstruktur #
if (y=1) then
P = 1 / (1 + EXP(y2) + EXP(y3));
ELSE if (y=2) then
P = EXP(y2) /(1 + EXP(y2) + EXP(y3));
ELSE if (priority=3) then
P = EXP(y3) /(1 + EXP(y2) + EXP(y3));
# Her konstrueres log-likelihoodfunktionen på baggrund af modellens parametre #
LL = LOG(P);
MODEL y ~ general(LL);
# Herefter defineres random effecten u, som her antages at være normaltfordelt (dvs. med middelværdi 0 og standardafvigelse var_u*var_u) - "subject=id" angiver at variablen "id" har information om multilevelstrukturen i data.
random u ~ normal(0,var_u*var_u) subject=id;
run;
quit;
Uden mine skriblerier ser det sådan her ud:
proc nlmixed data=data_x;
parms i2=0 i3=0 b_x2=0 b_x3=0 var_u=0;
y2 = i2 + b_x*x + u;
y3 = i3 + b_x*x + u;
if (y=1) then
P = 1 / (1 + EXP(y2) + EXP(y3));
ELSE if (y=2) then
P = EXP(y2) /(1 + EXP(y2) + EXP(y3));
ELSE if (priority=3) then
P = EXP(y3) /(1 + EXP(y2) + EXP(y3));
LL = LOG(P);
MODEL y ~ general(LL);
random u ~ normal(0,var_u*var_u) subject=id;
run;
quit;
Det kan måske se ret kompliceret ud men kan "læses". Et freeware-alternativ til SAS som også estimerer mixed models er Donald Hedeker`s MIXED UP suite (http://tigger.uic.edu/~hedeker/mix.html). Det er gratis, let at gå til og fungerer udemærket. Men, det er ikke integreret med et andet program til databehandling, osv. Derfor foretrækker jeg SAS eller STATA. Desuden er SAS lynhurtigt til mixed models som jo ofte - fordi man integrerer likelihood`en - kan være langsommelige at estimere.
Håber det hjalp - ellers må du skrive tilbage.
Mvh.
Mads
SAS kan sagtens lave multilevel logistisk regression. Du skal bruge modulet PROC NLMIXED, som er lidt mere sværere at programmere end PROC MIXED men som til gengæld kan langt mere.
I NLMIXED skal du selv programmere modellen og likelihoodfunktionen. Det betyder, at programmeringen er lidt mere "hardcore" end de fleste sociologer er vant til. Til gengæld forstår man (eller er tvunget til at forstå ...!) modellen langt bedre og kan programmere "custom"-modeller til ethvert formål. Nedenfor er vist et program, som estimerer en multinomial logistisk regression med random effects (dvs. en multilevel model). Jeg prøver at skitsere hvad der foregår i programmet, men du må endelig vende tilbage hvis noget er uklart. Mine kommentarer er markeret indenfor "#" (dvs. de skal ikke med i selve programmet!). Jeg antager, at du er sådan nogenlunde velbevandret i SAS basics.
Den afhængige variabel i modellen hedder y og har tre niveauer (1,2,3) og der er én binær forklarende variabel, x. Random effecten som fanger "multilevel"-strukturen i data (enten gentagne observationer på det samme individ eller fx elever "nested" i skoler) hedder u.
Modellen har 5 parametre. i2 er konstanten for y=2 (y=1 er referencegruppe), i3 er konstant for y=3, b_x2 er regressionskoefficient for x-variablen for y=2, b_x3 er regressionskoefficient for x-variablen for y=3, og var_u er variansen for random effecten.
proc nlmixed data=data_x; # angiver procedure, datasæt osv. #
parms i2=0 i3=0 b_x2=0 b_x3=0 var_u=0; # sætter startværdier for modellens parametre. Et godt men naivt bud er 0 for alle parametre #
# De næste linjer opskriver den lineær prediktor - dvs. strukturen af forklarende var. #
y2 = i2 + b_x*x + u;
y3 = i3 + b_x*x + u;
# Her kommer den multinomelle modelstruktur #
if (y=1) then
P = 1 / (1 + EXP(y2) + EXP(y3));
ELSE if (y=2) then
P = EXP(y2) /(1 + EXP(y2) + EXP(y3));
ELSE if (priority=3) then
P = EXP(y3) /(1 + EXP(y2) + EXP(y3));
# Her konstrueres log-likelihoodfunktionen på baggrund af modellens parametre #
LL = LOG(P);
MODEL y ~ general(LL);
# Herefter defineres random effecten u, som her antages at være normaltfordelt (dvs. med middelværdi 0 og standardafvigelse var_u*var_u) - "subject=id" angiver at variablen "id" har information om multilevelstrukturen i data.
random u ~ normal(0,var_u*var_u) subject=id;
run;
quit;
Uden mine skriblerier ser det sådan her ud:
proc nlmixed data=data_x;
parms i2=0 i3=0 b_x2=0 b_x3=0 var_u=0;
y2 = i2 + b_x*x + u;
y3 = i3 + b_x*x + u;
if (y=1) then
P = 1 / (1 + EXP(y2) + EXP(y3));
ELSE if (y=2) then
P = EXP(y2) /(1 + EXP(y2) + EXP(y3));
ELSE if (priority=3) then
P = EXP(y3) /(1 + EXP(y2) + EXP(y3));
LL = LOG(P);
MODEL y ~ general(LL);
random u ~ normal(0,var_u*var_u) subject=id;
run;
quit;
Det kan måske se ret kompliceret ud men kan "læses". Et freeware-alternativ til SAS som også estimerer mixed models er Donald Hedeker`s MIXED UP suite (http://tigger.uic.edu/~hedeker/mix.html). Det er gratis, let at gå til og fungerer udemærket. Men, det er ikke integreret med et andet program til databehandling, osv. Derfor foretrækker jeg SAS eller STATA. Desuden er SAS lynhurtigt til mixed models som jo ofte - fordi man integrerer likelihood`en - kan være langsommelige at estimere.
Håber det hjalp - ellers må du skrive tilbage.
Mvh.
Mads
Hej Mads,
Tusinde tak for hjælpen. Jeg vil se på det de følgende dage og så lige vende tilbage. Er glad for at blive introduceret til nonlineær mixed proceduren - jeg har ledt utrolig lang tid efter noget lignende i sasdoc, men det er jo ofte en besværlig affære ;). Igen, mange tak for hjælpen, og jeg vender snarligt tilbage.
Mvh. Kristian
Tusinde tak for hjælpen. Jeg vil se på det de følgende dage og så lige vende tilbage. Er glad for at blive introduceret til nonlineær mixed proceduren - jeg har ledt utrolig lang tid efter noget lignende i sasdoc, men det er jo ofte en besværlig affære ;). Igen, mange tak for hjælpen, og jeg vender snarligt tilbage.
Mvh. Kristian
My pleasure :-)
Bruger du evt. STATA? Så kan hele programmeringsstaffagen i SAS reduceres til 1 linjes program. Meget nemmere men ikke helt så hardcore cool!
Mvh.
Mads
Bruger du evt. STATA? Så kan hele programmeringsstaffagen i SAS reduceres til 1 linjes program. Meget nemmere men ikke helt så hardcore cool!
Mvh.
Mads
Hej Mads og Kristian
Er der nogen af jer der ved om man kan lave logistisk multilevel analyse i SPSS?
Venlig hilsen
Niels
Er der nogen af jer der ved om man kan lave logistisk multilevel analyse i SPSS?
Venlig hilsen
Niels
Hej Niels,
Nej. Desværre. Du skal have fat i Stata. Det er langt det bedste program til nem multilevelanalyse på nettet. Prøv fx at lån følgende bog og kig i sidste kapitel om software til multilevel analyse:
Twisk, JWR 2006: Applied Multilevel Analysis. Cambridge.
Den er en lille nem og god bog, og især sidste kapitel om software til forskellige multilevelmodeller er rigtig godt.
Du kan selvfølgelig også lave det i SAS. Prøv evt. at efterligne Mads` sas-program ovenfor. Der skal jo kun være en ligning, hvis du arbejder med binær logistisk regression.
mvh Kristian
Nej. Desværre. Du skal have fat i Stata. Det er langt det bedste program til nem multilevelanalyse på nettet. Prøv fx at lån følgende bog og kig i sidste kapitel om software til multilevel analyse:
Twisk, JWR 2006: Applied Multilevel Analysis. Cambridge.
Den er en lille nem og god bog, og især sidste kapitel om software til forskellige multilevelmodeller er rigtig godt.
Du kan selvfølgelig også lave det i SAS. Prøv evt. at efterligne Mads` sas-program ovenfor. Der skal jo kun være en ligning, hvis du arbejder med binær logistisk regression.
mvh Kristian
Hej igen,
Jeg skrev "nem multilevelanalyse på nettet", hvor "på nettet" jo er kulsort. Jeg mener, at Stata er det bedste program på markedet!
vh Kristian
Jeg skrev "nem multilevelanalyse på nettet", hvor "på nettet" jo er kulsort. Jeg mener, at Stata er det bedste program på markedet!
vh Kristian
OK - tusind tak for bogtippet!
Hilsen Niels
Hilsen Niels
Hej Niels
Amerikaneren Donald Hedeker har lavet en gratis programpakke, som kan estimere multilevel logistisk regression (og mange andre multilevel-modeller). Se her: http://tigger.uic.edu/~hedeker/mix.html. Det virker ganske fint.
Mvh.
Mads
Amerikaneren Donald Hedeker har lavet en gratis programpakke, som kan estimere multilevel logistisk regression (og mange andre multilevel-modeller). Se her: http://tigger.uic.edu/~hedeker/mix.html. Det virker ganske fint.
Mvh.
Mads
Andre læser også
- Perspektivering og konklusion
- Fænomenologisk metode/hermeneutisk fortolkning
- Definition af kontingens
- Svag paternalisme
- Abduktion
- Habermas` teori om system og livsverden
- Generaliserbarhed ved kvalitativ metode?
- Bourdieu - Foucault; Forskel eller lighed
- Magt og viden(foucault)
- Socialkonstruktionisme versus socialkonstruktivisme
- Socialkonstruktivistisk /hermeneutisk
- Metaperspektiv?
- Hvem kender til makro- meso- og mikro begreberne?
- Deduktiv vs. induktiv
- Foucault, subjektivering/objektivering
- Ordet "perspektivering" på engelsk?
- Foucaults diskursanalyse - i en simpel udgave?
- Har jeg forstået Luhmann korrekt???
- Socialkonstruktivisme
- Forskel på paradigme og diskurs
- Moral og etik - en begrebsafklaring.
- Kritisk realisme vs. realism
- HJÆLP!!! jeg fatter ikke felt og doxa
- Sammenhæng mellem kapital og habitus
- Governmentality
- Viden - ud fra en ontologisk og epistemologisk dimension