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

使用R语言predict()函数绘制置信区间时异常问题求助

问题解决:置信区间显示异常的原因及修正

你的置信区间显示异常的核心问题是预测时传入的新数据列名与模型自变量名不匹配:

  • 你的模型是lm(BML$Boron ~ BML$ML_Law),自变量实际对应的名称是ML_Law
  • 但你生成newdata时用了data.frame(x=newx),列名是x,predict无法正确关联到模型的自变量,导致计算出的置信区间是固定值,最终画出异常的平行线

修正后的完整代码

# 拟合模型(建议使用data参数,避免$符号,更规范)
model <- lm(Boron ~ ML_Law, data = BML)
summary(model)

# 生成新的自变量序列,注意newdata的列名必须和模型自变量一致(ML_Law)
newx <- seq(min(BML$ML_Law), max(BML$ML_Law), length.out=25)
preds <- predict(model, newdata = data.frame(ML_Law = newx), interval = 'confidence')

# 绘图
plot(Boron ~ ML_Law, data = BML, col='black', pch=19, 
     xlab="Ocean pH Data Anomaly", ylab="δ¹¹B Isotopic Record pH Anomaly")
points(alldata$Boron ~ alldata$BATS, col='blue', pch=19)
points(alldata$Boron ~ alldata$HOT, col='orange', pch=19)
points(alldata$Boron ~ alldata$SODA, col='green', pch=19)
abline(model)
lines(newx, preds[ ,3], lty = 'dashed', col = 'blue')
lines(newx, preds[ ,2], lty = 'dashed', col = 'blue')

额外说明

  • 使用lm(Boron ~ ML_Law, data = BML)这种写法,会让模型明确识别数据框中的列名,后续预测时不容易出现列名不匹配的问题
  • 修正后predict会根据ML_Law的新值正确计算每个点的预测值和置信区间,画出的虚线会是随自变量变化的正常置信区间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:57:43