我对 ARIMA 方法真的很陌生,并且正在尝试预测电力负荷。我已经整合了:电力负荷、温度、工作日(虚拟)、公共假期和学校假期。我的模型尝试在一天中的每个小时执行具有线性回归的非季节性 ARIMA。
这是我的 24 小时(上午 6 点)之一的示例代码:
# ElecLoad contains hourly loads and other data for 2005 and 2006 (=2*365*24 entries):
# 1. Electricity load in MW
# 2. Day of week: sunday=0, monday=1, etc
# 3. Hour of the day: 0 -> 23
# 4. Public Holiday: 1 if Public Holiday, 0 otherwise
# 5. School vacation: 1 if no scool
# 6. Temperature in °F
# Create the week matrix = dumy variables for the weekdays
weekmatrix<-model.matrix(~as.factor(ElecLoad[,2]))
#Remove intercept
weekmatrix<-weakmatrix[,-1]
#Generate FullTable
FullTable<-cbind(load=ElecLoad[,1], weekmatrix, ElecLoad[,4],
ElecLoad[,3],ElecLoad[,5],ElecLoad[,5]^2, ElecLoad[,6])
colnames(FullTable)<-c("Load","mon","tue","wed","thu","fri","sat",
"SchoolHol","PubHol","Temp","Temp2","Hour")
#Create the xreg = substed for a specific hour of the day (column 12 = Hour)
xreg<-subset(FullTable[,2:11], FullTable[,12] == 7)
#Create the Load time serie, also a subset of the full table
LoadTs<-ts(subset(FullTable[,1], FullTable[,12] == 7),start=1,frequency=1)
#Launch of auto.arima
ArimaLoad<-auto.arima(LoadTs, xreg=xreg, lambda=0)
当我尝试使用与 2 年相同的数据进行预测时xreg,这是我的输出
plot(forecast(ArimaLoad,xreg=xreg), include=0)

当我尝试绘制拟合时,它看起来与我原来的负载相同
plot(fitted(ArimaLoad))

我不明白为什么与具有相同矩阵prediction()的 有很大不同。这是正常行为吗,如何改进我的模型以更好地适应实际情况?fitted()xreg
非常感谢你的支持。
我不确定我是否从您的建议中理解了所有内容。
你的意思是我应该建立第一个模型来预测每日平均负载(我更喜欢平均值而不是总和,因为由于 DST,有些日子没有 24 小时......)。该模型将是确定性的,但我看不出您在考虑哪种模型?多元线性回归好吗?我更喜欢考虑 log(load) 来使不同的参数相乘,我认为这更适合现实。那么我应该有 24 小时模型,取每日平均值,然后以某种季节性影响进行拆分?我应该在某处使用 ARIMA 模型吗?我不相信月份会产生影响,在我看来,没有理由认为 1 月份的消费比 8 月份更重要,除非我们考虑温度和假期的影响。一天中的时间与“ 这是我每小时都考虑特定模型的原因。同样的方式,弱者的每一天都是不同的。
我在同一小时(上午 7:00)尝试了多元线性回归,结果看起来还不错。
#Create the frame.data
Load<-subset(FullTable[,1], FullTable[,12] == 7)
FullData<-cbind(LogLoad=log(Load), xreg)
FrameData<-data.frame(FullData)
# multilinear regression
mlin<-lm(LogLoad ~ mon+tue+wed+thu+fri+sat+SchoolHol+PubHol+Temp+`Temp2`, FrameData)
plot(exp(mlin$model$LogLoad), type="l",col="blue")
lines(exp(fitted(mlin)), col="red")

如果我重复使用相同的数据条目(2005-2006)并且看起来与蓝色的原始负载不远(对于一个简单的模型来说没有那么糟糕),那么红色的 fit() 现在与 predict() 完全相同。我仍然不完全理解为什么它不能与 ARIMA 一起使用,因为它还考虑了多线性回归。
现在我的“简单”模型已经考虑了几个参数,比如温度、假期、学校一周中的一天和一天中的小时(当地时间,而不是 UCT)。如何进一步改进我的模型?如何确保参数不变?有具体的方法吗?