Какова подходящая вменяемая функция для нелинейных данных TS?

Я пытаюсь заполнить недостающие данные в 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")

Графические результаты На изображении вы можете увидеть оценки Excel ближе к линии, чем R.

Ниже приведены данные, которые я использовал в качестве входных данных.

Спасибо

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

2 ответа

Если я правильно понял, вы хотите заполнить пробелы и посмотреть, какова общая тенденция. Если это так, я лично рекомендую использовать 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

Первая переменная - дата? Если это так, то ваш временной ряд кажется нерегулярно расположенным (также называемым неравномерно расположенным). ImputeTS фактически предполагает, что входные данные представляют собой регулярно разнесенные временные ряды. Вероятно, поэтому результаты не такие, как ожидалось. Решением может быть равномерное распределение временных рядов путем добавления дополнительных временных меток с наблюдениями NA, а затем выполнения вменения с помощью imputeTS.

Другие вопросы по тегам