Die binomiale logistische Regression weist obere und untere Asymptoten von 1 bzw. 0 auf. Genauigkeitsdaten (nur als Beispiel) können jedoch obere und untere Asymptoten aufweisen, die sich stark von 1 und / oder 0 unterscheiden. Ich kann drei mögliche Lösungen dafür sehen:
- Machen Sie sich keine Sorgen, wenn Sie gute Passungen im gewünschten Bereich erhalten. Wenn Sie nicht gut passen, dann:
- Transformieren Sie die Daten so, dass die minimale und maximale Anzahl korrekter Antworten in der Stichprobe Proportionen von 0 und 1 ergibt (anstelle von 0 und 0,15).
oder - Verwenden Sie eine nichtlineare Regression, damit Sie entweder die Asymptoten angeben oder den Monteur dies für Sie tun lassen können.
Es scheint mir, dass die Optionen 1 und 2 weitgehend aus Gründen der Einfachheit gegenüber Option 3 bevorzugt würden. In diesem Fall ist Option 3 möglicherweise die bessere Option, da sie mehr Informationen liefern kann.
edit
Hier ist ein Beispiel. Die insgesamt mögliche Genauigkeit für die Genauigkeit beträgt 100, in diesem Fall beträgt die maximale Genauigkeit jedoch ~ 15.
accuracy <- c(0,0,0,0,0,1,3,5,9,13,14,15,14,15,16,15,14,14,15)
x<-1:length(accuracy)
glmx<-glm(cbind(accuracy, 100-accuracy) ~ x, family=binomial)
ndf<- data.frame(x=x)
ndf$fit<-predict(glmx, newdata=ndf, type="response")
plot(accuracy/100 ~ x)
with(ndf, lines(fit ~ x))
Option 2 (gemäß den Kommentaren und um meine Bedeutung zu verdeutlichen) wäre dann das Modell
glmx2<-glm(cbind(accuracy, 16-accuracy) ~ x, family=binomial)
Option 3 (der Vollständigkeit halber) wäre ungefähr so:
fitnls<-nls(accuracy ~ upAsym + (y0 - upAsym)/(1 + (x/midPoint)^slope),
start = list("upAsym" = max(accuracy), "y0" = 0, "midPoint" = 10, "slope" = 5),
lower = list("upAsym" = 0, "y0" = 0, "midPoint" = 1, "slope" = 0),
upper = list("upAsym" = 100, "y0" = 0, "midPoint" = 19, hillslope = Inf),
control = nls.control(warnOnly = TRUE, maxiter=1000),
algorithm = "port")
quelle
cbind(accuracy, 16-accuracy)
) zu verwenden, aber ich mache mir Sorgen darüber, ob dies mathematisch gerechtfertigt ist.Antworten:
Interessante Frage. Eine Möglichkeit, die mir in den Sinn kommt, ist die Aufnahme eines zusätzlichen Parameters , um die Obergrenze der 'Link'-Funktion zu steuern.p ∈ [ 0 , 1 ]
Sei , unabhängige Beobachtungen, wobei , , ist ein Vektor erklärender Variablen, ist ein Vektor von Regressionskoeffizienten und ist die Verknüpfungsfunktion. Dann ist die Wahrscheinlichkeitsfunktion gegeben durch{xj,yj,nj} j=1,...,n yj∼Binomial{ni,pF(xTjβ)} p∈[0,1] xj=(1,xj1,...,xjk)T β=(β0,...,βk) F−1
Der nächste Schritt besteht darin, einen Link auszuwählen, beispielsweise die logistische Verteilung, und die entsprechende MLE von .(β,p)
Betrachten Sie das folgende simulierte Spielzeugbeispiel unter Verwendung eines Dosis-Wirkungs-Modells mit undn = 31(β0,β1,p)=(0.5,0.5,0.25) n=31
Eines der Ergebnisse, die ich erhalten habe, ist . Daher scheint es genau zu sein. Natürlich wäre eine detailliertere Untersuchung dieses Modells erforderlich, da das Einbeziehen von Parametern in ein binäres Regressionsmodell schwierig sein kann und Probleme der Identifizierbarkeit oder Existenz des MLE auf die Stufe 1 2 springen können .(β^0,β^1,p^)=(0.4526650,0.4589112,0.2395564)
Bearbeiten
Angesichts der Bearbeitung (die das Problem erheblich ändert) kann die zuvor vorgeschlagene Methode geändert werden, um die von Ihnen angegebenen Daten anzupassen. Betrachten Sie das Modell
Dabei ist die logistische CDF, ein Standortparameter, ein Skalierungsparameter und der Parameter die Höhe der Kurve ähnlich wie im vorherigen Modell steuert. Dieses Modell kann mit nichtlinearen kleinsten Quadraten angepasst werden . Der folgende R-Code zeigt, wie Sie dies für Ihre Daten tun.μ σ pF μ σ p
quelle
Ich würde das Maximum des X-Vektors als die insgesamt mögliche Anzahl von Erfolgen verwenden. (Dies ist eine voreingenommene Schätzung der tatsächlichen maximalen Anzahl von Erfolgen, sollte jedoch recht gut funktionieren, wenn Sie über genügend Daten verfügen.)
Dadurch wird eine Handlung erstellt, die wie folgt aussieht:
quelle
Beachten Sie, dass die binomiale Regression auf einer binären Antwort für jeden Einzelfall basiert. Jede einzelne Antwort muss einen von zwei Werten annehmen können. Wenn der Anteil begrenzt ist, muss es auch Fälle gegeben haben, in denen nur ein Wert angenommen werden konnte.
Es hört sich so an, als hätten Sie es nicht mit Binärdaten zu tun, sondern mit Daten über einen endlichen Bereich. Wenn dies der Fall ist, klingt die Beta-Regression angemessener. Wir können die Beta-Distribution wie folgt schreiben:
Sie setzen dann wie jede Verknüpfungsfunktion, die das Intervall in die Reals abbildet . Es gibt ein R-Paket, das für diese Modelle verwendet werden kann, obwohl ich denke, dass Sie die Grenzen kennen müssen. Wenn Sie dies tun, definieren Sie die neue Variable .[ L , U ] y i = d i - L.g(μi)=xTiβ [L,U] yi=di−LU−L
quelle