繁体   English   中英

具有许多因变量的多元多元线性回归

[英]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对象,但是无论如何,某些方法(例如coefresid (但不是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM