【问题标题】:Time Series Package that Replaces NA values as a Forecast [closed]将NA值替换为预测的时间序列包[关闭]
【发布时间】:2019-03-23 21:00:17
【问题描述】:

我有一个如下数据集:

       Date     Metric1      Metric2       Metric3       Metric4      
 2017-01-01          NA            3            NA             7
 2017-01-02          NA            4            NA            10
 2017-01-03          NA            2            NA            18
 2017-01-04           5            8            NA            20
 2017-01-05           8            9            87            34
 2017-01-06          10            2            45            12
        .             .            .             .             .
        .             .            .             .             .
        .             .            .             .             .
 2018-09-01          12           13            14            15
 2018-09-02          34           12            28            19 
 2018-09-03          45           12            45            34
 2018-09-04          NA           14            49            11
 2018-09-05          NA           11            90            12 
 2018-09-06          NA           15            NA            32
 2018-09-07          NA           23            NA            43
 2018-09-08          NA           12            NA            22

我的数据集有 100 列。 NAs 在各自的列中没有缺失值。有谁知道一个包或函数可以预测或使用移动平均值来计算第一个或最后一个数值之前和之后的值?

到目前为止,我已经对此进行了一些研究,我能找到的最好的是na.fill,但这只会在列的开头和结尾重复值。

【问题讨论】:

    标签: r xts na imputets


    【解决方案1】:

    您可以使用imputeTS 包来估算缺失值。对于移动平均线,您可以执行以下操作:

    library(imputeTS)
    
    ts_df[,2:5] <- apply(ts_df[,2:5], 2, na_ma, k = 6)        # k = width of moving average
    
    ts_df
             Date   Metric1 Metric2  Metric3 Metric4
    1  2017-01-01  6.933333       3 64.57143       7
    2  2017-01-02  7.806452       4 62.13333      10
    3  2017-01-03  8.396825       2 61.58065      18
    4  2017-01-04  5.000000       8 61.38095      20
    5  2017-01-05  8.000000       9 87.00000      34
    6  2017-01-06 10.000000       2 45.00000      12
    7  2018-09-01 12.000000      13 14.00000      15
    8  2018-09-02 34.000000      12 28.00000      19
    9  2018-09-03 45.000000      12 45.00000      34
    10 2018-09-04 33.984127      14 49.00000      11
    11 2018-09-05 34.451613      11 90.00000      12
    12 2018-09-06 35.333333      15 66.80952      32
    13 2018-09-07 37.142857      23 67.16129      43
    14 2018-09-08 41.333333      12 68.93333      22
    

    请参阅 R 文档,了解更多与时间序列相关的插补技术imputeTS package

    数据:

    ts_df <- read.table(text = "      Date     Metric1      Metric2       Metric3       Metric4      
     2017-01-01          NA            3            NA             7
               2017-01-02          NA            4            NA            10
               2017-01-03          NA            2            NA            18
               2017-01-04           5            8            NA            20
               2017-01-05           8            9            87            34
               2017-01-06          10            2            45            12
               2018-09-01          12           13            14            15
               2018-09-02          34           12            28            19 
               2018-09-03          45           12            45            34
               2018-09-04          NA           14            49            11
               2018-09-05          NA           11            90            12 
               2018-09-06          NA           15            NA            32
               2018-09-07          NA           23            NA            43
               2018-09-08          NA           12            NA            22" , header = T, colClasses = c("Date" = "Date"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-13
      • 2019-06-01
      • 2022-06-16
      • 1970-01-01
      • 2015-01-21
      • 2020-11-22
      • 1970-01-01
      • 2019-01-20
      相关资源
      最近更新 更多