1

我有一个 GLM,family=binomial(link=logit) 模型,我在 predict() 函数中应用,如下所示。预测值超出零和 1,但我想将它们保留为概率。所以我使用了 binomial()$inverse 命令,然后可以在 apply 函数中使用该命令。

这在我第一次运行时工作得很好,但是在关闭 R 并重新启动后,我现在收到此错误:

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

我已经为此苦苦挣扎了好几个小时,因为这段代码通常可以工作。有谁知道我做错了什么?有没有更好的方法来做到这一点?

我的代码如下。我也尝试过其他变体,但无法正常工作。

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

   ilogit <- binomial()$inverse
   yhat_prob <- lapply(pp,ilogit) #converts to probabilities
4

1 回答 1

4

如果您想要概率,您可以直接使用 获得它们type="response",如文档中所述,?pregict.glm.

对于您收到的错误消息,您可能需要binomial()$linkinv.

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

没有错误可能是由于您加载的某些包定义了一个ilogit函数。

于 2012-03-07T23:04:10.893 回答