Я использую ARIMA для создания прогноза положительных результатов на следующие 30 временных шагов на основе примерно 200 наблюдений pos_results_by_date
ar_pos_results = Arima(pos_results_by_date, order = c(1,1,5), include.drift=TRUE)
pos_forecast = forecast(ar_pos_results, h = 30)
Если я затем построю pos_forecast, все будет выглядеть нормально, и я получу стандарт график временного ряда с каждым наблюдением и оценкой на связанном графике:
plot(pos_forecast, type = "l")
Одна проблема с этим прогнозом заключается в том, что он генерирует некоторые отрицательные значения, которые я подверг цензуре, установив все отрицательные значения в среднем прогнозе а нижние границы равны 0:
to_zero = function(x){
if(x < 0){
return(0)
}
else{
return(x)
}
}
pos_forecast$mean = sapply(as.vector(pos_forecast$mean), to_zero)
pos_forecast$lower[,1] = sapply(as.vector(pos_forecast$lower[,1]),to_zero)
pos_forecast$lower[,2] = sapply(as.vector(pos_forecast$lower[,2]),to_zero)
Теперь, что бы я ни делал, plot (pos_forecast, type = "l") всегда возвращает разброс точек .
Неужто есть способ заставить эту работу работать?