首页 文章

在R中,使用二项式()和lapply来约束0(1)之间的predict()值

提问于
浏览
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

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 函数 .

相关问题