2014-04-04 12 views
5

Ich verwende das mlogit-Paket in Programm R. Ich habe meine Daten vom ursprünglichen Wide-Format in das Long-Format konvertiert. Hier ist ein Beispiel für den konvertierten Datenrahmen, den ich als 'long_perp' bezeichne. Alle unabhängigen Variablen sind individuell spezifisch. Ich habe 4258 eindeutige Beobachtungen im Datensatz.Multinomiale Logit-Modelle und verschachtelte Logit-Modelle

  date_id act2 grp.bin pdist ship sea avgknots shore day location chid alt 
4.dive 40707_004 TRUE  2 2.250 second light 14.06809 2.30805 12 Lower 4 dive 
4.fly 40707_004 FALSE  2 2.250 second light 14.06809 2.30805 12 Lower 4 fly 
4.none 40707_004 FALSE  2 2.250 second light 14.06809 2.30805 12 Lower 4 none 
5.dive 40707_006 FALSE  2 0.000 second light 15.12650 2.53312 12 Lower 5 dive 
5.fly 40707_006 TRUE  2 0.000 second light 15.12650 2.53312 12 Lower 5 fly 
5.none 40707_006 FALSE  2 0.000 second light 15.12650 2.53312 12 Lower 5 none 
6.dive 40707_007 FALSE  1 1.995 second light 14.02101 2.01680 12 Lower 6 dive 
6.fly 40707_007 TRUE  1 1.995 second light 14.02101 2.01680 12 Lower 6 fly 
6.none 40707_007 FALSE  1 1.995 second light 14.02101 2.01680 12 Lower 6 none 

‚act2‘ ist die abhängige Variable und besteht aus Entscheidungen einen Vogel auf dem Wasser schwimmen konnte, wenn genähert von einem Schiff machen; fliegen, tauchen oder gar nicht. Ich interessiere mich dafür, wie diese Wahrscheinlichkeiten sich auf die verbleibenden unabhängigen Variablen im Datenrahmen beziehen, dh senkrechte Entfernung zum Schiffspfad (pdist) Seegang (Meer), Geschwindigkeit (avgknots), Entfernung zum Ufer (Ufer) usw. Die unabhängige Variablen bestehen aus dichotomen, Faktor- und kontinuierlichen Variablen.

Ich habe zwei multinomiale Logit-Modelle ausgeführt, von denen eines alle Auswahlmöglichkeiten und das andere nur eine Teilmenge enthält. Ich habe dann diese Modelle mit der Funktion hmftest() verglichen, um die IIA-Annahme zu testen. Die Ergebnisse verwirrten das Geringste. Ich werde die Codes für die beiden Modelle und die Testausgabe einbeziehen (falls ich die Modelle im Code falsch spezifiziere).

# model including all choice options (fly, dive, none) 
mod.1 <- mlogit(act2 ~ 1 | pdist + as.factor(grp.bin) + 
    as.factor(sea) + avgknots + shore + as.factor(location),long_perp , 
    reflevel = 'none') 

# model including only a subset of choice options (fly, dive) 
mod.alt <- mlogit(act2 ~ 1 | pdist + as.factor(grp.bin) + 
    as.factor(sea) + avgknots + shore + as.factor(location),long_perp , 
    reflevel = 'none', alt.subset = c("fly","dive")) 

# IIA test 
hmftest(mod.1, mod.alt) 
# output 
      Hausman-McFadden test 

data: long_perp 
chisq = -968.7303, df = 7, p-value = 1 
alternative hypothesis: IIA is rejected 

Wie Sie sehen können, ist die Chisquare-Statistik negativ! Ich gehe davon aus, dass ich entweder 1. etwas falsch mache oder 2. IIA verletzt wird. Dieses Ergebnis gilt für die Auswahl-Teilmenge (Fliegen, Tauchen), aber die IIA-Annahme wird mit einer Auswahl-Teilmenge (keine, Tauchgang) aufrechterhalten. Das verwirrt mich.

Als nächstes versuchte ich ein verschachteltes Modell zu formulieren, um die IIA-Annahme zu lockern. Ich habe die Auswahlmöglichkeiten verschachtelt als nest1 = none, nest2 = fly, dive. Dies macht für mich Sinn, da dies wie ein logischer Bruch erscheint, der Vogel beschließt, zu reagieren oder nicht und dann zu entscheiden, welche Reaktion zu machen ist.

Ich bin unklar, wie die verschachtelten Logit-Modelle ausgeführt werden (auch nach dem Lesen der beiden Vignetten für mlogit, Croissant vignette und Train vignette).

Wenn ich meine Analyse nach dem Beispiel in der Croissant-Vignette führe, erhalte ich den folgenden Fehler.

Ich habe ein wenig über diese Fehlermeldung gelesen und es kann wegen der vollständigen Trennung auftreten. Ich habe mir einige Tabellen der Daten angeschaut und glaube nicht, dass dies geschieht, da ich 4000+ Beobachtungen und nur eine Faktorvariable mit mehr als 2 Ebenen (es hat 3) habe.

Hilfe zu diesen speziellen Problemen wird sehr geschätzt, aber ich bin auch offen für alternative Analysen, die ich verwenden kann, um meine Frage zu beantworten. Ich interessiere mich hauptsächlich für die Wahrscheinlichkeit des Fliegens als Funktion der senkrechten Entfernung zum Schiffspfad.

Danke, Tim

Antwort

0

Um ein positives Chi-Quadrat zu erhalten, den Code wie folgt ändern:

alt.subset = c("none", "fly") 

das heißt, der Schiedsrichter Ebene auch in der Teilmenge. Es kann helfen, obwohl der P-Wert sich nicht viel ändern kann.

Verwandte Themen