Führen Sie einen Test durch, um die geschätzten statistischen Modelle zu vergleichen. Dieses Kapitel befasst sich mit dem ** Likelihood-Ratio-Test **.
Verfahren
Im Test werden ein Modell mit wenigen Parametern und ein Modell mit vielen Parametern (einfaches Modell und komplexes Modell) getestet. Sie heißen ** Nullhypothese ** und ** Alternativhypothese **.
Der statistische Modelltest untersucht, ob der Satz "Die Nullhypothese ist korrekt" geleugnet werden kann.
Zu verwendendes statistisches Modell:
Modell- | Anzahl der Parameter |
deviance( |
residual deviance | AIC | |
---|---|---|---|---|---|
Konstante | 1 | -237.6 | 475.3 | 89.5 | 477.3 |
x | 2 | -235.4 | 470.8 | 85.0 | 474.8 |
full | 100 | -192.9 | 385.6 | 0.0 | 585.8 |
Im Likelihood-Ratio-Test wird die Differenz des Abweichungsgrads verwendet, die durch Multiplizieren des Logarithmus des Likelihood-Verhältnisses mit -2 erhalten wird. Im Fall dieses Beispiels
\begin{eqnarray}
\frac{L_1 ^\ast}{L_2 ^\ast} &=& \frac{Maximale Wahrscheinlichkeit eines konstanten Modells:\exp(-237.6)}{Maximale Wahrscheinlichkeit des x-Modells:\exp(-235.4)} \\
\Delta D_{1,2} &=& -2 * (\log L_1 ^ \ast - \log L_2 ^ \ast) \\
\Delta D_{1,2} &=& D_1 - D_2 \\
\Delta D_{1,2} &=& 4.5
\end{eqnarray}
Es wird bewertet, dass dieser Abweichungsgrad um 4,5 verbessert wird.
Die Nullhypothese lautet | ||
---|---|---|
Ein echtes Modell | Erstklassiger Fehler | (kein Problem) |
Kein echtes Modell | (kein Problem) | Zweite Art von Fehler |
Als Prozedur
Die Wahrscheinlichkeit $ P $, dass die Differenz zwischen dem Abweichungsgrad des konstanten Modells und dem x-Modell $ \ Delta D_ {1,2} \ geq 4.5 $ beträgt, wird als ** P-Wert ** bezeichnet.
Bestimmen Sie das ** Signifikanzniveau ** im Voraus (selbst)
Lassen.
Nullhypothese: Berechnet die Wahrscheinlichkeit, dass $ \ Delta D_ {1,2}, eine Teststatistik in der Welt, in der ein konstantes Modell ein echtes Modell ist, größer als 4,5 ist (machen Sie einen erstklassigen Fehler).
Über 3. Ein Verfahren zum Erzeugen der obigen Daten basierend auf einer Simulation unter Verwendung von Zufallszahlen. Angenommen, das Ergebnis eines bestimmten Modells wird in "fit1" und das Ergebnis des x-Modells in "fit2" gespeichert.
>>> model1 = smf.glm('y~1', data=d, family=sm.families.Poisson())
>>> model2 = smf.glm('y~x', data=d, family=sm.families.Poisson())
>>> fit1 = model1.fit()
>>> fit2 = model2.fit()
# fit1$deviance - fit2$deviance
>>> fit1.deviance - fit2.deviance
4.5139410788540459
Aus der durchschnittlichen Anzahl von Samen, die von einem bestimmten Modell geschätzt werden $ \ lambda = \ exp (2.06) = 7.85 $ Die zu generierenden Daten sind "** 100 Poisson-Zufallszahlen mit einem Durchschnitt von 7,85 **".
# d$y.rnd <- rpois(100, lambda=mean(d$y))
>>> d.y.rnd = sci.poisson.rvs(d.y.mean(), size=100)
# fit1 <- glm(y.rnd ~ 1, data=d, family=poisson)
>>> model1 = smf.glm('y.rnd ~ 1', data=d, family=sm.families.Poisson())
>>> fit1 = model1.fit()
# fit2 <- glm(y.rnd ~ x, data=d, family=poisson)
>>> model2 = smf.glm('y.rnd ~ x', data=d, family=sm.families.Poisson())
>>> fit2 = model2.fit()
# fit1$deviance - fit2$deviance
>>> fit1.deviance - fit2.deviance
0.63270346107955788
Der Unterschied im Grad der Abweichung beträgt 1,92 für Daten, deren Durchschnittswert eine konstante Poisson-Zufallszahl ist.
Das x-Modell mit bedeutungslosen erklärenden Variablen ist besser als das konstante Modell, das das "wahre Modell" ist.
Durch etwa 1000-maliges Wiederholen dieses Schritts können ** Verteilung der Teststatistik ** und "Verteilung der Abweichungsgraddifferenz $ \ Delta D_ {1, 2} $" in diesem Beispiel vorhergesagt werden.
def get_dd(d):
sample_d = len(d)
mean_y = d.y.mean()
d.y.rnd = sci.poisson.rvs(mu=mean_y, size=sample_d)
model1 = smf.glm('y.rnd ~ 1', data=d, family=sm.families.Poisson())
model2 = smf.glm('y.rnd ~ x', data=d, family=sm.families.Poisson())
fit1 = model1.fit()
fit2 = model2.fit()
return fit1.deviance - fit2.deviance
def pb(d, bootstrap=1000):
return pandas.Series([get_dd(d) for _ in xrange(bootstrap)])
results = pb(d)
results.describe()
results[results >= 4.5].count()
results[results>= 4.5].count()
# 32
results.quantile(.95)
# 3.6070094508948025
results.hist()
Aus den obigen Ergebnissen ergibt sich, dass die "Wahrscheinlichkeit, dass der Unterschied in der Abweichung größer als 4,5 ist", 32/1000 $ beträgt, dh $ P = 0,032 $. Wenn Sie den Unterschied im Abweichungsgrad $ \ Delta D_ {1,2} $ finden, wobei $ P = 0,05 $. Es wird $ \ Delta D_ {1,2} \ leq 3.61 $.
Von Oben, Es gibt einen signifikanten Unterschied, weil "der P-Wert der Abweichungsgraddifferenz von 4,5 0,032 betrug, dies ist also kleiner als das Signifikanzniveau von 0,05". Es wird beurteilt, dass "die Nullhypothese (konstantes Modell) verworfen wird und das x-Modell erhalten bleibt, so dass dies übernommen wird".
Die Wahrscheinlichkeitsverteilung der Abweichungsgraddifferenz $ \ Delta D_ {1,2} $ kann durch die $ \ chi ^ 2 $ -Verteilung des Freiheitsgrades $ k_2 --k_1 = 2-1 = 1 $ angenähert werden.
Anscheinend gibt es keine ANOVA für GLM in "Statistikmodellen" ...
Die $ \ chi ^ 2 $ -Verteilungsnäherung ist ** eine Näherungsberechnung, die effektiv ist, wenn die Stichprobengröße groß ist **.
Die PB-Methode scheint besser für kleine Proben mit einer kleinen Anzahl untersuchter Personen zu sein oder für Fälle, in denen die Variation der Daten keine Poisson-Verteilung, sondern eine gleichmäßig verteilte Normalverteilung ist.
Sowohl der Likelihood-Ratio-Test als auch die Modellauswahl durch AIC konzentrieren sich auf die Statistik der Abweichung.
--AIC: Der Zweck besteht darin, ein "Modell auszuwählen, das gute Vorhersagen macht". --Litability Ratio Test: Der Zweck besteht darin, die Nullhypothese sicher abzulehnen
Es scheint, dass es keine andere Wahl gibt, als nach dem Zweck zu wählen.
Recommended Posts