多个数据表和不同时间范围内的线性回归

问题描述

我在 R 中有一个更复杂的问题,希望你能帮助我。我正在尝试在两个数据表和许多不同的时间范围内创建线性回归。

为了更准确地解释我的问题,我将包括我现在拥有的两个数据集

数据集“交易”,包括一个并购交易和每行几个特征

交易编号 公告日期 ... ... ... CUSIP (ID) ...
2157920020 2010-02-21 ... ... ... 589499102(=CUSIP ID 3) ...
2164370020 2010-03-14 ... ... ... 705573103 ...
2166589020 2010-03-21 ... ... ... 46069S109 ...
... ... ... ... ... ... ...

数据集“daily_return”包括来自并购交易收购方股价的每日回报(其中一列是2009-01-05 - 2020-12-31时间段内一只股票的回报):

日期 CUSIP (ID) 1 (002824100) CUSIP (ID) 2 (00430U103) CUSIP (ID) 3 (589499102) ... ... 基准指数
2009-01-05 -0.01717700 0.0022422 -0.038760 ... ... 0.016764
2009-01-06 -0.03267477 -0.0044743 0.016129 ... ... 0.033647
2009-01-07 -0.00549882 -0.1146067 0.031746 ... ... -0.022271
2009-01-08 0.01105845 0.0329949 0.0076923 ... ... 0.011896
2009-01-09 -0.00058594 -0.0491400 0.046512 ... ... -0.018748
2009-01-12 -0.02169240 -0.0051680 -0.022222 ... ... -0.026589
... ... ... ... ... ... ...
... ... ... ... ... ... ...
2020-12-31 0.03292349 -0.0031726 -0.1029381 ... ... 0.0213947

我想在基准上创建不同证券的线性回归。但是,回归中使用的估计窗口应始终具有相同的 253 天长度,并且应在单个公告日期之前的 283 天开始。我为 CUSIP ID 3 做了一个例子。回归是从 [3:255] 行开始,因为第 3 行是公告前 283 天,第 255 行是公告前 31 天。

linear_model <- lm(daily_return$`589499102`[3:255] ~ daily_return$`Benchmark Index`[3:255])

我能够通过 which 函数自动化”行号,所以我自动获得行号: which(strategic_return$Date == "2010-02-22")-283 --> 返回第 3 行

which(strategic_return$Date == "2010-02-22")-31 --> 返回第 255 行

我现在的问题是梳理和自动化上述步骤:

  1. 代码应从“交易”数据集的顶部开始,并在表格中标识第一笔交易的公布日期。例如。确认第一行 CUSIP 589499102 的公告日期为 2010-02-21。
  2. 接下来,它应该在“daily_return”表上确定正确的列,因为它们没有相同的订单,并且一些收购方在过去 11 年内有不止一笔交易(例如,这将是第 4 列)。 “交易”数据集中的列 CUSIP (ID) 包含与“daily_return”数据集的标题完全相同的内容
  3. 由于日期已经确定(步骤 1),现在应该能够找出回归的时间范围,即 [公告日 -283 : 公告日 -31 ]​​i>
  4. 有了这些信息,应该能够对单个股票进行回归并存储结果
  5. 对“交易”中的所有行重复这些步骤

还有一个障碍需要解决,因为交易数据框中的公告日期可能是周末,例如2010 年 2 月 21 日,而此日期不在 daily_returns 数据框中(因为它是周末)。在这种情况下,它应该只计算下一个可用日期,例如2010-02-22。

我知道很多,我不确定它是否可行。但也许有人知道如何进行。

非常感谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)