Em R, usando binomial() e lapply para restringir valores de previsão() entre 0 e 1

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

  •  09-12-2019
  •  | 
  •  

Pergunta

Eu tenho um modelo GLM, family=binomial(link=logit) que aplico dentro de uma função predict(), vista abaixo.Os valores previstos vão além de zero e 1, mas gostaria de mantê-los como probabilidades.Então eu uso o comando binomial()$inverse que pode ser usado na função apply.

Isso funcionou muito bem na primeira vez que executei, mas depois de fechar o R ​​e começar novamente, agora recebo este erro:

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

Estou lutando com isso há horas, pois esse código normalmente funcionava.Alguém tem uma idéia do que estou fazendo de errado?Existe um jeito melhor de fazer isso?

Meu código está abaixo.Também tentei outra variação, mas não consigo fazê-la funcionar.

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

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

Solução

Se você quiser as probabilidades, poderá obtê-las diretamente com type="response", conforme explicado na documentação, ?pregict.glm.

Para a mensagem de erro que você recebe, você provavelmente precisará binomial()$linkinv.

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

A falta de erro provavelmente foi devido a algum pacote que você carregou, que definiu um ilogit função.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top