r - 在 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
编辑:请注意,这些方法假定没有丢失数据(即,每一行都有 ay、x 和 z 值)。
推荐阅读
- javascript - 这个css声明的结果?
- c# - 当属性具有 IDictionary 时反序列化对象
- python - 划分列、矩阵的迭代
- javascript - 如何在不影响 SEO 的情况下使用 wow.js 和 animate.css?
- java - java.lang.UnsatisfiedLinkError:dlopen 失败:找不到库“libpthread.so.0”
- r - 如何将值列表读入沙箱中的数据表?
- node.js - npm root:没有这样的文件或目录
- visual-studio-extensions - 带有自定义命令和子命令的 Visual Studio 扩展
- javascript - 如何使用 squirrel.windows 创建注册表项
- docker - 运行容器时如何使用 docker 主机名