У меня есть данные об игроках с течением времени, в которых отсутствует количество игроков за несколько лет. Я пытаюсь заполнить/предсказать отсутствующие данные о подсчете игроков за разные промежутки времени.
Данные доступны здесь: https://1drv.ms/u/s!AvEZ_QPY7OZuhJAlKJN89rH185SUhA
Я следую приведенным ниже инструкциям, которые используют KalmanRun для вменения пропущенных значений. Я пробовал 3 разных подхода к преобразованию данных - с использованием объекта xts и 2 подхода к его преобразованию в данные временных рядов.
https://stats.stackexchange.com/questions/104565/how-to-use-auto-arima-to-impute-missing-values
require(forecast)
library(xts)
library(anytime)
library(DescTools)
df_temp = read.csv("r_share.csv")
df_temp[['DateTime']] <- as.Date(strptime(df_temp[['DateTime']], format='%Y-%m-%d %H:%M:%S'))
3 подхода к конвертации данных; xts работает лучше всего, возвращая ненулевые данные, которые можно интерпретировать.
#Convert df_temp to TimeSeries object
df_temp = xts(df_temp$Players, df_temp$DateTime)
#df_temp = as.ts(log(df_temp$Players), start = start(df_temp$DateTime), end = end(df_temp$DateTime), frequency = 365)
#df_temp = ts(df_temp$Players, start = c(2013, 02, 02), end = c(2016, 01, 31), frequency = 365)
Подгонка и зарисовка:
fit <- auto.arima(df_temp, seasonal = TRUE)
id.na <- which(is.na(df_temp))
kr <- KalmanRun(index(df_temp), fit$model, update = FALSE)
#?KalmanRun$tol
for (i in id.na)
df_temp[i] <- fit$model$Z %*% kr$states[i,]
plot(df_temp)
Ожидаемый результат — это данные, которые имитируют изменчивость фактических данных и различаются для каждого интервала, в то время как фактический результат является относительно постоянным и неизменным (оба интервала имеют почти одинаковый прогноз).