用 R 插入缺失的四分之一

Interpolate the missing quarter with R

我有一个从 2005 年到 2011 年的季度时间序列。我缺少一些季度。所以我想插入渐进系列。 我的系列:

time<-c(14881.3,
14989.6,
15021.1,
15190.3,
15275,
15336.7,
15431.3,
15433.7,
15538.4,
15606.6,
15779.9,
15916.2,
15831.7,
16010.4,
16205.6,
16340.02,
16447.40142,
16581.81725,
16675.90362,
16799.3577,
NA,
NA,
NA,
17128.74,
NA,
NA,
NA,
17586.85)

library(tempdisagg)
time.A <- ts(time, frequency = 4, start = 2005)
time.A 
         Qtr1     Qtr2     Qtr3     Qtr4
2005 14881.30 14989.60 15021.10 15190.30
2006 15275.00 15336.70 15431.30 15433.70
2007 15538.40 15606.60 15779.90 15916.20
2008 15831.70 16010.40 16205.60 16340.02
2009 16447.40 16581.82 16675.90 16799.36
2010       NA       NA       NA 17128.74
2011       NA       NA       NA 17586.85

我尝试使用 td 函数:

mdl <- td(time.A ~ 0,conversion="last",method="denton-cholette")

但是由于 NA,我得到了错误。有没有像na.rm=T这样的功能? 反正我可以用年度版的系列来解决问题

time.B<-window(time.A , start=c(2005,4), frequency =1)
time.B<-ts(time.B,frequency = 1, start = 2005)
mdl <- td(time.B ~ 0,conversion="last",method="denton-cholette")
predict(mdl)

         Qtr1     Qtr2     Qtr3     Qtr4
2005 15190.30 15190.30 15190.30 15190.30
2006 15251.15 15312.00 15372.85 15433.70
2007 15554.32 15674.95 15795.57 15916.20
2008 16022.15 16128.11 16234.06 16340.02
2009 16454.85 16569.69 16684.52 16799.36
2010 16881.70 16964.05 17046.39 17128.74
2011 17243.27 17357.79 17472.32 17586.85

所以我用预测的季度替换了我缺少的季度。 但我认为我还应该使用其他季度的信息,而不仅仅是年度系列。

您可以通过以下方式轻松插入您的系列:

zoo::na.approx(time.A)
         Qtr1     Qtr2     Qtr3     Qtr4
2005 14881.30 14989.60 15021.10 15190.30
2006 15275.00 15336.70 15431.30 15433.70
2007 15538.40 15606.60 15779.90 15916.20
2008 15831.70 16010.40 16205.60 16340.02
2009 16447.40 16581.82 16675.90 16799.36
2010 16881.70 16964.05 17046.39 17128.74
2011 17243.27 17357.79 17472.32 17586.85