首先,首先感谢您的支持,我只是使用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或类似产品。
您的帮助将不胜感激!
答案 0 :(得分:0)
最好不要在全局环境中创建多个对象。相反,可以在lapply
中使用list
,然后在list
本身中提取成分
out <- lapply(2:771, function(i) {
x1 <- lm(returns[,i] ~ MSCI)
sd(residuals(x1))})
输出为list
,可以使用vector
转换为unlist
unlist(out)