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

如何在R中使用curve函数绘制各模型的WEIGHT预测回归线?

使用curve函数绘制线性模型的预测曲线

核心思路

curve()函数的作用是根据给定的表达式/函数,在指定的x值范围内生成曲线。对于你的线性模型,要展示AVFOOD对WEIGHT的平均预测值,需要:

  • 对于只含AVFOOD的模型(m1.f),直接用模型的预测表达式即可;
  • 对于包含其他协变量(GSIZE、AREA)的模型(m2.f、m3.f),需要固定这些协变量在均值水平(这样才能单独看AVFOOD的影响)。

完整代码实现

确保foxes数据集已加载后,按以下步骤操作:

# 先绘制原始散点图作为基底
plot(foxes$AVFOOD, foxes$WEIGHT, pch = 16, col = "gray", 
     xlab = "AVFOOD", ylab = "WEIGHT", main = "不同模型的WEIGHT预测曲线")

# 1. 绘制m0.f的预测线(截距模型,所有x对应的预测值都是均值)
curve(predict(m0.f, newdata = data.frame(AVFOOD = x, GSIZE = mean(foxes$GSIZE), AREA = mean(foxes$AREA))),
      add = TRUE, col = "black", lwd = 2, lty = 2)

# 2. 绘制m1.f的预测线(仅AVFOOD作为自变量)
curve(predict(m1.f, newdata = data.frame(AVFOOD = x)),
      add = TRUE, col = "blue", lwd = 2)

# 3. 绘制m2.f的预测线(固定GSIZE为均值)
curve(predict(m2.f, newdata = data.frame(AVFOOD = x, GSIZE = mean(foxes$GSIZE))),
      add = TRUE, col = "red", lwd = 2, lty = 3)

# 4. 绘制m3.f的预测线(固定GSIZE和AREA为均值)
curve(predict(m3.f, newdata = data.frame(AVFOOD = x, GSIZE = mean(foxes$GSIZE), AREA = mean(foxes$AREA))),
      add = TRUE, col = "green", lwd = 2, lty = 4)

# 添加图例
legend("topleft", legend = c("m0.f(仅截距)", "m1.f(AVFOOD)", "m2.f(AVFOOD+GSIZE)", "m3.f(AVFOOD+GSIZE+AREA)"),
       col = c("black", "blue", "red", "green"), lwd = 2, lty = c(2,1,3,4))

关键代码解释

  • add = TRUE:将曲线添加到已有的散点图上,而非新建画布;
  • predict()函数:根据模型和新的自变量取值生成预测值,newdata参数需传入包含模型所有自变量的数据框;
  • 对于含多个协变量的模型(m2.f、m3.f),用mean(foxes$GSIZE)和mean(foxes$AREA)固定变量取值为数据集均值,得到的曲线代表其他协变量处于平均水平时,AVFOOD对WEIGHT的预测效应;
  • lty和col参数:区分不同模型的曲线样式与颜色,方便对比。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:01:38