Dans R, utiliser binomial() et lapply pour contraindre les valeurs Predict() entre 0 et 1
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
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.