[英]Multivariate multiple linear regression with many dependent variables
如果有很多因变量,例如在我的情况下222,那么如何运行多元线性回归? 我想对222个不同公司的某些价值进行回归,而回归变量很少。
我知道我可以做到
y <- cbind(y1, y2, y3... yn)
fit <- lm(y ~ X1 + X2 + ... Xn)
但是除了手动书写cbind(y1, y2, y3, ...y222)
之外,必须有一种巧妙的方法来绑定我的列-对吗?
我试过cbind(vol[, 2:223])
但将其放在y中并赋予lm()函数只会导致Error in model.frame.default(formula = y ~ RMF + SMB + HML, drop.unused.levels = TRUE) : invalid type (list) for variable 'y'
R的经验不是很丰富,因此,我感谢我为论文获得的所有帮助! 请多多包涵。
下面我们以内置的anscombe
数据帧为例。
1)关键部分是在公式的左侧使用矩阵,而不是数据框。 在下面的示例中,我们定义因变量的矩阵y
,然后将其用于lm
:
y <- as.matrix(anscombe[5:8])
lm(y ~ x1 + x2 + x3 + x4, anscombe)
1a)还是如果有很多自变量:
lm(y ~ ., anscombe[1:4])
2)可以交替使用lm.fit
。 请注意,它不会自动添加拦截器,因此我们添加了一个:
m <- as.matrix(anscombe)
lm.fit(cbind(Intercept = 1, m[, 1:4]), m[, 5:8])
lm.fit
返回一个列表,而不是lm
对象,但是无论如何,某些方法(例如coef
和resid
(但不是summary
))都可以使用它。
假设所有222个向量的长度相同,并且您的全局环境除这222个向量外没有其他对象,您可以尝试:
方法1:
library(purrr)
# get all 223 vectors in a list
vec_list <- as.list(.GlobalEnv))
# cbind the list elements
df <- map_df(vec_list, cbind)
方法2:
# this lists all the objects in your current environment
vec_list= ls()
# get data
df <- cbind(vec_list)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.