我试图填写R中缺少的数据。它是一个带日期的简单变量。
我使用ImputeTS,但是当我映射输出时,我可以告诉数据已经输出。在Excel中,当我使用直线计算时,它看起来更接近。我想避免这种情况,因为我过分依赖于太少的数据点。
library("imputeTS")
org = read.csv(file.choose(),header=T)
m_default = na.kalman(org)
m_auto <- na.kalman(org, model = "auto.arima")
m_struct <- na.kalman(org, model ="StructTS", smooth = TRUE)
m_trends <- na.kalman(org, model ="StructTS", smooth = TRUE, type = "trend")
m_ip <- na.interpolation(org, option ="linear")
Graphed Results 在图像中,您可以看到比R更接近线的excel估计值。
以下是我用作输入的数据。
谢谢
42131 14897320
42161 15309884
42185 na
42191 15736110
42221 16193078
42251 16660808
42277 na
42281 17169827
42311 17710224
42341 18293716
42369 na
42371 18891824
42401 19525236
42431 20202090
42460 na
42461 20913242
42491 21668513
42551 23271395
42575 23918755
42605 24700462
42635 25513112
42643 na
42665 26363177
42695 27247927
42725 28182277
42735 na
42755 29116689
42785 30102583
42809 30962403
42815 31156665
42823 31464561
42825 na
42853 32565105
42883 33710529
42913 34908319
42916 na
42943 36166021
42973 37466067
43003 38813763
43008 na
43033 40247438
43055 41326456
43056 41416270
43063 41741074
43085 42881998
43089 43121038
43100 na
43115 44419898
答案 0 :(得分:0)
第一个变量是日期吗? 如果是这种情况,您的时间序列似乎是不规则的间隔(也称为不均匀间隔)。 imputeTS实际上假设输入是规则间隔的时间序列。这可能是结果不如预期的原因。解决方案可以是通过在NA观测中添加额外的时间戳,然后使用imputeTS进行插补来使时间序列均匀间隔。
答案 1 :(得分:0)
如果我理解正确,你想填补空白,看看总体趋势是什么。如果是这种情况,我个人建议使用stats::approx()
,如下所示。
> a <- c(1,2,NA,5, NA, NA, 7) # this would be org[,2]
> stats::approx(a, method = 'linear', n = 7)
$x
[1] 1 2 3 4 5 6 7
$y
[1] 1.000000 2.000000 3.500000 5.000000 5.666667 6.333333 7.000000