En R, usando binomial() y lapply para restringir los valores de predicción() entre 0 y 1

StackOverflow https://stackoverflow.com//questions/9610318

  •  09-12-2019
  •  | 
  •  

Pregunta

Tengo un modelo GLM, family=binomial(link=logit) que aplico dentro de una función predict(), como se ve a continuación.Los valores de predicción van más allá de cero y 1, pero me gustaría mantenerlos como probabilidades.Entonces uso el comando binomial()$inverse que luego se puede usar en la función de aplicación.

Esto funcionó bien la primera vez que lo ejecuté, pero después de cerrar R y comenzar de nuevo, aparece este error:

     Error in get(as.character(FUN), mode = "function", envir = envir) : 
     object 'ilogit' of mode 'function' was not found"

He estado luchando con esto durante horas, ya que este código normalmente funcionaba.¿Alguien tiene una idea de lo que estoy haciendo mal?¿Existe una mejor manera de hacer esto?

Mi código está debajo.También probé otra variación pero no puedo hacer que funcione.

    ## predicted probabilities 
    pp <- predict(logit_model,
            newdata=data,
            type="link",
            se.fit=T)

   ilogit <- binomial()$inverse
   yhat_prob <- lapply(pp,ilogit) #converts to probabilities
¿Fue útil?

Solución

Si quieres las probabilidades, puedes tenerlas directamente con type="response", como se explica en la documentación, ?pregict.glm.

Para el mensaje de error que recibe, probablemente necesite binomial()$linkinv.

> str( binomial() )
List of 12
 $ family    : chr "binomial"
 $ link      : chr "logit"
 $ linkfun   :function (mu)  
 $ linkinv   :function (eta)  
 $ variance  :function (mu)  
 ...

La falta de error probablemente se debió a algún paquete que habías cargado, que definía un ilogit función.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top