我正在尝试填充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")图表结果1:https://i.stack.imgur.com/ozHDD.jpg
在该图中,您可以看到比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发布于 2018-03-20 19:35:49
第一个变量是日期吗?如果是这种情况,您的时间序列似乎是不规则间隔的(也称为不均匀间隔)。imputeTS实际上假设输入是一个规则间隔的时间序列。这可能就是为什么结果不像预期的原因。一种解决方案是通过添加附加的带有NA观测值的时间戳,然后使用imputeTS执行补偿,从而使时间序列均匀分布。
发布于 2018-03-20 19:46:33
如果我没理解错的话,你想要填补空白,看看大势所趋。如果是这样的话,我个人推荐使用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.000000https://stackoverflow.com/questions/48705976
复制相似问题