带循环的线性回归

Linear Regression with Loop

我目前正在对挪威股票市场上的每家公司进行回归分析,我根据基准对每家公司的股票收益进行回归分析。期间为 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)

有谁知道我如何指定我只想对公司进行特定时期的回归,例如每年或每个公司的每个月?

提前感谢您的帮助!

如果你在这种情况下使用 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 列的 table,其中 model 列称为列表列并包含相应的拟合线性回归模型。