Как получить оценку и доверительный интервал для контраста в R со смещением

У меня есть модель Poisson GLM, встроенная в R, которая выглядит примерно так:

glm(Outcome~Exposure + Var1 + offset(log(persontime)),family=poisson,data=G))

Где Outcome в конечном итоге будет ставкой, Exposure — непрерывной переменной, а Var1 — фактором с тремя уровнями.

Это достаточно просто из вывода этого:

    Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept)   -5.6998     0.1963 -29.029  < 2e-16
Exposure       4.7482     1.0793   4.399 1.09e-05
Var1Thing1    -0.2930     0.2008  -1.459 0.144524    
Var1Thin       1.0395     0.2037   5.103 3.34e-07
Var1Thing3     0.7722     0.2201   3.508 0.000451

Чтобы получить оценку увеличения экспозиции на одну единицу. Но увеличение на одну единицу на самом деле не имеет особого смысла. Увеличение на 0,025 на самом деле гораздо более вероятно. Получить оценку для этого тоже несложно, но мне нужен доверительный интервал вместе с оценкой. Моя интуиция подсказывает, что мне нужно использовать контрастный пакет, но следующее сгенерировало ошибку:

diff <- contrast(Fit,list(Exposure=0.030,Var1="Thing1"),list(Exposure=0.005,Type="Thing1"))

«Ошибка в смещении (журнал (персональное время)) : объект« личное время »не найден»

Любая идея, что я делаю неправильно?


r glm
person Fomite    schedule 30.01.2015    source источник
comment
Измените масштаб интересующего вас предиктора. Если представляет интерес приращение 0,025, просто разделите экспозицию на этот коэффициент, выполните повторный запуск, и тогда вы получите увеличение на одну единицу и соответствующую стандартную ошибку. (Это будет линейно, поэтому отношение coef к se будет одинаковым.)   -  person IRTFM    schedule 30.01.2015


Ответы (1)


вы хотите использовать функцию confint (которая в данном случае вызовет метод MASS:::confint.glm), например:

confint(Fit)

Поскольку стандартные ошибки представляют собой линейный масштаб модели с линейными изменениями масштаба переменной «Экспозиция» в вашей модели, вы можете просто умножить доверительный интервал на разницу в масштабе, чтобы получить достоверность для меньшего «единичного» изменения.

Тупой пример:

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

Fit <- glm(falls ~ alcohol_ml,data=myData, family=poisson)

и таблица коэффициентов

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept)   -5.6998     0.1963 -29.029  < 2e-16
Alcohol_ml     4.7482     1.0793   4.399 1.09e-05

а Доверительный интервал для алкоголя 4-6 (просто соблюсти). Теперь коллега просит вас указать доверительный интервал в унциях. Все, что вам нужно сделать, это масштабировать доверительный интервал с помощью коэффициента преобразования (29,5735 унций на мл), как в:

c(4,6) * 29.5735 # effect per ounce alcohol [notice multiplication is used to rescale here]

в качестве альтернативы вы можете повторно масштабировать свои данные и перестроить модель:

mydata$alcohol_oz <- mydata$alcohol_ml / 29.5735 #[notice division is used to rescale here]
Fit <- glm(falls ~ alcohol_oz,data=myData, family=poisson)

или вы можете масштабировать свои данные прямо в модели:

#[again notice that division is used here]
Fit <- glm(falls ~ I(alcohol_ml/29.5735),data=myData, family=poisson)

В любом случае вы получите те же самые доверительные интервалы на новой шкале.

Вернемся к вашему примеру: если ваши единицы Exposure настолько велики, что вы вряд ли заметите такое изменение внутри человека, а меньшее изменение легче интерпретировать, просто измените масштаб вашей переменной «Экспозиция» (как в myData$Exposure_newScale = myData$Exposure / 0.030 так Exposure_newScale кратно 0.030), или измените масштаб доверительных интервалов, используя любой из этих методов.

person Jthorpe    schedule 30.01.2015
comment
confint даст мне доверительные интервалы для оценки, которая, возведенная в степень, даст мне доверительные интервалы для увеличения на одну единицу. С оценкой я мог бы сказать, что нужно взять exp(estimate*0,025), чтобы получить то, что я хотел, но могу ли я сделать это с доверительными интервалами? Я всегда ненавидел контрасты... - person Fomite; 30.01.2015
comment
Хм.. Я подумаю об этом. Я должен бежать сейчас, хотя - person Jthorpe; 30.01.2015
comment
Я расширил ответ, исходя из предположения, что ваша проблема с регрессией fit заключалась в том, что изменение переменной Exposure на одну единицу было слишком большим для интерпретации. - person Jthorpe; 30.01.2015