Sociologiskforum.dk var aktivt fra 2004-2012, men eksisterer i dag kun som arkiv.
annonce

Logistisk multilevel analyse i SAS?

Skrevet d. 04.03.2007 af KristianKarlson
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
Skrevet d. 05.03.2007 af Mads_Jaeger
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
Skrevet d. 05.03.2007 af KristianKarlson
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
Skrevet d. 05.03.2007 af Mads_Jaeger
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
Skrevet d. 04.11.2008 af Niels M
Hej Mads og Kristian

Er der nogen af jer der ved om man kan lave logistisk multilevel analyse i SPSS?

Venlig hilsen
Niels
Skrevet d. 05.11.2008 af KristianKarlson
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
Skrevet d. 05.11.2008 af KristianKarlson
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
Skrevet d. 05.11.2008 af Niels M
OK - tusind tak for bogtippet!

Hilsen Niels
Skrevet d. 05.11.2008 af Mads_Jaeger
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

Andre læser også

annonce
Sociologiskforum.dk benytter cookies til blandt andet statistik og marketing. Ved at benytte hjemmesiden accepterer du vores brug af cookies. Okay