Воскрешение коэффициентов из смоделированных данных в регрессии Пуассона

Я пытаюсь понять, как воскресить оценки модели из смоделированных данных в регрессиях Пуассона. Есть и другие похожие сообщения об интерпретации коэффициентов на StackExchange / CrossValidated (https://stats.stackexchange.com/questions/11096/how-to-interpret-coefficients-in-a-poisson-regression, https://stats.stackexchange.com/questions/128926/как-интерпретировать-параметры-оценки-в-пуассоне-glm-results), но я думаю, что мой вопрос другой (хотя, по общему признанию, связанный). Я пытаюсь воскресить известные отношения, чтобы понять, что происходит с моделью. Я публикую здесь вместо CrossValidated, потому что я думаю, что это не столько статистическая интерпретация, сколько то, как я мог бы получить известную / смоделированную связь с помощью кода.

Вот некоторые смоделированные данные y и x с известными отношениями к некоторому ответу resp

set.seed(707)
x<-rnorm(10000,mean=5,sd=1)
y<-rnorm(10000,mean=5,sd=1)        
resp<-(0.5*x+0.7*y-0.1*x*y) # where I define some relationships

С линейной регрессией все очень просто:

summary(lm(resp~y+x+y:x))

Выходные данные показывают точную линейную зависимость между x, y и взаимодействием.

Coefficients:
              Estimate Std. Error    t value Pr(>|t|)    
(Intercept)  1.592e-14  1.927e-15  8.260e+00   <2e-16 ***
y            7.000e-01  3.795e-16  1.845e+15   <2e-16 ***
x            5.000e-01  3.800e-16  1.316e+15   <2e-16 ***
y:x         -1.000e-01  7.489e-17 -1.335e+15   <2e-16 ***

Теперь, если меня интересует регрессия Пуассона, мне нужны целые числа, я просто округляю, но сохраняю связь между предикторами и ответом:

resp<-round((0.5*x+0.7*y-0.1*x*y),0)
glm1<-glm(resp~y+x+y:x,family=poisson())
summary(glm1)

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept)  0.419925   0.138906   3.023   0.0025 ** 
y            0.163919   0.026646   6.152 7.66e-10 ***
x            0.056689   0.027375   2.071   0.0384 *  
y:x         -0.011020   0.005261  -2.095   0.0362 *  

Насколько я понимаю, из-за функции ссылки нужно возвести в степень результаты, чтобы понять их. Но здесь ни экспоненциальная оценка, ни перехват + оценка не вернут меня к исходным значениям.

> exp(0.419925+0.163919)
[1] 1.792917
> exp(0.163919)
[1] 1.178119

Как интерпретировать эти значения как связанные с исходным 0.7*y отношением?

Теперь, если я помещу то же линейное уравнение в экспоненциальную функцию, я получу значения напрямую - не нужно использовать exp():

resp<-round(exp(0.5*x+0.7*y-0.1*x*y),0)
summary(glm(resp~y+x+y:x,family=poisson()))
Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept)  0.002970   0.045422   0.065    0.948    
y            0.699539   0.008542  81.894   <2e-16 ***
x            0.499476   0.008912  56.047   <2e-16 ***
y:x         -0.099922   0.001690 -59.121   <2e-16 ***

Может ли кто-нибудь объяснить мне, что я здесь неправильно интерпретирую, и как я могу найти исходные значения известной взаимосвязи без предварительного использования функции exp(), как указано выше?


person Dylan_Gomes    schedule 30.05.2020    source источник


Ответы (1)


Вы игнорируете тот факт, что Poisson GLM по умолчанию использует ссылку журнала (экспоненциальную обратную ссылку) (или, скорее, вы не используете эту информацию последовательно). Вы должны либо сгенерировать свои «данные» с экспоненциальной обратной ссылкой:

resp <- round(exp(0.5*x+0.7*y-0.1*x*y))

или соответствовать модели с идентификационной ссылкой (family=poisson(link="identity")). (Я бы не рекомендовал последнее, так как это редко бывает разумной моделью.)

Как бы то ни было, сложнее смоделировать пуассоновские данные, которые будут точно соответствовать указанному набору параметров, потому что (в отличие от гауссовского, где вы можете уменьшить дисперсию до произвольно малых значений), вы не можете сгенерировать реальные Данные Пуассона с произвольно малым шумом. (Ваш оператор round() дает целые числа, но не результаты, распределенные по Пуассону.)

person Ben Bolker    schedule 30.05.2020
comment
Думаю, в этом есть смысл. Можно ли с уверенностью сказать, что неразумно думать об этих коэффициентах не в логарифмической шкале? Или, другими словами, не имеет смысла генерировать данные без экспоненциальной обратной ссылки, потому что ссылка журнала сделает отношения нелинейными? - person Dylan_Gomes; 30.05.2020
comment
Да, за исключением случаев, когда (1) вы собираетесь использовать пуассоновскую связь с идентификационной информацией или (2) вы намеренно пытаетесь понять последствия неправильной спецификации модели (т.е. линейная зависимость). - person Ben Bolker; 30.05.2020