Наличие множества проблем с объектами временных рядов в R

У меня необычайно трудное время, когда я имею дело с объектами временных рядов некоторых бюджетных данных.

Исходные данные - 14 460 строк платежей по ~1800 контрактам, где каждая строка имеет функцию ДД / ММ / ГГГГ и Сумма. Между 01.01.2000 и 31.12.2014 существует 5296 дней, но только 3133 из этих дней фактически имели платежи. Поэтому дни распределяются нерегулярно, причем в одни дни отображается более одного платежа по контракту, а в другие - ноль платежей.

Основная проблема, с которой я сталкиваюсь, - это жестокое упрямство, которое проявляют эти объекты временного ряда при ежедневной подаче данных, которые происходят с нерегулярными интервалами. Я даже объединил платежи с вектором с непрерывной датой, и у меня все еще остается та же проблема, а именно с периодичностью, периодичностью или order.by.

CTS_date_V <- data.frame(Date = seq(as.Date("2000/07/01"), as.Date("2014/12/31"), "days"))
exp_d <- merge(exp, CTS_date_V, by="Date", all.y = T)
exp_d$Amount[is.na(exp_d$Amount)] <- 0

head(exp_d[,c("Amount","Date")],20)
      Amount       Date
1        0.0 2000-07-01
2        0.0 2000-07-02
3        0.0 2000-07-03
4        0.0 2000-07-04
5   269909.4 2000-07-05
6   130021.9 2000-07-06
7  1454135.3 2000-07-06
8   140065.5 2000-07-07
9        0.0 2000-07-08
10       0.0 2000-07-09
11       0.0 2000-07-10
12  274147.2 2000-07-11
13  106959.2 2000-07-11
14  119208.6 2000-07-12
15       0.0 2000-07-13
16       0.0 2000-07-14
17       0.0 2000-07-15
18  125402.5 2000-07-16
19 1170603.1 2000-07-16
20 1908463.3 2000-07-16

Для большинства пакетов прогнозирования, с которыми я знаком (а также для любых вопросов, которые я задавал до сих пор о SO), таких как fpp, прогнозирование, timeSeries, tseries, xts и т. П., Требуется гораздо более упорядоченная функция Date для order.by или какая-то другая такая проблема.

Меня беспокоит уместность пакета R, а не статистического метода. Например, я пробовал несколько разных способов построения объектов временных рядов, необходимых для пакетов прогнозирования, включая XTS, TS, и у всех них есть проблемы либо с частотой, периодичностью, либо с запросом order.by,

ОБНОВИТЬ:

Я строю свой объект XTS с

exp_xts <- xts(exp_d$Amount, start = min(exp$Date), end = max(exp$Date), order.by=exp_d$Date, colnames = "Amount", frequency = "") 

head(exp_xts,15)
                [,1]
2000-07-01       0.0
2000-07-02       0.0
2000-07-03       0.0
2000-07-04       0.0
2000-07-05  269909.4
2000-07-06  130021.9
2000-07-06 1454135.3
2000-07-07  140065.5
2000-07-08       0.0
2000-07-09       0.0
2000-07-10       0.0
2000-07-11  274147.2
2000-07-11  106959.2
2000-07-12  119208.6
2000-07-13       0.0

без проблем, и этот объект может быть plot.xts()Эд, но когда я пытаюсь

fit_xts <- stl(exp_xts, s.window="periodic",robust = T) 

это говорит

Error in if (frequency > 1 && abs(frequency - round(frequency)) < ts.eps) frequency <- round(frequency) : missing value where TRUE/FALSE needed`

2 ответа

Я пытался использовать объекты временных рядов в R для соревнований по борьбе. Я обнаружил, что использование прогнозов временных рядов с использованием различных методов прогнозирования временных рядов не работает для меня. Для меня сработало создание стандартного стандартного R-фрейма данных и создание нейронной сети на основе контекстных данных, таких как: температура, день недели, день года, сегодня праздник или нет и так далее.

Что это может означать для вас, поскольку вы не делаете прогнозирование, но простой статистический анализ состоит в том, что, может быть, вам вообще не нужна функциональность временных рядов, и вы могли бы просто использовать стандартный фрейм данных 'R'?

В конце концов, я занял 9-е место, используя стандартный фрейм данных и нейронную сеть, без временных рядов:-)

Я думаю, что это может быть связано со следующей проблемой, с которой я недавно столкнулся.

Я пытался запустить автокорреляционную функцию на временных рядах (acf()). Данные были преобразованы в подходящий формат временных рядов с использованием пакета xts/zoo. Тем не мение, acf() это функция, которая существует в R без установки какого-либо пакета, поэтому она настраивается на данные, преобразованные во временные ряды с помощью более "традиционной" функции, которая в данном случае ts(), Так что этот код вернул ту же ошибку, что и в вашем случае:

ts<- xts(dane.filtered$CRO, dane.filtered$Date_xts)
acf(ts, col="red")

Решение состоит в том, чтобы создать временные ряды, используя встроенную в R функцию временных рядов по умолчанию (этот код работает отлично):

ts <- ts(dane.filtered$CRO)
acf(ts, col="red")

Надеюсь, поможет.

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