【问题标题】:How to fetch data from several linear regressions at the same time in R?如何在 R 中同时从多个线性回归中获取数据?
【发布时间】:2018-06-23 00:19:49
【问题描述】:

首先感谢您的支持,我只是一个使用 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 或类似文件。

非常感谢您的帮助!

【问题讨论】:

  • 我建议不要将其分配给全局环境来创建对象。而是使用列表。lapply(2:771, function(x) {x1 &lt;- lm(returns[,paste0("a", x)] ~ MSCI); sd(residuals(x1))})

标签: r excel linear-regression


【解决方案1】:

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

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

输出是list,可以用unlist转换成vector

unlist(out)

【讨论】:

  • 谢谢@akrun!但是,我收到一条错误消息 Error in `[.data.frame'(returns, , paste0("a", x)) : undefined columns 抱歉我在论坛上的编辑技巧不好...
  • @j.paulus 抱歉,代码中有错字。我正在查看您的 paste 并认为它是列名,而不是对象名。修复它\
  • 我明白了!非常感谢!
猜你喜欢
  • 1970-01-01
  • 2016-09-20
  • 2021-08-21
  • 1970-01-01
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
  • 2021-05-20
  • 1970-01-01
相关资源
最近更新 更多