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

将多项式回归代码改写为带for循环的函数以生成10阶ANOVA对比表

1-10阶多项式回归的ANOVA对比函数实现

可以用以下带for循环的函数实现需求,它支持指定预测变量、响应变量和数据集,自动生成1到10阶的多项式回归模型,并输出ANOVA对比结果:

compare_poly_anova <- function(predictor_var, response_var, data, max_degree = 10) {
  # 初始化空列表存储各阶模型
  fit_list <- list()
  
  # 循环生成1至max_degree阶的多项式回归模型
  for (degree in 1:max_degree) {
    # 动态构建回归公式
    formula <- as.formula(paste(response_var, "~ poly(", predictor_var, ",", degree, ")", sep = ""))
    fit_list[[degree]] <- lm(formula, data = data)
  }
  
  # 执行多模型ANOVA对比并返回结果
  anova_result <- do.call(anova, fit_list)
  print(anova_result)
  return(anova_result)
}

使用示例

针对原代码中的Wage数据集,调用方式如下:

# 对比age对wage的1-10阶多项式拟合效果
compare_poly_anova(predictor_var = "age", response_var = "wage", data = Wage)

关键说明

  • 用paste()动态拼接公式,避免手动重复编写每个阶数的模型代码
  • 用列表统一存储所有模型,通过do.call()一次性将所有模型传入anova()函数,实现连续阶数的拟合效果对比
  • 默认对比到10阶,可通过修改max_degree参数调整对比的最高阶数(比如改回5阶只需设max_degree=5)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:11:54