You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在R中实现SAS Proc Logistic预测概率追加功能的方法问询

当然可以!在R里完全能实现你说的SAS Proc Logistic那种把预测概率追加到原数据集的功能,而且操作起来灵活又直观,给你两种常用的实现方式:

在R中实现逻辑回归预测概率追加到原数据

首先,先假设你已经用glm()拟合好了逻辑回归模型,这里用经典的mtcars数据集做示例:

# 拟合逻辑回归:以am(自动/手动变速箱)为二分类响应变量,wt和hp为自变量
logit_model <- glm(am ~ wt + hp, data = mtcars, family = binomial)

方法一:基础R原生实现(手动追加)

用R内置的predict()函数就能生成预测概率,指定type = "response"就能得到0-1之间的概率值(和SAS里的Pred=<phat>完全对应),然后直接把结果作为新列加到原数据框里:

# 把预测概率追加到原数据,新列命名为phat(你也可以改成Estimated Probability)
mtcars$phat <- predict(logit_model, type = "response")

执行完这行代码,原数据框mtcars就多了一列phat,里面就是每条观测对应的预测概率,和SAS的效果一模一样。

方法二:用broom包自动追加(更省心)

如果你想要更自动化的方式,不用手动赋值,可以用broom包的augment()函数——它会自动把预测值、残差等一系列模型相关统计量追加到原数据里,直接生成带预测概率的新数据集:

# 首次使用需先安装broom包
# install.packages("broom")
library(broom)

# 自动生成带预测概率的数据集,.fitted列就是我们需要的预测概率
augmented_data <- augment(logit_model, type.predict = "response")

# 可选:用dplyr把列名改成更直观的名字(比如phat)
library(dplyr)
augmented_data <- augmented_data %>% rename(phat = .fitted)

这个方法的好处是不用手动处理数据合并,还能顺便得到其他模型诊断信息,非常适合批量处理或需要更多统计量的场景。

额外小提示

  • 如果你需要预测新数据集的概率,只需要在predict()augment()里加上newdata = 你的新数据框参数即可,用法和SAS处理新数据的逻辑一致。
  • R默认不会直接修改原数据(除非你像方法一那样直接赋值),所以你可以灵活选择保留原数据,或者用新变量存储带预测值的数据集。

内容的提问来源于stack exchange,提问作者jrl

火山引擎 最新活动