【问题标题】:Running many multiple OLS regressions at once in R在 R 中一次运行多个 OLS 回归
【发布时间】:2016-07-25 17:31:59
【问题描述】:

我想运行时间序列回归(Fama-French 三因子和我的新因子)。我有以下表格。

Table01

    Date     Port_01  Port_02 --------- Port_18
    01/1965     0.85    0.97               1.86
    02/1965     8.96    7.2                0.98
    03/1965     8.98    7.9                8.86 

Table 02

    Date        Market   SMB    HML     WXO
    01/1965      0.85    0.97    0.86    0.87
    02/1965      8.96    7.2     0.98    0.79
    03/1965      8.98     7.9    8.86    0.86

我必须运行 18 次回归并将它们的截距存储在一个向量中。 像这样的

      Port_1=inter(1)+Beta1(Market)+Beta2(SMB)+Beta3(HML)+Beta3(WXO)+e
      Port_2=inter(2)+Beta1(Market)+Beta2(SMB)+Beta3(HML)+Beta3(WXO)+e
      Port_18=inter(18)+Beta1(Market)+Beta2(SMB)+Beta3(HML)+Beta3(WXO)+e

我希望将这 18 个截距存储在一个向量中。我可以单独做。但是如果有办法处理编码,这将帮助我很多时间。

【问题讨论】:

  • 如果你使用最小二乘法,那么这可以很容易地用线性代数来完成。
  • 您的问题不清楚(阅读上面的链接),但这里是解决问题的一般方法:edinbr.org/edinbr/2016/05/11/…
  • 抱歉不清楚。我已经编辑了我的问题。我是 R 的新手,我不太了解这些链接的内容。 :(

标签: r statistics regression


【解决方案1】:

考虑vapply()lapply() 的变体,它允许将此处的输出指定为原子数字向量(长度为 1)。但是,首先,您需要按Date 字段合并表,然后创建一个端口 公式列表(假设这是所需的基础数据)。下面运行线性回归,lm,但调整到可能需要调整截距提取的实际模型:

data <- merge(Table_01, Table_02, by="Date")

ports <- colnames(Table_01)[2:ncol(Table_01)]    
formulas <- paste(ports, "~ Market + SMB + HML + WXO")

intercepts <- vapply(formulas, function(i) { 
                          output <- lm(i, data)
                          coef(output)["(Intercept)"]
                     }, numeric(1))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 2013-11-01
    • 1970-01-01
    • 2012-07-20
    • 2016-10-21
    相关资源
    最近更新 更多