Je suis très confus avec la façon dont le poids fonctionne en glm avec family = "binomial". À ma connaissance, la probabilité du glm avec family = "binomial" est spécifiée comme suit: où y est la "proportion de succès observée" et n est le nombre connu d'essais.yn
À ma connaissance, la probabilité de succès est paramétrée avec certains coefficients linéaires comme et la fonction glm avec family = "binomial" recherche:
Par conséquent, si nous laissons pour tout pour une constante , alors il doit également être vrai que:
Le fichier d'aide de glm indique:
"For a binomial GLM prior weights are used to give the number of trials
when the response is the proportion of successes"
Par conséquent, je m'attendais à ce que la mise à l'échelle du poids n'affecte pas la estimée étant donné la proportion de succès en tant que réponse. Cependant, les deux codes suivants renvoient des valeurs de coefficient différentes:
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)
Cela donne:
Call: glm(formula = Y ~ 1, family = "binomial", weights = w)
Coefficients:
(Intercept)
-2.197
alors que si je multiplie tous les poids par 1000, les coefficients estimés sont différents:
glm(Y~1,weights=w*1000,family=binomial)
Call: glm(formula = Y ~ 1, family = binomial, weights = w * 1000)
Coefficients:
(Intercept)
-3.153e+15
J'ai vu de nombreux autres exemples comme celui-ci, même avec une mise à l'échelle modérée des poids. Qu'est-ce qui se passe ici?
weights
argument se retrouve à deux endroits à l'intérieur de laglm.fit
fonction (dans glm.R ), ce qui fait le travail dans R: 1) dans les résidus de déviance, par le biais de la fonction Cbinomial_dev_resids
(dans family.c ) et 2) dans l'étape IWLS au moyen deCdqrls
(en lm.c ). Je ne connais pas assez de C pour être plus utile dans le traçage de la logique