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

R语言绘制99%置信区间与预测区间xy长度不匹配报错求助

报错原因

当前conf_int仅针对马力=93.5的单个值计算区间,返回结果只有1行,和mydata$my_horse全列的长度完全不一致,所以触发长度不匹配的报错。此外要生成99%区间,需要额外在predict()中指定level=0.99参数,R默认生成的是95%区间。

完整可运行代码
# 1. 数据准备与模型构建(和原有逻辑一致)
my_acc <- auto_df$acceleration
my_horse <- auto_df$horsepower
mydata <- data.frame(my_acc, my_horse)
car_linear_regression <- lm(my_acc ~ my_horse, mydata)

# 2. 生成覆盖所有马力范围的连续序列,用于绘制平滑的区间线
# 取马力的最小值到最大值,生成100个均匀分布的点,保证区间线平滑
new_horse_seq <- data.frame(my_horse = seq(min(mydata$my_horse), max(mydata$my_horse), length.out = 100))

# 3. 计算99%置信区间和99%预测区间
conf_int_99 <- predict(car_linear_regression, newdata = new_horse_seq, interval = "confidence", level = 0.99)
pred_int_99 <- predict(car_linear_regression, newdata = new_horse_seq, interval = "prediction", level = 0.99)

# 4. 绘图
# 绘制原始散点
plot(my_acc ~ my_horse, data = mydata, pch = 20, cex = 1.5, col = "blue", 
     xlab = "汽车马力", ylab = "加速到100km/h所需秒数", 
     main = "线性回归99%置信区间与预测区间")
# 绘制回归直线
abline(car_linear_regression, lwd = 3, col = "red")
# 绘制99%置信区间上下界
lines(new_horse_seq$my_horse, conf_int_99[, "lwr"], col = "darkred", lty = 2, lwd = 2)
lines(new_horse_seq$my_horse, conf_int_99[, "upr"], col = "darkred", lty = 2, lwd = 2)
# 绘制99%预测区间上下界
lines(new_horse_seq$my_horse, pred_int_99[, "lwr"], col = "darkgreen", lty = 3, lwd = 2)
lines(new_horse_seq$my_horse, pred_int_99[, "upr"], col = "darkgreen", lty = 3, lwd = 2)
# 增加图例方便区分
legend("topright", 
       legend = c("原始散点", "回归直线", "99%置信区间", "99%预测区间"),
       col = c("blue", "red", "darkred", "darkgreen"),
       pch = c(20, NA, NA, NA),
       lty = c(NA, 1, 2, 3),
       lwd = 2)

# (可选)单独标记马力=93.5对应的单个点的区间,匹配练习要求
point_conf <- predict(car_linear_regression, newdata = data.frame(my_horse = 93.5), interval = "confidence", level = 0.99)
point_pred <- predict(car_linear_regression, newdata = data.frame(my_horse = 93.5), interval = "prediction", level = 0.99)
points(x = 93.5, y = point_conf[,"fit"], pch = 19, col = "black", cex = 2)
arrows(x0 = 93.5, y0 = point_conf[,"lwr"], x1 = 93.5, y1 = point_conf[,"upr"], code = 3, angle = 90, length = 0.1, col = "darkred", lwd = 2)
arrows(x0 = 93.5, y0 = point_pred[,"lwr"], x1 = 93.5, y1 = point_pred[,"upr"], code = 3, angle = 90, length = 0.1, col = "darkgreen", lwd = 2)
关键修改说明
  • 生成覆盖马力全部取值范围的连续序列作为预测输入,保证返回的区间结果长度和x轴数据长度一致,解决长度不匹配报错
  • 新增level=0.99参数,满足99%区间的计算要求
  • 区分置信区间和预测区间的线条样式,增加图例方便识别,可选补充单个马力值93.5的区间标记,匹配练习要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:24:03