【问题标题】:R: Time Series Regression with NA and multiple dependent variablesR:具有 NA 和多个因变量的时间序列回归
【发布时间】:2013-08-12 15:02:46
【问题描述】:

我想以因变量列表作为列来运行时间序列回归。我想对一组自变量的每一列进行回归。我知道你可以使用

lm(dataframe~independent variables)

因为如果因变量是矩阵,那么它们只会遍历每一列。

但是,我的因变量是关于股票随时间变化的信息,有时信息并非在每个时间点都适用于每只股票,所以我有一些 NA 值。我遇到的问题是,如果我使用 lm,我必须省略 NA 值,即 lm 函数在运行回归时会删除整行。如果我只想对一个因变量进行回归,这很好,但我有一个我想对其进行回归的因变量列表(1000+)。因为我的数据集只有 15 年以上,所以单个时间点的值缺失,所以当我运行 lm 回归时,我收到一个错误,因为 lm 函数在运行回归时删除了每一行。我能想到的解决这个问题的唯一方法是运行一个 for 循环并为每只股票运行一个单独的回归,我认为这需要很长时间来计算。例如,以下是我的数据示例:

              135081(P)   135084(P)    135090(P)   
1994-12-30           NA          NA           NA         
1995-01-02           NA          NA           NA          
1995-01-03     06864935          NA           NA        
1995-01-04           NA          NA  -0.05474644         
1995-01-05           NA          NA   0.20894900          
1995-01-06           NA -0.45672832  -0.02378632          

所以如果我对此运行时间序列回归,我会得到一个错误,因为 lm 函数会跳过每一行。

所以我的问题是,是否有另一种方法可以在具有不同 DEPENDENT 变量的数据帧中运行时间序列回归,其中回归仅针对一个特定的因变量“跳过”NA,而不是为所有其他因变量跳过它变量也是?

我认为使用 na.omit 不正确,因为它删除了我的数据集的时间序列属性,并且使用 na.action=NULL 不起作用,因为我的数据集中有 NA。 非常感谢您的帮助。

【问题讨论】:

  • 你在lm函数中尝试过na.action=NULL吗?
  • 嗨,如果我使用 na.action=NULL,我会收到以下错误:“ lm.fit 中的错误(x,y,offset = offset,singular.ok =singular.ok,.. .) : 外部函数调用中的 NA/NaN/Inf (arg 4)
  • 我认为除了逐列进行之外没有其他方法。您是否尝试过减少因子数,例如通过 PCA?
  • 您可以使用apply(dataframe, 2, function(x) x[!is.na(x)]) 排除列中的每个 NA。这将返回一个列表,其中包含每列的非 NA 值,但您还必须根据依赖项索引您的自变量......
  • 您确定这是适合这些数据的模型吗?我通常不运行时间序列分析,但是当我这样做时,我因为使用​​ lm 而遇到了麻烦,最后我与顾问一起运行 Mann-Kendall 测试,现在有一个包 ?Kendall

标签: r


【解决方案1】:

您可能希望使用多重插补方法,使用诸如 CRAN 上的 Amelia 2 包之类的东西,以便正确考虑由于缺失而导致的估计不确定性增加,并帮助最大限度地减少因逐案删除而导致的偏差。例如:

Honaker, J. 和 King, G. (2010)。如何处理时间序列横截面数据中的缺失值。 美国政治学杂志,54(2):561–581。

【讨论】:

    猜你喜欢
    • 2020-05-20
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多