首页 > 解决方案 > 在 R 中手动执行线性回归

问题描述

假设我有以下线性模型。

y = ax + bz

我的问题是;如何在不使用 lm 函数的情况下估计这些参数。

标签: rlinear-regression

解决方案


目前尚不清楚您希望对无包装要求有多严格。如果你愿意使用这个stats包(大多数人甚至不认为它是一个包,因为它是基础 R 的标准配置,你不必加载它library()),那么你可以调用通常的“线性模型”功能lm()

使用`lm()`

fit <- lm(y ~ x + z, data = your_data_frame)
summary(fit)

使用矩阵代数

相比之下,您也可以采用更自命不凡的方式对矩阵代数进行编码以手动拟合这些参数。除了基本 R 之外,这不涉及任何包。

X <- as.matrix(your_data[, c('x', 'z')]) # extract your predictors
X <- cbind(1, X) # add an intercept to your design matrix
y <- your_data$y

betas <- solve(t(X) %*% X) %*% t(X) %*% y

编辑:请注意,这些方法假定没有丢失数据(即,每一行都有 ay、x 和 z 值)。


推荐阅读