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

在R中实现幂回归:绘图异常、RMSE计算及模型参数求解问题

幂回归模型拟合问题解答

绘图异常问题解决

你用lines(x, exp(fit$fitted.values))出现乱线,原因是原始x向量未排序,lines()会按x的原始顺序依次连接点,导致线条交叉混乱。解决方法是先对x排序,再计算对应排序后的拟合值:

# 对x排序,同时生成对应排序后的拟合值
sorted_x <- sort(x)
# 利用模型系数计算拟合值:Y = a*X^b = exp(截距) * X^b
fitted_y <- exp(coef(fit)[1] + coef(fit)[2] * log(sorted_x))

# 重新绘图
plot(x, y)
lines(sorted_x, fitted_y, col="red", lwd=2)

获取幂回归方程的a和b值

从线性化模型log(y) ~ log(x)推导幂模型Y = aX^b:

  • 线性模型形式:log(Y) = 截距 + b*log(X)
  • 转换为幂模型:Y = exp(截距) * X^b

因此:

  • b值就是log(x)的系数,即coef(fit)[2],你的结果中为2.91462
  • a值是截距的指数,即exp(截距),计算得exp(-10.49654) ≈ 2.73×10^-5

用代码直接计算:

a <- exp(coef(fit)[1])
b <- coef(fit)[2]
cat(sprintf("幂回归方程:Y = %.4e * X^%.4f\n", a, b))

计算模型RMSE

RMSE是真实值与拟合值差值的均方根,需要用原始y值和对应原始x的拟合值计算:

# 生成原始数据的拟合值(将log拟合值转换回原始尺度)
fitted_y_original <- exp(predict(fit))
# 计算RMSE
rmse <- sqrt(mean((y - fitted_y_original)^2))
cat(sprintf("模型RMSE:%.4f\n", rmse))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 21:35:14