Pesos e deslocamento podem levar a resultados semelhantes na regressão de poisson?

8

No "Guia do praticante para modelos lineares generalizados" no parágrafo 1.83, afirma-se que:

"No caso particular de um GLM multiplicativo de Poisson, pode ser demonstrado que a reivindicação de modelagem conta com um termo de compensação igual ao logaritmo da exposição produziu resultados idênticos aos da modelagem de frequências de reivindicação com pesos anteriores configurados para serem iguais à exposição de cada observação. "

Não consigo encontrar mais referências desses resultados, por isso fiz alguns testes empíricos nos quais não consegui encontrar provas de que a afirmação está correta. Alguém pode fornecer algumas dicas sobre por que esses resultados podem estar certos / errados.

Para sua informação, usei o seguinte código R para testar a hipótese, na qual não foi possível obter resultados semelhantes para os dois casos mencionados:

n=1000
m=10

# Generate random data
X = matrix(data = rnorm(n*m)+1, ncol = m, nrow = n)

intercept = 2
coefs = runif(m)
offset = runif(n)
## DGP: exp of Intercept + linear combination X variables + log(offset)
mu = exp(intercept + X%*%coefs + log(offset))
y = rpois(n=n, lambda=mu)

df = data.frame('y'=y, 'X'=X, 'offset' = offset)
formula = paste("y ~",paste(colnames(df)[grepl("X", colnames(df))], collapse = "+"))

#First model using log(offset) as offset
fit1  = glm(formula, family = "poisson", df, offset = log(offset))
#Second model using offset as weights for individual observations
fit2 = glm(formula, family = "poisson", df, weights = offset) 
#Third model using poisson model on y/offset as reference
dfNew = df
dfNew$y = dfNew$y/offset
fit3 = glm(formula, family = "poisson", dfNew)

#Combine coefficients with the true coefficients
rbind(fit1$coefficients, fit2$coefficients, fit3$coefficients, c(intercept,coefs))

As estimativas do coeficiente resultantes da execução desse código são fornecidas abaixo:

 >  
    (Intercept)       X.1       X.2       X.3        X.4       X.5       X.6
[1,]    1.998277 0.2923091 0.4586666 0.1802960 0.11688860 0.7997154 0.4786655
[2,]    1.588620 0.2708272 0.4540180 0.1901753 0.07284985 0.7928951 0.5100480
[3,]    1.983903 0.2942196 0.4593369 0.1782187 0.11846876 0.8018315 0.4807802
[4,]    2.000000 0.2909240 0.4576965 0.1807591 0.11658183 0.8005451 0.4780123
              X.7       X.8       X.9      X.10
[1,]  0.005772078 0.9154808 0.9078758 0.3512824
[2,] -0.003705015 0.9117014 0.9063845 0.4155601
[3,]  0.007595660 0.9181014 0.9076908 0.3505173
[4,]  0.005881960 0.9150350 0.9084375 0.3511749
> 

e podemos observar que os coeficientes não são idênticos.

BDP1
fonte
1
Você realmente não deve incluir o rm(list=ls() )código R postado aqui! Isso poderia surpreender alguém executando, deixando-os com raiva de você. Eu removi isso. Também editei para incluir os resultados da execução do código. Se você fez isso originalmente, talvez tenha obtido uma resposta mais rápida, pois poucos leitores executam o código por si mesmos.
Kjetil b halvorsen
1
@kjetilbhalvorsen Obrigado pelo feedback, fará no futuro.
BDP1 24/08/19
@ BDP1 Como está agora, o seu código R não está testando a reivindicação a que você está se referindo. Sugiro que você adicione o termo de peso para o fit3 e adicione um adendo diretamente à pergunta.
aivanov

Respostas:

7

(com seu código R, você pode substituir "poisson" por "quasipoisson" para evitar todos os avisos gerados. Nada mais será importado. Consulte (*) abaixo). Sua referência usa o termo "glm multiplicativo", que eu acho que significa apenas um glm com link de log, pois um link de log pode ser pensado como um modelo multiplicativo. Seu próprio exemplo mostra que a afirmação é falsa, pelo menos como a interpretamos (como os parâmetros estimados não são iguais). Você pode escrever os autores e perguntar o que eles significaram. Abaixo discutirei por que a alegação é falsa.

λiωiηiηi+log(ωi)

f(yi)=eλiλiyi/yi!
=iωieηi+iyiηi+iyilogωiilogyi!
w=iωieηi+iyiωiηiiωilogyi!

(*) Nota da ajuda da glmfunção de R :

Pesos não 'NULL' podem ser usados ​​para indicar que observações diferentes têm dispersões diferentes (com os valores em 'pesos' sendo inversamente proporcionais às dispersões); ou equivalente, quando os elementos de 'pesos' são números inteiros positivos w_i, que cada resposta y_i é a média de w_i observações de peso unitário. Para um GLM binomial, pesos anteriores são usados ​​para fornecer o número de tentativas quando a resposta é a proporção de sucessos: raramente seriam usados ​​para um GLM de Poisson.

ϕ=1ϕ

A resposta dada aqui pode ser relevante: Como uma regressão da taxa de Poisson é igual a uma regressão de Poisson com o termo de deslocamento correspondente? e é muito interessante.

kjetil b halvorsen
fonte
Obrigado pela resposta. Passar pelas contribuições de probabilidade esclarece muito. Ao pesquisar um pouco mais em resposta à sua resposta, encontrei a seguinte pergunta: stats.stackexchange.com/questions/66791/… Na qual é mostrado que, dividindo a resposta original pelo deslocamento e definindo a variável de deslocamento como pesos, os mesmos resultados podem ser obtidos como o modelo da linha de base, onde o registo de (offset) entra no preditor linear com um coeficiente constante de 1.
BDP1
(yi/wi)!
Pelo menos no experimento no script R fornecido, essa afirmação parece ser verdadeira. isso pode ser easilly visto, adicionando pesos = compensar argumento na linha de Flt3 = glm (...)
BDP1
Eu não entendo o que você diz aqui, se você acha que seu experimento corrobora, por que não editar essa alteração na exposição ao OP e explicar por que você acha que corrobora a afirmação. Tentei explicar por que não é verdade, o que há de errado com meu argumento?
precisa saber é o seguinte
1
A citação do Guia do Profissional está realmente correta, mas não foi implementada corretamente pelo OP. Isso foi apontado por Alan Chalk em outra resposta aqui, por mim stats.stackexchange.com/questions/430001 e também por Cokes stats.stackexchange.com/questions/264071 (embora a conclusão correta esteja oculta na última linha de essa resposta).
Gordon Smyth
4

Desculpe por não simplesmente adicionar um comentário acima, mas eu não tenho representante suficiente.

A reivindicação original - mas modificada um pouco - é de fato correta.

Os dois modelos a seguir dão exatamente a mesma resposta em R usando um poisson glm com log-link:

  • modelo y, use um deslocamento sendo log (deslocamento)
  • modelo y / deslocamento, use pesos iguais ao deslocamento

o ajuste do código original mostra respostas idênticas:

n=1000
m=10

# Generate random data
X = matrix(data = rnorm(n*m)+1, ncol = m, nrow = n)

intercept = 2
coefs = runif(m)
offset = runif(n)
## DGP: exp of Intercept + linear combination X variables + log(offset)
mu = exp(intercept + X%*%coefs + log(offset))
y = rpois(n=n, lambda=mu)

df = data.frame('y' = y,
                'y_over_offset' = y/offset,
                'X' = X,
                'offset' = offset)

formula_offset = paste("y ~",paste(colnames(df)[grepl("X", colnames(df))], collapse = "+"))
formula_weights = paste("y_over_offset ~",paste(colnames(df)[grepl("X", colnames(df))], collapse = "+"))

#First model using log(offset) as offset
fit1  = glm(formula_offset, family = "poisson", df, offset = log(offset))
#Second model using offset as weights for individual observations
fit2 = glm(formula_weights, family = "poisson", df, weights = offset) 


#Combine coefficients with the true coefficients
rbind(fit1$coefficients, fit2$coefficients, c(intercept,coefs))

Espero que isso dê respostas idênticas.

É possível mostrar que os dois modelos são estatisticamente equivalentes (há um documento CAS em algum lugar que mostra isso - eu postarei um link se tiver tempo).

Aliás, se você estiver fazendo regressão penalizada, a maneira como diferentes pacotes, como glmnet e H2o, medem o desvio para as duas maneiras diferentes de definir um modelo, pode levar a resultados diferentes.

Alan Chalk
fonte
1
Pergunta rápida, você pode ver que, com o ajuste2, você não tem um AIC e os gráficos entre os dois ajustes são um gráfico ligeiramente diferente (ajuste1); plot (fit2) - também você sabe por que isso acontece?]
Charl Francois Marais