我正在尝试针对单个列向量(独立变量)对矩阵的每一列(因变量)进行回归,并存储系数和残差。 到目前为止,这是示例数据和我的代码:
gwthRatesAllCities06To08 <- matrix(1:60, nrow = 4, ncol = 15)
natGwthRates06To08 <- c(2,1,3,5)
for (i in 1 : ncol(gwthRatesAllCities06To08)) {
OLSEst[[i]]<- lm(formula = gwthRatesAllCities06To08[,i] ~ natGwthRates06To08)
}
但是,上面的代码没有给我我想要的,请您帮我弄清楚原因吗?提前非常感谢!
答案 0 :(得分:2)
lm
可以在同一右手侧回归多个Y向量。只需将左侧指定为以Y向量为列的矩阵即可。
y <- matrix(1:60, nrow = 4, ncol = 15)
x <- c(2,1,3,5)
fm <- lm(y ~ x)
coef(fm) # the 15 columns of coef are the 15 sets of coefficients
resid(fm) # the 15 columns of resid are the 15 sets of residuals
答案 1 :(得分:1)
我认为您的代码运行良好,我可以检索系数和残差:
OLSEst <- list()
for (i in 1 : ncol(gwthRatesAllCities06To08)) {
OLSEst[[i]]<- lm(formula = gwthRatesAllCities06To08[,i] ~ natGwthRates06To08)
}
mod <- OLSEst[[15]]
> mod$coefficients
(Intercept) natGwthRates06To08
56.7714286 0.6285714
> mod$residuals
1 2 3 4
-1.02857143 0.60000000 0.34285714 0.08571429
答案 2 :(得分:1)
您需要先在for循环之外创建列表。然后,将结果添加到列表中。
gwthRatesAllCities06To08 <- matrix(1:60, nrow = 4, ncol = 15)
natGwthRates06To08 <- c(2,1,3,5)
OLSEst <- list()
for (i in 1 : ncol(gwthRatesAllCities06To08)) {
OLSEst[[i]]<- lm(formula = gwthRatesAllCities06To08[,i] ~ natGwthRates06To08)
}
如果仅需要系数,请考虑仅获取所需的回归对象的部分。检查下面的内容以开始使用。
test <- lm(formula = gwthRatesAllCities06To08[,i] ~ natGwthRates06To08)
test$coefficients