在R中绘制逆线性回归拟合曲线显示异常的技术求助
问题根源
你用abline(model)绘制回归曲线是错误的——abline()仅支持绘制标准线性模型的直线(形式为y = a + b*x),但你的模型是y = β₀ + β₁*(1/x),属于非线性关系。当调用abline()时,它会错误地将1/x当作线性变量直接映射到x轴;而1/x在x=1到75区间内数值极小,模型拟合出的β₁会非常大,最终画出的直线就会呈现近乎垂直的错误形态。
修正代码
要得到正确的逆线性回归曲线,需先基于拟合模型生成对应x的预测值,再用lines()函数连接这些预测点:
x <- 1:75 w <- rep(10,25) z <- rep(5,25) a <- rep(4,25) b <- append(w,z) y <- append(b,a) # 拟合逆线性模型 model <- lm(y ~ I(1/x)) # 生成对应x的预测值(保持x的顺序) predicted_y <- predict(model, newdata = data.frame(x = x)) # 绘制散点图与回归曲线 plot(x, y, pch = 16, col = "gray") lines(x, predicted_y, col = "red", lwd = 2)
关键说明
predict()函数会根据拟合的模型,为每个x值计算对应的预测y值,确保预测点与原始x的顺序完全匹配。lines()函数会按x的递增顺序连接所有预测点,画出符合预期的逆线性平滑曲线,替代原本错误的abline()。
内容的提问来源于stack exchange,提问作者Johnny
相关产品推荐
相关产品推荐

