Estoy muy confundido con cómo funciona el peso en glm con family = "binomial". En mi opinión, la probabilidad de la glm con family = "binomial" se especifica de la siguiente manera:
En mi opinión, la probabilidad de éxito se parametriza con algunos coeficientes lineales como y la función glm con family = "binomial" busca:
Por lo tanto, si dejamos que para toda i = 1 , . . . , N para alguna constante c , entonces también debe ser cierto que: arg max β ∑ i log f ( y i ) = arg max β ∑ i n ∗ i [ y i log p ( β )
El archivo de ayuda de glm dice:
"For a binomial GLM prior weights are used to give the number of trials
when the response is the proportion of successes"
Por lo tanto, esperaba que el aumento de peso no afectara la estimada dada la proporción de éxito como respuesta. Sin embargo, los siguientes dos códigos devuelven valores de coeficientes diferentes:
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)
Esto produce:
Call: glm(formula = Y ~ 1, family = "binomial", weights = w)
Coefficients:
(Intercept)
-2.197
mientras que si multiplico todos los pesos por 1000, los coeficientes estimados son diferentes:
glm(Y~1,weights=w*1000,family=binomial)
Call: glm(formula = Y ~ 1, family = binomial, weights = w * 1000)
Coefficients:
(Intercept)
-3.153e+15
Vi muchos otros ejemplos como este, incluso con una escala moderada en los pesos. ¿Que esta pasando aqui?
weights
argumento termina en dos lugares dentro de laglm.fit
función (en glm.R ), que es lo que hace el trabajo en R: 1) en los residuales de desviación, a través de la función Cbinomial_dev_resids
(en family.c ) y 2) en el paso IWLS a modo deCdqrls
(en lm.c ). No sé lo suficiente C para ser de más ayuda en el seguimiento de la lógica