在 R 中手动执行线性回归

Manually performing linear regression in R

假设我有以下线性模型。

y = ax + bz

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

不清楚您希望对无包裹要求有多严格。如果你愿意使用 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

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