首页 > 解决方案 > 如何在 R 中同时从多个线性回归中获取数据?

问题描述

首先提前感谢您的支持,我只是一个使用 R 的初学者,我的许多问题已经可以在这个论坛上得到解答。但是,我被困在一个我已经无法在论坛上找到答案的地方。

我有一个数据面板,其中包含 770 只股票在五年内的月度回报以及 MSCI 世界指数的月度回报数据。为了估计市场感知的企业异质风险,我想使用一个简单的市场模型,并以剩余波动率作为企业风险的代理。

因此,我使用以下代码对单个股票与 MSCI 进行了 770 次回归:

returns <- read.csv("/Returns.csv", header=TRUE, sep=";", dec=",")
MSCI <- returns[,772]
for (j in 2:771)){
   assign(paste("a", j, sep = ""),lm(returns[,j]~MSCI))
   }

这给了我 770 个名为 a2、a3、...、a771 的回归输出。

我知道我得到了单次回归的剩余波动率

sd(residuals(a2))

但是,我正在努力编写一个循环或导致同时输出所有 770 个残余波动率的东西,这充其量也可以用于导出到 excel 或类似文件。

您的帮助将不胜感激!

标签: rexcellinear-regression

解决方案


最好不要在全局环境中创建多个对象。相反,这可以使用lapplyin a完成list,然后在其list自身中提取组件

out <- lapply(2:771, function(i) {
        x1 <- lm(returns[,i] ~ MSCI)
          sd(residuals(x1))})

输出是 a list,可以vectorunlist

unlist(out)

推荐阅读