You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

logit模型预测概率计算是否正确?加权场景需注意什么?

问题解答

一、预测概率计算方法的正确性

你采用的方法本质是正确的,它和margins包默认计算的**平均边际效应(AME)**逻辑一致:固定每个观测的其他协变量取值,仅改变x1的取值得到预测概率,再对所有观测的预测结果取均值,两个均值的差值就是x1对y的平均边际效应。

出现细微差异的常见原因:

  • 变量名不匹配:你在margins中指定variables="treatment",如果实际要计算的变量是x1而非treatment,会导致计算的是其他变量的边际效应,自然结果不同,先检查变量名是否对应。
  • 数值精度差异:predict和margins内部的浮点运算精度设置略有不同,当样本量极大或系数绝对值极小时,可能出现微小的舍入偏差。
  • 数据类型问题:如果原数据中的二分变量是因子类型,transform函数可能不会保留原因子水平,导致预测时的变量编码和建模时不一致,建议改用dplyr::mutate修改x1取值,确保变量类型与原数据一致。

二、带权重的logit模型调整

当logit模型加入权重(如glm(..., weights = weight_col)),计算预测概率均值时必须使用权重加权平均,而非简单算术平均,因为权重代表了每个观测的统计权重。

调整后的代码示例:

# 计算x1=1时的加权平均预测概率
pred_x1_1 <- predict(logit, transform(df, x1=1), type='response')
weighted.mean(pred_x1_1, df$weight_col)

# 计算x1=0时的加权平均预测概率
pred_x1_0 <- predict(logit, transform(df, x1=0), type='response')
weighted.mean(pred_x1_0, df$weight_col)

对应的margins命令也需指定权重参数,保证结果一致:

summary(margins(logit, variables="x1", weights = df$weight_col))

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 09:50:17