Использование смещения в биномиальной модели для учета увеличения числа пациентов


18

Два связанных вопроса от меня. У меня есть фрейм данных, который содержит количество пациентов в одном столбце (от 10 до 17 пациентов) и 0 и 1, показывающие, произошел ли инцидент в тот день. Я использую биномиальную модель, чтобы регрессировать вероятность инцидента на количество пациентов. Тем не менее, я хотел бы учесть тот факт, что когда будет больше пациентов, неизбежно будет больше инцидентов, потому что общее количество времени пациента в палате в этот день выше.

Поэтому я использую смещенную биномиальную модель, подобную этой (R-код):

glm(Incident~Numbers, offset=Numbers, family=binomial, data=threatdata)

Мои вопросы:

  1. Можно ли прогнозировать одинаковые переменные и в смещении? Я хочу частично отразить тоническое увеличение вероятности инцидента и посмотреть, осталось ли что-нибудь, по сути. Это имеет смысл для меня, но я немного осторожен на случай, если я ошибаюсь.

  2. Правильно ли указано смещение? Я знаю, что в моделях Пуассона это будет читать

    offset=log(Numbers)
    

Я не знаю, есть ли здесь эквивалент, и я не могу найти какие-либо биномиальные смещения в Google (главная проблема в том, что я продолжаю получать отрицательный бином, что, конечно, бесполезно).


2
Разве это не то, что вы хотите отрегулировать, а именно то, что вы хотите измерить - то есть, как вероятность «инцидента» увеличивается с увеличением количества пациентов?
B_Miner

1
Мне нужно повторить точку зрения B_Miner. Я думаю, вы смущены, когда / почему смещение используется в этой ситуации. Ваша модель без смещения даст вам подходящие значения вероятности инцидента в зависимости от количества пациентов. Если вас интересует другая функциональная форма, рассмотрите преобразования (например, log или возведение в степень #) на основе того, что является научно интересным.
AdamO

Можете ли вы уточнить кое-что об инцидентах? Связан ли инцидент с пациентом, или что-то с отделением в целом? Если это связано с пациентами, возможно ли, чтобы произошел> 1 инцидент? Если нет пациентов, невозможно ли иметь инцидент?
atiretoo

1
Очевидно, мой ответ «не содержит достаточно деталей». Я предоставил теоретическую разработку, исполняемый код и ответы на оба ваших вопроса, так что вы можете уточнить, что еще нужно?
conjugateprior

1
Извините, Conjugate Prior, ваш ответ отличный. «Недостаточно подробно» - это тег, добавленный к награде (т.е. был там до того, как вы опубликовали). Я собираюсь принять, когда щедрость заканчивается, на тот случай, если кто-то даст еще лучший ответ, но это маловероятно, и вы очень помогли, спасибо.
Крис Били

Ответы:


17

Если вас интересует вероятность инцидента с учетом N дней пребывания пациентов в палате, то вам нужна модель, например:

mod1 <- glm(incident ~ 1, offset=patients.on.ward, family=binomial)

смещение представляет испытания, incidentравное 0 или 1, и вероятность инцидента постоянна (нет разнородности в тенденции генерировать инциденты), и пациенты не взаимодействуют, чтобы вызвать инциденты (без заражения). В качестве альтернативы, если вероятность инцидента мала, что он для вас (или вы установили пороговое значение для количества инцидентов, не упомянув его нам), то вы можете предпочесть формулировку Пуассона

log.patients.on.ward <- log(patients.on.ward)
mod2 <- glm(incident ~ 1, offset=log.patients.on.ward, family=poisson)

где применяются те же предположения. Смещение зарегистрировано, потому что количество пациентов в палате имеет пропорциональный / мультипликативный эффект.

Если остановиться на второй модели, возможно, вы думаете, что произошло больше инцидентов, чем можно было бы ожидать, просто из-за увеличения числа пациентов. То есть, возможно, пациенты взаимодействуют или неоднородны. Так ты попробуй

mod3 <- glm(incident ~ 1 + log.patients.on.ward, family=poisson)

Если коэффициент on log.patients.on.wardзначительно отличается от 1, в котором он был зафиксирован mod2, то что-то может действительно не соответствовать вашим предположениям об отсутствии гетерогенности и отсутствии заразы. И хотя вы, конечно, не можете отличить эти два (ни один из них от других отсутствующих переменных), теперь у вас есть оценка того, насколько увеличение числа находящихся в отделении пациентов увеличивает вероятность / вероятность инцидентов сверх того, что вы ожидать от случая. В пространстве параметров это 1-coef(mod3)[2]с интервалом, полученным из confint.

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

Вопросы

  1. Можно ли иметь зависимые переменные в вашем смещении? Это звучит как очень плохая идея для меня, но я не вижу в этом необходимости.

  2. Смещение в моделях пуассоновской регрессии exposureдействительно есть log(exposure). Возможно, сбивает с толку использование offsetв биномиальных регрессионных моделях R в основном способ указать количество испытаний. Его всегда можно заменить зависимой переменной, определенной как cbind(incidents, patients.on.ward-incidents)и без смещения. Подумайте об этом так: в модели Пуассона он входит с правой стороны за функцией логарифмической ссылки, а в биномиальной модели - с левой стороны перед функцией логит-линка.


18

Смещения в пуассоновских регрессиях

Давайте начнем с рассмотрения того, почему мы используем смещение в регрессии Пуассона. Часто мы хотим из-за этого контролировать экспозицию. Пусть будет базовой скоростью на единицу экспозиции, а t будет временем экспозиции в тех же единицах. Ожидаемое количество событий будет λ × t .λTλ×T

В модели GLM мы моделируем ожидаемое значение, используя функцию связи , то естьграмм

грамм(λTя)знак равножурнал(λTя)знак равноβ0+β1Икс1,я+...

где - продолжительность воздействия для индивидуума i, а x i - ковариатное значение для индивидуума i . Многоточие просто указывает на дополнительные условия регрессии, которые мы можем захотеть добавить.tiixii

Мы можем упростить упрощение вышеприведенного выражения

log(λ)=log(ti)+β0+β1x1,i+

является просто «смещение» добавляется к регрессии Пуассона , как это не является продуктом какой - либо из параметров модели , которые мы будем оценивающих.log(ti)

Биноминальная регрессия

В биномиальной регрессии, в которой обычно используется ссылка logit, то есть:

g(pi)=logit(pi)=log(pi1pi)=β0+β1x1,i+

pi

pii

pi,jjiij=1Ni(1pi,j)Nii

pi=1j=1Ni(1pi,j).

pi=1(q)Ni,
q=1pp

pig(pi)log((q)N1)

В результате мы не можем использовать смещение в этом случае.

p


2
+1, добро пожаловать на сайт, @Rider_X. Я надеюсь, что мы можем ожидать больше таких ответов в будущем.
gung - Восстановить Монику

1
@ Gung - Спасибо! Я мало что слышал в ответ на то, что я считал полезным ответом, поэтому я не вернулся много. Я должен буду изменить это. С уважением.
Rider_X

2
+1 Я действительно ценю ответы, которые объясняют теорию и аргументацию, а не (или в дополнение к) показывают, какой код и команды использовать.
whuber

9

Этот ответ состоит из двух частей: первая - прямой ответ на вопрос, а вторая - комментарий к модели, которую вы предлагаете.

Первая часть относится к использованию Numbersв качестве смещения наряду с наличием его на правой части уравнения. Эффект от этого будет просто вычитать 1 из оцененного коэффициента Numbers, тем самым обращая вспять эффект смещения, и иначе не изменит результаты. Следующий пример, с удалением нескольких строк несущественного вывода, демонстрирует это:

library(MASS)
Numbers <- rpois(100,12)
p <- 1 / (1 + exp(0.25*Numbers))
y <- rbinom(100, Numbers, p)
Incident <- pmin(y, 1) 

> summary(glm(Incident~Numbers, family="binomial"))

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.3121  -1.0246  -0.8731   1.2512   1.7465  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)  
(Intercept)  0.99299    0.80624   1.232   0.2181  
Numbers     -0.11364    0.06585  -1.726   0.0844 . <= COEFFICIENT WITH NO OFFSET TERM
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 135.37  on 99  degrees of freedom
Residual deviance: 132.24  on 98  degrees of freedom
AIC: 136.24

> summary(glm(Incident~Numbers, offset=Numbers, family="binomial"))

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.3121  -1.0246  -0.8731   1.2512   1.7465  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  0.99299    0.80624   1.232    0.218    
Numbers     -1.11364    0.06585 -16.911   <2e-16 *** <= COEFFICIENT WITH OFFSET TERM
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 342.48  on 99  degrees of freedom
Residual deviance: 132.24  on 98  degrees of freedom
AIC: 136.24

Обратите внимание, что все одинаково, за исключением коэффициента чисел и нулевого отклонения (и t-статистики, потому что она по-прежнему проверяется на 0 вместо -1).

Вторая часть относится к модели, которую вы строите. Поскольку инциденты записываются не как количество инцидентов в день, а в том, были ли какие- либо инциденты в день, вероятность соблюдения 1 в деньT является 1-(1-пT)NT, где NT количество пациентов в день T и пT вероятность инцидента на пациента в день T, Обычная функция связи, logit, будет параметризовать это какжурнал(1-(1-пT)NT)/NTжурнал(1-пT), Это указывает на то, что связь между вероятностью наблюдения 1 в деньT и NTне может быть хорошо смоделирован линейной функцией на шкале логита. (Это может иметь место в любом случае, так как можно ожидать некоторый грубый «порог», ниже которого качество обслуживания пациентов в порядке, но выше которого качество ухода за пациентами быстро падает.) Изменение определения вероятностей с целью сдвигаNT в знаменателе вместо числителя по-прежнему оставляет вас с этой неловкой экспоненты внутри журнала.

Можно также подозревать, что вероятность для каждого пациента варьируется от пациента к пациенту, что приведет к более сложной иерархической модели, но я не буду вдаваться в подробности.

В любом случае, учитывая этот и ограниченный диапазон числа пациентов, которых вы наблюдаете, вместо того, чтобы использовать модель, которая является линейной по шкале логита, было бы лучше быть непараметрическим в отношении отношений и сгруппировать число пациентов в три или четыре группы, например 10-11, 12-13, 14-15 и 16-17, создают фиктивные переменные для этих групп, а затем запускают логистическую регрессию с фиктивными переменными справа. Это позволит лучше улавливать нелинейные отношения, такие как «система перегружена примерно у 16 ​​пациентов, и инциденты начинают значительно увеличиваться». Если бы у вас был гораздо более широкий круг пациентов, я бы предложил обобщенную аддитивную модель, например, «gam» из пакета «mgcv».


0

Кажется, проще всего указать лог-ссылку и сохранить смещение, как для модели Пуассона.


2
Я уверен, что вы правы, но для моего же блага, как это Пуассон? Похоже, у ОП есть набор данных с двоичным результатом. Будет ли это glm (Инцидент ~ Числа, смещение = журнал (Числа), семья = Пуассон, данные = Угроза данных) ??
B_Miner
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.