我有一些季度交易预订数据,通常我可以非常准确地预测。然而,每隔4 - 5年,公司内部就会发生价格变动,导致预测数量低于或高于实际数量。使用Arima
调整此问题的最佳方法是什么?
我的数据从08Q1开始,到15Q1结束。第一次价格变动发生在11Q3,第二次发生在15Q1。
data <- ts(c(155782698, 159463653.4, 172741125.6, 200266239.9, 126129831.8, 138648461.5, 135678842.1, 242568446.1, 177019289.3, 200397120.6, 182516217.1, 306143365.6, 215193973.8, 239062450.2, 229124263.2, 370575384.7, 257757410.5, 256125841.6, 231879306.6, 415059425.9, 258567845, 274423841.3, 261799212.9, 429126949.7, 254770376.5, 329422935.1, 264029599.1, 493122080.3, 283776872.9), start=c(8,1), deltat=1/4)
dates <- c("08Q1", "08Q2", "08Q3", "08Q4", "09Q1", "09Q2", "09Q3", "09Q4", "10Q1", "10Q2", "10Q3", "10Q4", "11Q1", "11Q2", "11Q3", "11Q4", "12Q1", "12Q2", "12Q3", "12Q4", "13Q1", "13Q2", "13Q3", "13Q4", "14Q1", "14Q2", "14Q3", "14Q4", "15Q1")
我听说在Arima
你可以申请回归,但我并不完全确定回归在这种情况下究竟是什么以及如何应用它来获得预测。有没有人有想法可以提供帮助?
答案 0 :(得分:0)
为价格变化构建虚拟变量:
prices <- matrix(0, length(dates), 2)
prices[16:29,1] <- 1
prices[29,2] <- 1
这不是构建虚拟但最快的方法。我只看了&#34; 11Q3&#34;那是16和&#34; 15Q1&#34; tah是29。 所以我说11Q3 - 15Q1期间的假1和15Q1的假2#
然后构建一个模型:
model_reg <- arima(data, xreg = prices)
与之比较:
model <- arima(data)
然后预测下次使用的3个季度:
predict(model, 3)
predict(model_reg, 3, newxreg = matrix(1, 3, 2))
数据:
data <- ts(c(155782698, 159463653.4, 172741125.6, 200266239.9, 126129831.8, 138648461.5, 135678842.1, 242568446.1, 177019289.3, 200397120.6, 182516217.1, 306143365.6, 215193973.8, 239062450.2, 229124263.2, 370575384.7, 257757410.5, 256125841.6, 231879306.6, 415059425.9, 258567845, 274423841.3, 261799212.9, 429126949.7, 254770376.5, 329422935.1, 264029599.1, 493122080.3, 283776872.9), start=c(8,1), deltat=1/4)
dates <- c("08Q1", "08Q2", "08Q3", "08Q4", "09Q1", "09Q2", "09Q3", "09Q4", "10Q1", "10Q2", "10Q3", "10Q4", "11Q1", "11Q2", "11Q3", "11Q4", "12Q1", "12Q2", "12Q3", "12Q4", "13Q1", "13Q2", "13Q3", "13Q4", "14Q1", "14Q2", "14Q3", "14Q4", "15Q1")