Ich bin sehr verwirrt darüber, wie Gewicht in glm mit family = "binomial" funktioniert. Nach meinem Verständnis wird die Wahrscheinlichkeit des glm mit family = "binomial" wie folgt angegeben: wobeiyder "Anteil des beobachteten Erfolgs" ist undndie bekannte Anzahl von Versuchen ist.
Nach meinem Verständnis wird die Erfolgswahrscheinlichkeit mit einigen linearen Koeffizienten β wie folgt parametrisiert: p = p ( β ) und glm-Funktion mit family = "binomial" suche nach: arg max β ∑ i log f ( y i ) . Dann kann dieses Optimierungsproblem vereinfacht werden als:
Deshalb , wenn wir lassen für alle i = 1 , . . . , N für eine Konstante c , dann muss es auch wahr sein, dass: arg max β ∑ i log f ( y i ) = arg max β ∑ i n ∗ i [ y i log p ( β )
Die Hilfedatei von glm sagt:
"For a binomial GLM prior weights are used to give the number of trials
when the response is the proportion of successes"
Daher erwartete ich, dass die Skalierung des Gewichts das geschätzte angesichts des Erfolgsanteils als Antwort nicht beeinflussen würde . Die folgenden beiden Codes geben jedoch unterschiedliche Koeffizientenwerte zurück:
Y <- c(1,0,0,0) ## proportion of observed success
w <- 1:length(Y) ## weight= the number of trials
glm(Y~1,weights=w,family=binomial)
Dies ergibt:
Call: glm(formula = Y ~ 1, family = "binomial", weights = w)
Coefficients:
(Intercept)
-2.197
Wenn ich alle Gewichte mit 1000 multipliziere, sind die geschätzten Koeffizienten unterschiedlich:
glm(Y~1,weights=w*1000,family=binomial)
Call: glm(formula = Y ~ 1, family = binomial, weights = w * 1000)
Coefficients:
(Intercept)
-3.153e+15
Ich habe viele andere Beispiele wie dieses gesehen, auch wenn die Gewichte mäßig skaliert waren. Was geht hier vor sich?
weights
endet das Argument an zwei Stellen innerhalb derglm.fit
Funktion (in glm.R ), was die Arbeit in R: 1) in den Abweichungsrestwerten über die C-Funktionbinomial_dev_resids
(in family.c ) ist. und 2) im IWLS-Schritt mitCdqrls
(in lm.c ). Ich kenne nicht genug C, um die Logik