Dans R, utiliser binomial() et lapply pour contraindre les valeurs Predict() entre 0 et 1

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

  •  09-12-2019
  •  | 
  •  

Question

J'ai un modèle GLM, family=binomial(link=logit) que j'applique dans une fonction Predict(), vue ci-dessous.Les valeurs prédites vont au-delà de zéro et 1, mais j'aimerais les conserver sous forme de probabilités.J'utilise donc la commande binomial()$inverse qui peut ensuite être utilisée dans la fonction apply.

Cela a très bien fonctionné la première fois que je l'ai exécuté, mais après avoir fermé R et redémarré, j'obtiens maintenant cette erreur :

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

J'ai du mal avec ça depuis des heures, car ce code fonctionnait normalement.Quelqu'un a-t-il une idée de ce que je fais de mal ?Existe-t-il une meilleure façon de le faire?

Mon code est ci-dessous.J'ai également essayé une autre variante mais je n'arrive pas à la faire fonctionner.

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

   ilogit <- binomial()$inverse
   yhat_prob <- lapply(pp,ilogit) #converts to probabilities
Était-ce utile?

La solution

Si vous voulez les probabilités, vous pouvez les avoir directement avec type="response", comme expliqué dans la documentation, ?pregict.glm.

Pour le message d'erreur que vous recevez, vous avez probablement besoin binomial()$linkinv.

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

L'absence d'erreur était probablement due à un package que vous aviez chargé, qui définissait un ilogit fonction.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top