Исправление отсутствующих данных - как преобразовать таблицу в объект TS, который работает с KalmanRun? - PullRequest
0 голосов
/ 26 июня 2019

Я работаю с данными из SteamCharts в игре - Warframe (https://steamdb.info/app/230410/graphs/)

Редактировать - данные загружаются в формате .csv рядом с "Диаграммы Steam на каждый день"

Я моделирую данные временных рядов, но в используемом пакете нет пропущенных значений. Чтобы решить эту проблему, я использую arima для прогнозирования пропущенных значений (инструкции по ссылке воспроизводятся ниже)

https://stats.stackexchange.com/questions/104565/how-to-use-auto-arima-to-impute-missing-values

require(forecast)
# sample series
x0 <- x <- log(AirPassengers)
y <- x
# set some missing values
x[c(10,60:71,100,130)] <- NA
# fit model
fit <- auto.arima(x)
# Kalman filter
kr <- KalmanRun(x, fit$model)
# impute missing values Z %*% alpha at each missing observation
id.na <- which(is.na(x))
for (i in id.na)
  y[i] <- fit$model$Z %*% kr$states[i,]
# alternative to the explicit loop above
sapply(id.na, FUN = function(x, Z, alpha) Z %*% alpha[x,], 
  Z = fit$model$Z, alpha = kr$states)

На данный момент мне удалось преобразовать в

  1. Преобразовать строки Date в объект DateTime в моем фрейме данных:
df <- read.csv(file="chart.csv", header=TRUE, sep=",")
df = df %>% select(DateTime, Players)
df_temp[['DateTime']] <- as.Date(strptime(df[['DateTime']], format='%Y-%m-%d %H:%M:%S'))
  1. Получить объект xts из моих данных (я думаю, что arima работает только с ts)
df = xts(df$Players, df$DateTime)
df = ts(df)

Модель arima подходит, но когда я пытаюсь использовать KalmanRun, я получаю следующую ошибку:

Error in KalmanRun(x, fit$model) : invalid argument type

Я считаю, что есть проблема в том, как я преобразовываю его в объект временной серии, но не знаю, как его решить. Любая помощь будет принята с благодарностью. Спасибо!

...