Uso de la compensación en el modelo binomial para dar cuenta de un mayor número de pacientes

18

Dos preguntas relacionadas de mi parte. Tengo un marco de datos que contiene números de pacientes en una columna (rango 10-17 pacientes) y 0s y 1s que muestran si ocurrió un incidente ese día. Estoy usando un modelo binomial para hacer retroceder la probabilidad de incidente en el número de pacientes. Sin embargo, me gustaría ajustar el hecho de que cuando haya más pacientes, inevitablemente habrá más incidentes porque la cantidad total de tiempo del paciente en la sala es mayor ese día.

Así que estoy usando un modelo binomial offset como este (código R):

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

Mis preguntas son:

  1. ¿Está bien tener exactamente las mismas variables prediciendo y en el desplazamiento? Quiero parcializar el aumento tónico en la probabilidad de incidentes y ver si queda algo, esencialmente. Tiene sentido para mí, pero soy un poco cauteloso en caso de estar equivocado.

  2. ¿Se ha especificado correctamente el desplazamiento? Sé que en los modelos de Poisson leería

    offset=log(Numbers)
    

No sé si hay un equivalente aquí y parece que no puedo encontrar ninguna compensación binomial con Google (el principal problema es que sigo obteniendo binomio negativo que, por supuesto, no es bueno).

Chris Beeley
fuente
2
¿No es lo que está buscando ajustar, precisamente lo que desea medir, es decir, cómo aumenta la probabilidad de "incidente" con el número de pacientes?
B_Miner
1
Necesito repetir el punto de B_Miner. Creo que estás confundido cuando / por qué se usa el desplazamiento en esta situación. Su modelo, sin desplazamiento, le proporcionará valores ajustados para la probabilidad de incidente en función del número de pacientes. Si está interesado en una forma funcional diferente, considere las transformaciones (como el registro o la exponenciación de #) en función de lo que es científicamente interesante.
AdamO
¿Puedes aclarar algo sobre los incidentes? ¿Se relaciona un incidente con un paciente o algo relacionado con la sala en su conjunto? Si está relacionado con pacientes, ¿es posible que haya> 1 incidente? Si no hay pacientes, ¿es imposible tener un incidente?
atiretoo
1
Aparentemente mi respuesta "no contiene suficientes detalles". He proporcionado un desarrollo teórico, un código ejecutable y respuestas a sus dos preguntas, así que ¿podría aclarar qué más se necesita?
conjugateprior
1
Lo sentimos, Conjugate Prior, tu respuesta es genial. Lo de "no suficiente detalle" fue la etiqueta agregada a la recompensa (es decir, estaba allí antes de publicar). Voy a aceptar cuándo termina la recompensa en caso de que alguien produzca una respuesta aún mejor, pero esto es poco probable y el tuyo es muy útil, gracias.
Chris Beeley

Respuestas:

17

Si está interesado en la probabilidad de un incidente dado N días de pacientes en la sala, entonces desea un modelo como:

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

el desplazamiento representa ensayos, incidentes 0 o 1, y la probabilidad de un incidente es constante (sin heterogeneidad en la tendencia a generar incidentes) y los pacientes no interactúan para causar incidentes (sin contagio). Alternativamente, si la posibilidad de un incidente es pequeña, lo cual es para usted (o ha aumentado el número de incidentes sin mencionarlo), entonces puede preferir la formulación de Poisson

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

donde se aplican los mismos supuestos. El desplazamiento se registra porque el número de pacientes en la sala tiene un efecto proporcional / multiplicativo.

Ampliando el segundo modelo, tal vez piense que hay más incidentes de los que se esperarían de otro modo simplemente debido al aumento en el número de pacientes. Es decir, quizás los pacientes interactúan o son heterogéneos. Entonces intentas

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

Si el coeficiente de encendido log.patients.on.wardes significativamente diferente de 1, donde se fijó mod2, entonces algo podría estar mal con sus suposiciones de no heterogeneidad ni contagio. Y aunque, por supuesto, no puede distinguir estas dos (ni una de las otras variables faltantes), ahora tiene una estimación de cuánto aumenta el número de pacientes en la sala aumenta la tasa / probabilidad de un incidente más allá de lo que esperar de la casualidad. En el espacio de parámetros es 1-coef(mod3)[2]con intervalo derivable de confint.

Alternativamente, puede trabajar directamente con la cantidad de registro y su coeficiente. Si solo desea predecir la probabilidad de incidente utilizando el número de pacientes en la sala, entonces este modelo sería una forma simple de hacerlo.

Las preguntas

  1. ¿Está bien tener variables dependientes en su desplazamiento? Me parece una muy mala idea, pero no veo que tengas que hacerlo.

  2. El desplazamiento en los modelos de regresión de Poisson exposurees de hecho log(exposure). Quizás, de manera confusa, el uso de offsetlos modelos de regresión binomial de R es básicamente una forma de indicar el número de ensayos. Siempre se puede reemplazar por una variable dependiente definida como cbind(incidents, patients.on.ward-incidents)y sin desplazamiento. Piénselo de esta manera: en el modelo de Poisson ingresa en el lado derecho detrás de la función de enlace de registro, y en el modelo Binomial ingresa en el lado izquierdo en frente de la función de enlace de registro.

conjugadoprior
fuente
18

Desplazamientos en regresiones de Poisson

Comencemos por ver por qué usamos un desplazamiento en una regresión de Poisson. A menudo queremos que esto se deba al control de la exposición. Sea la tasa de referencia por unidad de exposición y el tiempo de exposición en las mismas unidades. El número esperado de eventos será .λtλ×t

En un modelo GLM estamos modelando el valor esperado usando una función de enlace , es decirg

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

donde es la duración de la exposición para el individuo y es el valor covariable para el individuo . Los puntos suspensivos simplemente indican términos de regresión adicionales que podemos agregar.tiixii

Podemos simplificar simplificando la expresión anterior

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

El es simplemente un "desplazamiento" agregado a la regresión de Poisson ya que no es un producto de ninguno de los parámetros del modelo que estaremos estimando.log(ti)

Regresión binomial

En una regresión binomial, que generalmente usa un enlace logit, es decir:

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

Puede ver que será difícil derivar un modelo para que produzca un desplazamiento constante.pi

Por ejemplo, si es la probabilidad de que uno cualquier paciente en días tiene un incidente. Será una función de los pacientes individuales disponibles en ese día. Como dijo jboman, es más fácil derivar el cumplido de no incidencia, en lugar de determinar directamente la probabilidad de al menos un incidente. pii

Sea la probabilidad de que un paciente tenga un incidente el día . La probabilidad de que ningún paciente tenga un incidente el día será , donde es el número de pacientes el día . Por el cumplido, la probabilidad de que al menos un paciente tenga un incidente será, j i i N i j = 1pi,jjiij=1Ni(1pi,j)Nii

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

Si estamos dispuestos a asumir que la probabilidad de que un paciente tenga un incidente en cualquier día es la misma, podemos simplificar esto a donde y es la probabilidad de incidencia compartida.q = 1 - p p

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

Si sustituimos esta nueva definición de en nuestra función de enlace logit , lo mejor que podemos hacer en términos de simplificación y reorganización es . Esto todavía no nos deja con un término constante que se pueda factorizar. g ( p i ) log ( ( q ) - N - 1 )pig(pi)log((q)N1)

Como resultado, no podemos usar un desplazamiento en este caso.

Lo mejor que puede hacer es discretizar el problema (como lo sugiere jboman), puede crear contenedores para el número de pacientes y estimar un valor separado para para cada uno de estos contenedores. De lo contrario, deberá derivar un modelo más complicado.p

Jinete_X
fuente
2
+1, bienvenido al sitio, @Rider_X. Espero que podamos esperar más respuestas de este tipo en el futuro.
gung - Restablecer Monica
1
@gung - ¡Gracias! No había escuchado mucho sobre lo que pensé que era una respuesta útil, así que no he vuelto mucho. Tendré que cambiar eso. Saludos.
Rider_X
2
+1 Realmente aprecio las respuestas que explican la teoría y el razonamiento, en lugar de (o además de) mostrar qué código y comandos usar.
whuber
9

Esta respuesta viene en dos partes, la primera una respuesta directa a la pregunta y la segunda un comentario sobre el modelo que está proponiendo.

La primera parte se refiere al uso de Numberscomo un desplazamiento junto con tenerlo en la derecha de la ecuación. El efecto de hacer esto será simplemente restar 1 del coeficiente estimado de Numbers, invirtiendo así el efecto de la compensación, y de lo contrario no cambiará los resultados. El siguiente ejemplo, con algunas líneas de salida irrelevantes eliminadas, demuestra esto:

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

Observe cómo todo es igual excepto el coeficiente de Números y la desviación nula (y el estadístico t, porque todavía se está probando contra 0 en lugar de -1).

t1(1pt)NtNttpttlog(1(1pt)Nt)/Ntlog(1pt)tNtNt

También se podría sospechar que la probabilidad por paciente varía de paciente a paciente, lo que llevaría a un modelo jerárquico más complejo, pero no voy a entrar en eso aquí.

En cualquier caso, dado esto y el rango limitado del número de pacientes que observa, en lugar de utilizar un modelo lineal en la escala logit, podría ser mejor no ser paramétrico sobre la relación y agrupar el número de pacientes en tres o cuatro grupos, por ejemplo, 10-11, 12-13, 14-15 y 16-17, construyen variables ficticias para esos grupos, luego ejecutan la regresión logística con las variables ficticias en el lado derecho. Esto permitirá capturar mejor las relaciones no lineales, como "el sistema está sobrecargado alrededor de 16 pacientes y los incidentes comienzan a aumentar significativamente". Si tuviera una gama mucho más amplia de pacientes, sugeriría un modelo aditivo generalizado, por ejemplo, 'gam' del paquete 'mgcv'.

jbowman
fuente
0

Parece más simple especificar un enlace de registro y mantener el desplazamiento como para un modelo de Poisson.

una parada
fuente
2
Estoy seguro de que tienes razón, pero para mi beneficio, ¿cómo es esto un Poisson? Parece que el OP tiene un conjunto de datos con un resultado binario. ¿Sería esto glm (Incidente ~ Números, desplazamiento = log (Números), familia = poisson, datos = datos de amenaza)?
B_Miner