【问题标题】:Linear Regression with Loop带循环的线性回归
【发布时间】:2019-01-21 09:40:04
【问题描述】:

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

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

提前感谢您的帮助!

【问题讨论】:

    标签: loops linear-regression stock


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-01-17
      • 2023-03-11
      • 2021-09-14
      • 2021-07-02
      • 1970-01-01
      • 1970-01-01
      • 2014-05-08
      • 2020-12-28
      • 2019-01-02
      相关资源
      最近更新 更多