Я пытаюсь составить прогноз прибытия звонков в центр поддержки через полчаса, используя 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 ()