带环线性回归

时间:2019-01-21 09:40:04

标签: loops linear-regression stock

我目前正在对挪威股票市场上的每家公司进行回归分析,在那儿我会根据基准对每家公司的股票收益进行回归。期间是2009-2018。我设法在整个期间对每个公司进行了回归,但我也想对每个公司每个月进行回归。我们的数据集包含每月的库存回报。

原始数据集包含26000个观测值,然后我将其转换为总共390个元素(公司)的子集。

我到目前为止所做的如下:

data_subset <- by(data,data$Name, subset)
data_lm <-lapply(data_subset,function(data) lm(data$CompanyReturn~data$DJReturn))
data_coef <- lapply(data_lm, coef)
data_tabell <- matrix(0,length(data_subset),2)
for (i in 1:length(data_subset)) {
data_tabell[i,]<-coef(data_lm[[i]])
}
colnames(data_tabell)<-c("Intercept","Coefficient")
rownames(data_tabell)<-names(data_subset)

有人知道我如何指定我只想对特定时期内的公司进行回归分析,例如对每个公司每年还是每月?

预先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果在这种情况下使用tidyverse软件包,则可以轻松完成所有这些事情。假设您的数据具有以下结构,

data:

| CompanyID | CompanyName | Date       | CompanyReturn | DJReturn |
|-----------|-------------|------------|---------------|----------|
| 1         | abc         | 01-01-2002 | 500           | 250      |
|           |             |            |               |          |
|           |             |            |               |          |

使用tidyVerse,您可以只使用group_by创建子集并运行回归,

data %>%
  group_by(CompanyID, month = month(as.Date(Date))) %>%
  nest() %>%
  mutate(model = map(data, ~lm(CompanyReturn ~ DJReturn, data = .)))

这将为您提供一个包含列CompanyIDmonthmodel的表,其中列model被称为列表列,并包含相应的拟合线性回归模型