R сегментировал объект временного ряда, пытаясь заставить его работать - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть простая таблица (d_frame) с ежемесячными датами и значениями dput делает это:

dput (d_frame) структура (список (даты = структура (c (1325376000, 1328054400, 1330560000, 1333238400, 1335830400, 1338508800, 1341100800, 1343779200, 1346457600, 1349049600, 1351728000, 1354320000, 1356998400, 1359676800, 1362096000, 1364774400, 1367366400, 1370044800, 1372636800, 1375315200, 1377993600, 1380585600, 1383264000, 1385856000, 1388534400, 1391212800, 1393632000, 1396310400, 1398902400, 1401580800, 1404172800, 1406851200, 1409529600, 1412121600, 1414800000, 1417392000, 1420070400, 1422748800, 1425168000, 1427846400, 1430438400, 1433116800, 1435708800, 1438387200, 1441065600, 1443657600, 1446336000, 1448928000, 1451606400, 1454284800, 1456790400, 1459468800, 1462060800, 1464739200, 1467331200, 1470009600, 1472688000, 1475280000, 1477958400, 1480550400, 1483228800, 1485907200, 1488326400, 1491004800, 1493596800, 1496275200, 1498867200, 1501545600, 1504224000, 1506816000, 1509494400, 1512086400), класс = c ("POSIXct", "POSIXt") ), tzone = "UTC"), значения = c (0, 0, 0, 0, 0, 0, 0,00774754, 0,22403801, 0, 5.12030095, 0.23120272, 0.99000874, 22.22207733, 0.333296, 692,19566134, 7,76688971, 2,97430466, 134,36211377, 22,91894814, 65.14574578, 135.81266758, 18.37095304, 185.25901758, 233.86535558, 50,19910856, 67,54904705, 92,09374684, 236,3588002, 39,6182546, 107.01412237, 45.46568388, 28.46083664, 147.03030045, 12.05623131, 86.26622661, 86.78390353, 52.59616771, 135.24410876, 752.67471689, 90,77072693, 318,08100321, 190,17687122, 32,45995024, 229,85208941, 99,68676994, 78,23118358, 75,22676899, 244,54213373, 250,24590849, 129.22758339, 220.46666166, 145.10114173, 76.27997413, 134.1304349, 93,95382007, 171,43174451, 205,318684, 72,75873803, 905,44077088, 65.68187302, 186.01373065, 22.39356267, 58.0947934, 345.76627723, 49,2540693, 77,10619382, 73,55552926, 847,78421674, 43,39077872, 49.83486911, 405.60316183, 18.25071976)), row.names = c (NA, -72L ), класс = c ("tbl_df", "tbl", "data.frame"))

В R d_frame это выглядит так:

enter image description here

Работая с d_frame, я сделал из него временную серию:

d.ts <- ts(d_frame[2], start = c(2011, 12), frequency = 12)

У него четкий тренд, но с огромным случайным компонентом, поэтому я использовал библиотеку TRR для извлечения компонента тренда из d.ts:

dts_components <- decompose(d.ts)

dts_trend <- dts_components$trend

Затем я делаю линейную модель вне тренда:

trend_lin.mod <- lm(dts_trend[,1] ~ time(dts_trend))

Теперь, когда я вижу 3 этапа на графике (я знаю, что они есть), я хочу выполнить кусочный анализ с использованием библиотеки Segmented. Я пытаюсь сделать Сегментированную модель с включенными датами перерыва или без них и получить ошибки:

d.seg <- segmented(dts_trend, seg.Z = ~ time(dts_trend), psi = list(c('2014-07-01', '2016-10-01')))

, что дает:

Ошибка в segmented.default (dts_trend, seg.Z = ~ время (dts_trend), psi = list (c ("2014-07-01",: переменные в seg.Z' and psi 'не совпадают

или я пробую один без пси:

d.seg <- segmented(dts_trend, seg.Z = ~ time(dts_trend))

, что дает:

Ошибка: оператор $ недопустим для атомарных векторов

Все, что я хочу, чтобы Segmented работал над моей серией времени dts_trend. Если вы можете помочь, я был бы очень признателен, так как я новичок в R и действительно застрял.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...