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

R基础绘图lines()函数输出多段折线而非平滑线问题求助

问题根因

你使用rnorm()生成的X向量是无序随机分布的,base R的lines()函数会严格按照传入坐标点的先后顺序逐段连接,不会自动对X轴变量排序后再拟合连线,因此X顺序混乱时,拟合值的连线就会来回穿插,形成多段折线的效果。

修正方案

只需在绘图前将X和对应的Yhat按X的升序排列即可,完整调整后的代码如下:

# 生成X和随机扰动项
X <- rnorm(100, mean = 10, sd = 1)
epsilon <- rnorm(100, 0, 1)

# 构造Y
b0 <- 0.27
b1 <- 0.49
b2 <- 0.62
b3 <- 0.8

Y <- b0 + b1*X + b2*2^2 + b3*X^3 + epsilon

# 拟合回归模型生成拟合值
df = data.frame(Y,X,epsilon)
reg <- lm(Y ~ I(X^3), data = df)
Yhat <- fitted.values(reg)
cbind(df, Yhat) -> df

# 新增排序步骤:按X升序整理数据
df_sorted <- df[order(df$X), ]

# 绘图
plot(X, Y)
lines(df_sorted$X, df_sorted$Yhat, col = "blue", lwd = 0.5)

额外提示:你当前构造Y的代码里b2*2^2是固定常数,不会随X变化,如果你本意是要加入X的二次项效应,可以修改为b2*X^2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:27:08