Estou muito confuso com a forma como o peso funciona em glm com family = "binomial". No meu entendimento, a probabilidade do glm com family = "binomial" é especificada da seguinte forma: onde é a "proporção de sucesso observado" e é o número conhecido de tentativas.
No meu entendimento, a probabilidade de sucesso é parametrizada com alguns coeficientes lineares como e função glm com family = "binomial" procure por:
Portanto, se deixarmos para todos para alguma constante , também deve ser verdade que:
O arquivo de ajuda da glm diz:
"For a binomial GLM prior weights are used to give the number of trials
when the response is the proportion of successes"
Portanto, eu esperava que a escala de peso não afetasse o valor estimado dada a proporção de sucesso como resposta. No entanto, os dois códigos a seguir retornam valores diferentes de coeficiente:
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)
Isso produz:
Call: glm(formula = Y ~ 1, family = "binomial", weights = w)
Coefficients:
(Intercept)
-2.197
enquanto que se eu multiplicar todos os pesos por 1000, os coeficientes estimados são diferentes:
glm(Y~1,weights=w*1000,family=binomial)
Call: glm(formula = Y ~ 1, family = binomial, weights = w * 1000)
Coefficients:
(Intercept)
-3.153e+15
Eu vi muitos outros exemplos como esse, mesmo com uma escala moderada de pesos. O que está acontecendo aqui?
weights
argumento termina em dois lugares dentro daglm.fit
função (em glm.R ), que é o que funciona em R: 1) nos resíduos de desvio, por meio da função Cbinomial_dev_resids
(em family.c ) e 2) no IWLS passo a passo deCdqrls
(em lm.c ). Eu não sei o suficiente C a ser de mais ajuda no rastreamento da lógica