Прогноз на полчаса с использованием SARIMAX в R - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь составить прогноз прибытия звонков в центр поддержки через полчаса, используя R. Ниже приведен код, который я использую.

library(TSA)
library(forecast)

 # Determine seasonality of time series
ts_report = read.csv("C:/Users/call_volume.csv")
p = periodogram(ts_report$contacts)


# Sort by the power of the signal
df = data.frame(freq=p$freq, spec=p$spec)
sorted_by_power = df[order(-df$spec),]

# Convert the frequency to time 
calculate_periodicity = 1 / sorted_by_power$freq
print(calculate_periodicity)

# Conver to msts package to plug into fourier
msts_usage = msts(ts_report$contacts,seasonal.periods = c(335, 48, 168, 68, 112, 62, 18225))
log_msts_usage = log(msts_usage + 0.00000000000001)

# calculate the order of the arima model
usage_arima_model <- auto.arima(log_msts_usage, 
xreg=fourier(log_msts_usage,K=c(2, 2, 2, 2, 2, 2, 2)), seasonal=FALSE)

# forecast using the arima model
usage_forecast = forecast(usage_arima_model, xreg=fourier(log_msts_usage, K=c(2, 2, 2, 2, 2, 2, 2), h=1488))

# set values in recursive list "usage_forecast" to exponential values

usage_forecast$mean= exp(usage_forecast$mean)
usage_forecast$x = exp(usage_forecast$x)
usage_forecast[["lower"]] = exp(usage_forecast[["lower"]])
usage_forecast[["upper"]] = exp(usage_forecast[["upper"]])

# plot
autoplot(usage_forecast, xlab = 'Time', ylab = 'Usage')

Когда я запускаю это без установки msts_usage в журнал (msts_usage), я получаю отрицательные значения прогноза, которые не имеют смысла для колл-центра.Поэтому я пытался использовать модель arima для значения журнала msts_usage.Однако после создания прогноза мне необходимо преобразовать данные обратно в исходный масштаб.Это где я сталкиваюсь с моей проблемой.

Я не могу запустить exp () для use_forecast, так как это рекурсивный список, поэтому я пытаюсь найти правильные значения в списке для запуска exp ().Когда я запускаю exp () для среднего значения, x, ниже и выше, Y-доступ автоплота масштабируется до 8e + 16, что делает сюжет нечитаемым.

Я надеялся, что кто-нибудь сможет помочь мне выяснить, правильно ли я это делаю, и какие значения мне следует масштабировать с помощью exp ()

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