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

如何在R语言简单线性回归中分离charges三组数据以优化模型?

回归模型优化方案

1. 定位隐藏的分层变量

散点图呈现的三组平行趋势,核心原因是遗漏了关键分类变量(比如是否吸烟、保险套餐类型、是否有基础疾病等,这类变量在保险费预测场景中极为常见)。你可以通过以下方式验证:

  • 把数据集中的其他分类变量(如smoker、sex、region)加入散点图,用颜色或形状区分分组:
# 示例:用smoker变量区分点的颜色
plot_age <- ggplot(train, aes(x = age, y = charges, color = smoker)) + 
  geom_point()

如果颜色区分后正好对应散点图的三组,说明该变量就是导致分层的核心因素。

2. 构建多元回归模型

将识别出的分类变量纳入模型,先尝试基础多元模型:

# 以smoker为例,构建包含age和smoker的模型
model <- lm(charges ~ age + smoker, data = train)
summary(model)

若不同分组中age对charges的影响斜率存在差异,需加入交互项捕捉这种差异:

# 加入age与smoker的交互项
model_interact <- lm(charges ~ age * smoker, data = train)
summary(model_interact)

3. 模型拟合验证

  • 绘制残差图检查模型拟合质量:
plot(model_interact, which = 1) # 残差-拟合值图,用于判断异方差
plot(model_interact, which = 2) # Q-Q图,用于验证残差正态性
  • 对比原模型与新模型的R²、调整R²或RMSE指标,评估模型提升效果。

4. 非线性趋势优化(可选)

若加入分组变量后仍存在非线性趋势,可尝试:

  • 对age进行多项式变换,引入二次项:
model_poly <- lm(charges ~ age + I(age^2) + smoker, data = train)
summary(model_poly)
  • 使用样条回归捕捉更复杂的非线性关系:
library(splines)
model_spline <- lm(charges ~ bs(age, df = 3) + smoker, data = train)
summary(model_spline)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:56:06