Sono molto confuso da come funziona il peso in glm con family = "binomial". Nella mia comprensione, la probabilità del glm con la famiglia = "binomiale" è specificata come segue: dove è la "proporzione di successo osservato" e è il numero noto di prove.yn
A mio avviso, la probabilità di successo è parametrizzata con alcuni coefficienti lineari \ beta come p = p (\ beta) e funzione glm con family = "binomial" cerca: \ textrm {arg} \ max _ {\ beta} \ sum_i \ log f (y_i). Quindi questo problema di ottimizzazione può essere semplificato come:β p = p ( β ) arg max β ∑ i log f ( y i ) .
Quindi se lasciamo per tutti per qualche costante , allora deve anche essere vero che:
Il file di aiuto di glm dice:
"For a binomial GLM prior weights are used to give the number of trials
when the response is the proportion of successes"
Pertanto mi aspettavo che il ridimensionamento del peso non influisse sulla stima data la percentuale di successo come risposta. Tuttavia i seguenti due codici restituiscono valori di coefficiente diversi:
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)
Questo produce:
Call: glm(formula = Y ~ 1, family = "binomial", weights = w)
Coefficients:
(Intercept)
-2.197
mentre se moltiplico tutti i pesi per 1000, i coefficienti stimati sono diversi:
glm(Y~1,weights=w*1000,family=binomial)
Call: glm(formula = Y ~ 1, family = binomial, weights = w * 1000)
Coefficients:
(Intercept)
-3.153e+15
Ho visto molti altri esempi come questo anche con un modesto ridimensionamento dei pesi. Cosa sta succedendo qui?
weights
argomento finisce in due punti all'interno dellaglm.fit
funzione (in glm.R ), che è ciò che fa il lavoro in R: 1) nei residui di devianza, tramite la funzione Cbinomial_dev_resids
(in family.c ) e 2) nell'IWLS tramiteCdqrls
(in lm.c ). Non conosco abbastanza C per essere di maggiore aiuto nel tracciare la logica