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

使用矩阵方法在R中编写支持任意n个参数的线性回归函数

适配多自变量的R线性回归函数实现方案

你现有的双变量回归代码核心逻辑已经兼容多自变量计算,仅需调整参数传入和处理逻辑,即可支持任意数量自变量的场景。

优化后实现代码

优化版支持和原生lm一致的公式调用语法,无需手动拼接自变量矩阵:

new_lm <- function(formula, data = environment()){
  # 自动提取响应变量、构造带截距的自变量矩阵
  model_df <- model.frame(formula = formula, data = data)
  y <- model.response(model_df)
  x_matrix <- model.matrix(object = formula, data = model_df)
  # 最小二乘计算回归系数
  coef <- solve(t(x_matrix) %*% x_matrix) %*% t(x_matrix) %*% y
  colnames(coef) <- "回归系数"
  return(coef)
}

不同场景调用示例

  • 单自变量场景(n=1)
# 构造测试数据
x1 <- rnorm(100)
y <- 2 + 3 * x1 + rnorm(100)
# 调用函数
new_lm(y ~ x1)
  • 双自变量场景(n=2)
x2 <- rnorm(100)
y <- 2 + 3 * x1 + 1.5 * x2 + rnorm(100)
new_lm(y ~ x1 + x2)
  • 3个及以上自变量场景
x3 <- rnorm(100)
y <- 2 + 3 * x1 + 1.5 * x2 + 0.8 * x3 + rnorm(100)
new_lm(y ~ x1 + x2 + x3)

如果要保留原来的传参方式(手动传入y和x),无需修改现有代码,仅需在调用时将自变量拼接为n行k列的矩阵即可:单自变量时传入as.matrix(x1),多自变量时传入cbind(x1, x2, x3...),同样可以得到正确的计算结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:27:07