6 votos

Interpretando las razones de probabilidades

Tengo el siguiente conjunto de resultados obtenidos en uno de los factores (peso al nacer) con diferentes niveles y sus correspondientes índices de Probabilidades de supervivencia. Estoy usando el primer nivel (<1.25) como el nivel de referencia:

El peso al nacimiento (kg):

Levels      Number/level    Odds Ratio
<1.25       1615            1.00
1.25-1.46   1617            1.37
1.46-1.65   1462            1.25
1.65-1.87   1632            1.68
>1.87       1466            2.35

A partir de este resultado, estoy tratando de estimar, mediante el uso de la O, el número aproximado de los recién nacidos que sobreviven en cada nivel.

Hay maneras de que esto puede lograrse mediante la R?

En un cálculo separado, el número real de supervivencia de cada nivel se muestra a continuación:

Levels      Number/level    Odds Ratio    Actual number survived
<1.25       1615            1.00         1088
1.25-1.46   1617            1.37         1346
1.46-1.65   1462            1.25         1238
1.65-1.87   1632            1.68         1447
>1.87       1466            2.35         1351

EDITAR: Lo anterior es sólo uno de los factores independientes de mi modelo.

mod <- glm(formula = surv ~ as.factor(var1) + as.factor(var2)+...as.factor(varn)+family = binomial(link = "logit"), data=mydf)


summary(mod)

glm(formula = surv ~ as.factor(season) + as.factor(bwt5) + as.factor(prectem5) + 
    as.factor(pcscore) + as.factor(pindx5) + as.factor(presp2) + 
    as.factor(ppscore) + as.factor(mtone2) + as.factor(fos) + 
    as.factor(psex) + as.factor(pscolor) + as.factor(pshiv) + 
    as.factor(backfat5) + as.factor(srect2) + as.factor(gest3) + 
    as.factor(int3) + as.factor(agit) + as.factor(tacc), family = binomial(link = "logit"), 
    data = lesna)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-3.0562   0.3120   0.4478   0.5929   1.9412  

Coefficients:
                      Estimate Std. Error z value Pr(>|z|)    
(Intercept)           1.441842   0.290536   4.963 6.95e-07 ***
as.factor(season)2   -1.064053   0.107666  -9.883  < 2e-16 ***
as.factor(bwt5)2      0.314332   0.099776   3.150 0.001631 ** 
as.factor(bwt5)3      0.223824   0.110566   2.024 0.042935 *  
as.factor(bwt5)4      0.524586   0.120182   4.365 1.27e-05 ***
as.factor(bwt5)5      0.854196   0.138993   6.146 7.97e-10 ***
as.factor(prectem5)2  0.745025   0.094238   7.906 2.66e-15 ***
as.factor(prectem5)3  0.856777   0.098326   8.714  < 2e-16 ***
as.factor(prectem5)4  0.997219   0.111529   8.941  < 2e-16 ***
as.factor(prectem5)5  0.930925   0.120052   7.754 8.88e-15 ***
as.factor(pcscore)2   0.384534   0.137564   2.795 0.005185 ** 
as.factor(pcscore)3   0.668390   0.154608   4.323 1.54e-05 ***
as.factor(pindx5)2    0.243485   0.101755   2.393 0.016718 *  
as.factor(pindx5)3    0.262779   0.108809   2.415 0.015733 *  
as.factor(pindx5)4    0.595672   0.118124   5.043 4.59e-07 ***
as.factor(pindx5)5    0.467277   0.120401   3.881 0.000104 ***
as.factor(presp2)2   -0.286214   0.126012  -2.271 0.023127 *  
as.factor(ppscore)2  -0.246369   0.093568  -2.633 0.008462 ** 
as.factor(mtone2)2   -0.482397   0.118218  -4.081 4.49e-05 ***
as.factor(fos)2      -0.255652   0.075749  -3.375 0.000738 ***
as.factor(psex)2      0.182437   0.066964   2.724 0.006442 ** 
as.factor(pscolor)2  -0.694197   0.282069  -2.461 0.013852 *  
as.factor(pshiv)2    -0.241515   0.080792  -2.989 0.002796 ** 
as.factor(backfat5)2 -0.309427   0.104176  -2.970 0.002976 ** 
as.factor(backfat5)3 -0.004152   0.108669  -0.038 0.969523    
as.factor(backfat5)4  0.013233   0.103491   0.128 0.898257    
as.factor(backfat5)5 -0.221935   0.104639  -2.121 0.033926 *  
as.factor(srect2)2   -0.236981   0.104962  -2.258 0.023960 *  
as.factor(gest3)2     0.207375   0.106065   1.955 0.050562 .  
as.factor(gest3)3     0.904959   0.191307   4.730 2.24e-06 ***
as.factor(int3)2     -0.204870   0.127674  -1.605 0.108573    
as.factor(int3)3     -1.271092   0.388924  -3.268 0.001082 ** 
as.factor(agit)2     -0.496856   0.157553  -3.154 0.001613 ** 
as.factor(agit)3     -0.360247   0.148520  -2.426 0.015284 *  
as.factor(tacc)2     -0.282180   0.090556  -3.116 0.001833 ** 
as.factor(tacc)3     -0.429249   0.082520  -5.202 1.97e-07 ***
---
Signif. codes:  0 ‘***' 0.001 ‘**' 0.01 ‘*' 0.05 ‘.' 0.1 ‘ ' 1 

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 7096.2  on 7791  degrees of freedom
Residual deviance: 6143.0  on 7756  degrees of freedom
AIC: 6215

Number of Fisher Scoring iterations: 5

exp(mod$coefficients) # odds ratios
         (Intercept)   as.factor(season)2     as.factor(bwt5)2 
           4.2284770            0.3450544            1.3693441 
    as.factor(bwt5)3     as.factor(bwt5)4     as.factor(bwt5)5 
           1.2508506            1.6897596            2.3494840 
as.factor(prectem5)2 as.factor(prectem5)3 as.factor(prectem5)4 
           2.1064944            2.3555559            2.7107340 
as.factor(prectem5)5  as.factor(pcscore)2  as.factor(pcscore)3 
           2.5368547            1.4689297            1.9510940 
  as.factor(pindx5)2   as.factor(pindx5)3   as.factor(pindx5)4 
           1.2756866            1.3005395            1.8142499 
  as.factor(pindx5)5   as.factor(presp2)2  as.factor(ppscore)2 
           1.5956440            0.7511016            0.7816335 
  as.factor(mtone2)2      as.factor(fos)2     as.factor(psex)2 
           0.6173022            0.7744113            1.2001382 
 as.factor(pscolor)2    as.factor(pshiv)2 as.factor(backfat5)2 
           0.4994756            0.7854368            0.7338673 
as.factor(backfat5)3 as.factor(backfat5)4 as.factor(backfat5)5 
           0.9958568            1.0133207            0.8009678 
  as.factor(srect2)2    as.factor(gest3)2    as.factor(gest3)3 
           0.7890065            1.2304445            2.4718305 
    as.factor(int3)2     as.factor(int3)3     as.factor(agit)2 
           0.8147530            0.2805250            0.6084405 
    as.factor(agit)3     as.factor(tacc)2     as.factor(tacc)3 
           0.6975039            0.7541382            0.6509975 

exp(coef(mod)) #exponentiated coefficients
exp(confint(mod)) # 95% CI

EJECUTAR EL SCRIPT SIN type="respuesta"

> (pred1s <- predict(mod,newdata=as.data.frame(with(lesna,list(season=1,bwt5=1,
+            prectem5=1,pcscore=1,pindx5=1,presp2=1,ppscore=1,mtone2=1 .... [TRUNCATED] 
       1 
1.441842

EJECUTANDO EL SCRIPT type="respuesta":

> (pred1s <- predict(mod,newdata=as.data.frame(with(lesna,list(season=1,bwt5=1,
+            prectem5=1,pcscore=1,pindx5=1,presp2=1,ppscore=1,mtone2=1 .... [TRUNCATED] 
        1 
0.8087397

4voto

guest Puntos 1851

Odds ratios son una medida de la diferencia en las tasas entre los dos grupos. Así, no tiene sentido hablar solo de la "odds ratio" para un solo grupo, usted tiene que decir lo que usted está comparando a dicho grupo.

Usted puede encontrar que es más fácil empezar con más fundamentales de la cantidad, el odds - en realidad esto es sólo otra manera de expresar la probabilidad. Las probabilidades de un evento es la probabilidad de que suceda dividido por la probabilidad de que no suceda. Así, si la probabilidad de que un evento ocurra es de 0.8 (es decir, 80%), a continuación, sus probabilidades son 0.8/0.2=4.

En tu ejemplo, no estoy totalmente seguro de lo de "Número" de los medios de que se es que el número de niños, o el número de bebés que sobrevivieron? Desde su primera tabla, para calcular lo que usted desea, usted necesitará las Probabilidades en (al menos) un grupo, no sólo de los Odds Ratios.

Por último, si esta es la tarea, puede agregar una tarea etiqueta?

4voto

aron Puntos 174

El hecho de que estos son los coeficientes están representados enteramente por factores en la R significa que la intersección es el log-odds para el evento, me.correo de registro(la proporción de eventos / proporción sin) para los sujetos que todos tienen sus valores de factor en el nivel más bajo. Sabemos que de la de 1615 en el nivel 1 del factor de bajo escrutinio, 1088 sobrevivido, aunque 1088/(1615-1088) (= probabilidades de supervivencia determinado factor =1) no es necesariamente va a coincidir con exp(Intercept) ya que no todas esas personas también había otros factores en el nivel más bajo. De hecho, las probabilidades de supervivencia (o podría ser la muerte, ya que en realidad no se ha dejado clara cuál es la codificación de los eventos fue) era muy diferente. En el mejor de los casos de todos los factores y = 1 las probabilidades de supervivencia fueron:

exp( 4.2284770 )
[1] 68.61266

Que en realidad es un muy bajas probabilidades de supervivencia de los recién nacidos, por lo que esta debe haber sido una UCIN de estudio o de algo que está sucediendo en un tercer mundo condado. Pero su forma más elevada que las probabilidades para todos los niños que había que valor y cualquier otro valor que para el resto de los predictores. (Cuando se mira en la única línea de datos no fue ... fue en una especie diferente.) En R el camino para conseguir una rápida estimación de la probabilidad de supervivencia sería:

 (pred1s <- predict(mod, newdata=as.data.frame( with( lesna, 
   list( seas = 1 , 
        btw=1 , prectem5 =1 , 
        pcscore =1 , pindx5 =1 ,
        presp2= 1 ,   ppscore=  1,
        mtone2 = , fos =  , 
        psex =  1 , pscolor = 1, 
        pshiv =1 ,    backfat5= 1 , 
        srect2 =levels(srect2)[1] , gest3 =1 , 
        int3= 1 , agit= 1 , tacc =1 ) )
                               ), 
      type="response"  )
)        # the outer parens are to get a value to print when the assignment is made

Usted puede comparar la exp(Intercept) para que ( atípicos ) predicción dividido por (1-predicción) ... desde ese cuáles son las probabilidades. Así que espero que esto se hace claro. Usted necesita para especificar todos los niveles del factor de valores a la vez para obtener una predicción. O usted necesita para crear una cohorte sintética con una composición específica de todos los niveles del factor. Usted puede tomar un único factor de distribución y crear una predicción de un modelo complejo, a menos que se especifique algún tipo de valor medio de todos los otros factores.

Editar después de mirar la única línea de datos:

Algunos (la mayoría de hecho) de las variables no fueron factores, (y supongo que debería haber reconocido que), lo que significa que no tienen ningún nivel en la dataframe, pero no tienen los niveles en el modelo de la matriz. Yo había asumido que los niveles de los atributos de la variable de factor, pero estaba equivocado. Va a ser más fácil trabajar en este modelo si la estructura de su 'nuevosdatos' argumentos dados a predict tienen la misma estructura que el original dataframe y me gustaría considerar seriamente la posibilidad de hacer una copia y hacer que todos los elementos de los factores. Pero con la excepción de "srect2" podemos cambiar todos los elementos de a 1. al menos bajo el supuesto de que ese es el valor mínimo para cada una de esas variables. Si no, ..., entonces usted necesita utilizar el valor mínimo. Código editado.

valor de respuesta calculado:

1.4418 es la log-odds ( el Intercepto en el predictor lineal fpr de la línea de base de la categoría)

odds = Pr(X=1)/(1-Pr(X=1)) :: definición

registro(odds) = log(Pr(X=1)/(1-Pr(X=1)) ) = 1.4418 :: punto de partida

Resolver para Pr(X=1) ... debe ser = calcula como la "respuesta" de valor.

exp(1.4418)*(1 - Pr(X=1) ) = Pr(X=1)

exp(1.4418) = (1+exp(1.4418))* Pr(X=1)

Pr(X=1) = exp(1.4418) / (1+exp(1.4418))

> exp(1.4418) / (1+exp(1.4418))
[1] 0.8087332

Todos los otros niveles necesitan tener la intersección añadido para conseguir su correcta lineal predictores. La diferencia en log-odds, es decir, los coeficientes, es directamente equivalente a la proporción en la escala de probabilidades, por lo tanto la exp(coef) es un montón de probabilidades de ocurrencia.

{ log(x-y) = c  }    <=>      { x/y = exp(c) }

--

2voto

Zizzencs Puntos 1358

Usted puede obtener la predicción de la probabilidad de supervivencia de una regresión logística del programa. En R, fitted() le da equipada probabilidades para cada persona. El código sería algo como:

model1 <- glm(survival~birthweight, family = binomial)
fitted(model1)

Y se puede extraer a partir de que el valor de diferente peso al nacer.

Alternativamente, usted puede obtener los coeficientes del modelo (uso coef() en R) y, a continuación, utilizar la fórmula

$\pi(x) = \frac{e^{(\beta_0 + \beta_1 X_1 + e)}} {e^{(\beta_0 + \beta1 X_1 + e)} + 1} = \frac {1} {e^{-(\beta_0 + \beta_1 X_1 + e)} + 1}$

donde el $\beta$ son los coeficientes y el $X$ son las variables (usted tendrá que ajustar si usted tiene más de una variable independiente)

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