17 votos

Uso de la compensación en el modelo binomial para tener en cuenta el aumento del número de pacientes

Tengo dos preguntas relacionadas. 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 un incidente ocurrió ese día. Estoy utilizando un modelo binomial para hacer una regresión de la probabilidad de incidente sobre el número de pacientes. Sin embargo, me gustaría ajustar el hecho de que cuando hay más pacientes, inevitablemente habrá más incidentes porque la cantidad total de tiempo de los pacientes en la sala es mayor en ese día.

Así que estoy usando un modelo binomial compensado 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 la compensación? Quiero parcializar el aumento tónico de la probabilidad de incidencia y ver si queda algo, esencialmente. Para mí tiene sentido pero soy un poco cauteloso por si me equivoco.

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

    offset=log(Numbers)

No sé si hay un equivalente aquí y parece que no puedo encontrar ninguna compensación binomial con Google (el mayor problema es que sigo obteniendo binomios negativos que, por supuesto, no son buenos).

9voto

bheklilr Puntos 113

Esta respuesta tiene dos partes, la primera es una respuesta directa a la pregunta y la segunda un comentario sobre el modelo que propones.

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

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

Obsérvese que todo es igual, excepto el coeficiente de Números y la desviación nula (y el estadístico t, porque sigue probando contra 0 en lugar de -1).

La segunda parte está relacionada con el modelo que está construyendo. Dado que los incidentes se registran no como el número de incidentes en un día, sino si hay fueron cualquier incidente en un día, la probabilidad de observar un 1 en el día $t$ es $1-(1-p_t)^{N_t}$ , donde $N_t$ es el número de pacientes en el día $t$ y $p_t$ es la probabilidad por paciente de un incidente en el día $t$ . La función de enlace habitual, el logit, parametrizaría esto como $\log(1-(1-p_t)^{N_t})/N_t\log(1-p_t)$ . Esto indica que la relación entre la probabilidad de observar un 1 en el día $t$ y $N_t$ puede no estar bien modelada por una función lineal en la escala logit. (De todos modos, puede ser así, ya que cabría esperar algún "umbral" aproximado por debajo del cual la calidad de la atención al paciente está bien, pero por encima del cual la calidad de la atención al paciente desciende rápidamente). Si se invierte la definición de las probabilidades para desplazar el $N_t$ en el denominador en vez de en el numerador todavía te deja con esa incómoda exponencial dentro del logaritmo.

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

En cualquier caso, teniendo en cuenta esto y el rango limitado del número de pacientes que se observa, en lugar de utilizar un modelo que sea lineal en la escala logit, podría ser mejor ser no 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, construir variables ficticias para esos grupos, y luego ejecutar la regresión logística con las variables ficticias en el lado derecho. Esto permitirá captar mejor las relaciones no lineales, como "el sistema se sobrecarga en torno a los 16 pacientes y los incidentes empiezan a aumentar significativamente". Si tuviera un rango mucho más amplio de pacientes, sugeriría un modelo aditivo generalizado, por ejemplo, 'gam' del paquete 'mgcv'.

6voto

damd Puntos 116

Desplazamientos en las regresiones de Poisson

Empecemos por ver por qué utilizamos un desplazamiento en una regresión de Poisson. A menudo queremos hacerlo para controlar la exposición. Dejemos que $\lambda$ sea la tasa de referencia por unidad de exposición y $t$ sea el tiempo de exposición en las mismas unidades. El número esperado de eventos será $\lambda \times t$ .

En un modelo GLM estamos modelando el valor esperado utilizando una función de enlace $g$ Es decir

$$g(\lambda t_i) = \log(\lambda t_i) = \beta_0 + \beta_1x_{1,i} + \dots $$

donde $t_i$ es la duración de la exposición del individuo $i$ y $x_i$ es el valor de la covariable para el individuo $i$ . La elipsis simplemente indica los términos de regresión adicionales que podemos añadir.

Podemos simplificar la expresión anterior

$$\log(\lambda) = \log(t_i) + \beta_0 +\beta_1x_{1,i} + \dots$$

El $\log(t_i)$ es simplemente una "compensación" añadida a la regresión de Poisson, ya que no es un producto de ninguno de los parámetros del modelo que vamos a estimar.

Regresión binomial

En una regresión binomial, que suele utilizar un enlace logit, es decir:

$$g(p_i) = \textrm{logit}(p_i) = log\left(\frac{p_i}{1-p_i}\right) = \beta_0 +\beta_1x_{1,i}+\dots $$

Se puede ver que será difícil derivar un modelo para $p_i$ que producirá un desplazamiento constante.

Por ejemplo, si $p_i$ es la probabilidad de que una cualquier paciente el día $i$ 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 complemento de no incidencia, que determinar directamente la probabilidad de al menos un incidente.

Dejemos que $p_{i,j}^*$ sea la probabilidad de que un paciente $j$ teniendo un incidente en el día $i$ . La probabilidad de que ningún paciente tenga un incidente el día $i$ será $\prod_{j=1}^{N_i}(1-p^*_{i,j})$ , donde $N_i$ es el número de pacientes en el día $i$ . Por el complemento, la probabilidad de que al menos un paciente tenga un incidente será, $$p_i = 1-\prod_{j=1}^{N_i}(1-p^*_{i,j}).$$

Si estamos dispuestos a asumir que la probabilidad de que cualquier paciente tenga un incidente en cualquier día es la misma, podemos simplificar esto a $$p_i = 1-(q^*)^{N_i},$$ donde $q^*= 1-p^*$ y $p^*$ es la probabilidad de incidencia compartida.

Si sustituimos esta nueva definición de $p_i$ en nuestra función de enlace logit $g(p_i)$ lo mejor que podemos hacer en términos de simplificación y reordenación es $\log\left((q^*)^{-N} -1 \right)$ . Esto aún no nos deja con un término constante que pueda ser factorizado.

Por lo tanto, en este caso no podemos utilizar una compensación.

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

2voto

James Sutherland Puntos 2033

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

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

el desplazamiento representa los ensayos, incident es 0 o 1, y la probabilidad de un incidente es constante (no hay heterogeneidad en la tendencia a generar incidentes) y los pacientes no interactúan para causar incidentes (no hay contagio). Por otra parte, si la probabilidad de que se produzca un incidente es pequeña, como ocurre en su caso (o si ha establecido un umbral para los recuentos de incidentes sin decírnoslo), es posible que prefiera 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. La compensación 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 lo que cabría esperar simplemente por el aumento del número de pacientes. Es decir, tal vez los pacientes interactúen o sean heterogéneos. Así que se intenta

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

Si el coeficiente de log.patients.on.ward es significativamente diferente de 1, donde se fijó en mod2 entonces puede que algo esté mal en sus supuestos de no heterogeneidad y no contagio. Y aunque, por supuesto, no puede distinguir estas dos (ni ninguna de las otras variables que faltan), ahora tiene una estimación de cuánto aumenta el número de pacientes en la sala la tasa/probabilidad de un incidente por encima de lo que se esperaría del azar. En el espacio de los parámetros es 1-coef(mod3)[2] con intervalo derivable de confint .

También se puede trabajar directamente con la cantidad logarítmica y su coeficiente. Si sólo se quiere predecir la probabilidad de un incidente utilizando el número de pacientes en la sala, este modelo sería una forma sencilla de hacerlo.

Las preguntas

  1. ¿Está bien tener variables dependientes en su compensación? Me parece una muy mala idea, pero no veo que sea necesario.

  2. El desplazamiento en los modelos de regresión de Poisson para exposure es de hecho log(exposure) . Tal vez sea confuso el uso de offset en los modelos de regresión binomial de R es básicamente la forma de indicar el número de ensayos. Siempre se puede sustituir por una variable dependiente definida como cbind(incidents, patients.on.ward-incidents) y sin desplazamiento. Piénsalo así: en el modelo Poisson entra por la derecha detrás de la función de enlace log, y en el modelo Binomial entra por la izquierda delante de la función de enlace logit.

0voto

Berek Bryan Puntos 349

Parece más sencillo especificar un enlace logarítmico y mantener el desplazamiento como para un modelo de Poisson.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X