주요 편집 : 지금까지 그들의 답변에 대해 Dave & Nick에게 큰 감사를 표하고 싶습니다. 좋은 소식은 내가 일할 루프가 있다는 것입니다 (배치 예측에 대한 Hydnman 교수의 게시물에서 빌린 원칙). 미해결 쿼리를 통합하려면 다음을 수행하십시오.
a) auto.arima의 최대 반복 횟수를 늘리는 방법-많은 외인성 변수를 사용하면 auto.arima가 최종 모델에 수렴하기 전에 최대 반복 횟수에 도달 한 것으로 보입니다. 내가 오해하는 경우 수정하십시오.
b) Nick의 한 답변은 시간 간격에 대한 나의 예측은 해당 시간 간격에서만 파생되며 그 전날의 사건의 영향을받지 않는다는 것을 강조합니다. 이 데이터를 다루는 내 본능은 이것이 중요한 문제를 일으키지 않아야한다고 말하지만이를 다루는 방법에 대한 제안에 열려 있습니다.
c) Dave는 예측 변수를 둘러싼 리드 / 래그 시간을 식별하기 위해 훨씬 더 정교한 접근 방식이 필요하다고 지적했습니다. 누구든지 R에서 프로그래밍 방식에 대한 경험이 있습니까? 물론 제한 사항이있을 것으로 예상하지만이 프로젝트를 가능한 한 많이 수행하고 싶습니다. 다른 사람들도이 프로젝트를 사용해야한다는 것을 의심하지 않습니다.
d) 새로운 쿼리이지만 현재 작업과 완전히 관련되어 있습니다. auto.arima는 주문을 선택할 때 회귀자를 고려합니까?
상점 방문을 예측하려고합니다. 이사 휴가, 윤년 및 산발적 사건 (필수적으로 이상치)을 설명 할 수있는 능력이 필요합니다. 이를 바탕으로 ARIMAX가 외생 변수를 사용하여 여러 계절 성과 위에서 언급 한 요소를 모델링하는 최선의 방법이라고 생각합니다.
데이터는 24 시간 간격으로 기록됩니다. 내 데이터의 제로 양, 특히 매우 적은 방문 횟수를 볼 수있는 시간대에 문제가있는 것으로 판명되었습니다. 또한 개관 시간은 비교적 불규칙합니다.
또한 3 년 이상의 과거 데이터를 가진 하나의 완전한 시계열로 예측할 때 계산 시간이 엄청납니다. 나는 매일 시계를 별도의 시계열로 계산하여 더 빨라질 것이라고 생각했으며, 바쁜 시간에 이것을 테스트 할 때 더 높은 정확도를 얻는 것처럼 보이지만 다시는 늦은 / 늦은 시간에 문제가되는 것으로 판명되었습니다. 지속적으로 방문을받지 않습니다. 프로세스가 auto.arima를 사용하면 이점이 있다고 생각하지만 최대 반복 횟수에 도달하기 전에 모델에 수렴 할 수없는 것 같습니다 (따라서 수동 맞춤 및 maxit 절 사용).
방문 = 0 일 때 외인 변수를 만들어 '누락'데이터를 처리하려고했습니다. 다시 말하지만, 방문이없는 유일한 시간은 상점이 하루 동안 문을 닫는 경우에만 더 바쁜 시간에 효과적입니다. 이러한 경우, 외인성 변수는 이전 예측이 끝나고 이전에 닫 히던 날의 영향을 포함하지 않고이를 예측하기 위해이를 성공적으로 처리하는 것으로 보입니다. 그러나 상점이 열려 있지만 항상 방문을받는 것은 아닌 조용한 시간을 예측하는 데이 원칙을 사용하는 방법을 잘 모르겠습니다.
Hyndman 교수의 R의 배치 예측에 대한 게시물의 도움으로 24 시리즈 예측에 대한 루프를 설정하려고하지만 오후 1시 이후에는 예측하고 싶지 않아 이유를 알 수 없습니다. "optim (init [mask], armafn, method = optim.method, hessian = TRUE, : finite-finite finite-difference value [1]"오류가 발생하지만 모든 계열의 길이가 같고 본질적으로 같은 매트릭스, 왜 이런 일이 일어나고 있는지 이해할 수 없습니다. 이것은 매트릭스가 전체 순위가 아님을 의미합니다. 아니요?이 접근법에서 이것을 피할 수 있습니까?
https://www.dropbox.com/s/26ov3xp4ayig4ws/Data.zip
date()
#Read input files
INPUT <- read.csv("Input.csv")
XREGFDATA <- read.csv("xreg.csv")
#Subset time series data from the input file
TS <- ts(INPUT[,2:25], f=7)
fcast <- matrix(0, nrow=nrow(XREGFDATA),ncol=ncol(TS))
#Create matrix of exogenous variables for forecasting.
xregf <- (cbind(Weekday=model.matrix(~as.factor(XREGFDATA$WEEKDAY)),
Month=model.matrix(~as.factor(XREGFDATA$MONTH)),
Week=model.matrix(~as.factor(XREGFDATA$WEEK)),
Nodata=XREGFDATA$NoData,
NewYearsDay=XREGFDATA$NewYearsDay,
GoodFriday=XREGFDATA$GoodFriday,
EasterWeekend=XREGFDATA$EasterWeekend,
EasterMonday=XREGFDATA$EasterMonday,
MayDay=XREGFDATA$MayDay,
SpringBH=XREGFDATA$SpringBH,
SummerBH=XREGFDATA$SummerBH,
Christmas=XREGFDATA$Christmas,
BoxingDay=XREGFDATA$BoxingDay))
#Remove intercepts
xregf <- xregf[,c(-1,-8,-20)]
NoFcast <- 0
for(i in 1:24) {
if(max(INPUT[,i+1])>0) {
#The exogenous variables used to fit are the same for all series except for the
#'Nodata' variable. This is to handle missing data for each series
xreg <- (cbind(Weekday=model.matrix(~as.factor(INPUT$WEEKDAY)),
Month=model.matrix(~as.factor(INPUT$MONTH)),
Week=model.matrix(~as.factor(INPUT$WEEK)),
Nodata=ifelse(INPUT[,i+1] < 1,1,0),
NewYearsDay=INPUT$NewYearsDay,
GoodFriday=INPUT$GoodFriday,
EasterWeekend=INPUT$EasterWeekend,
EasterMonday=INPUT$EasterMonday,
MayDay=INPUT$MayDay,
SpringBH=INPUT$SpringBH,
SummerBH=INPUT$SummerBH,
Christmas=INPUT$Christmas,
BoxingDay=INPUT$BoxingDay))
xreg <- xreg[,c(-1,-8,-20)]
ARIMAXfit <- Arima(TS[,i],
order=c(0,1,8), seasonal=c(0,1,0),
include.drift=TRUE,
xreg=xreg,
lambda=BoxCox.lambda(TS[,i])
,optim.control = list(maxit=1500), method="ML")
fcast[,i] <- forecast(ARIMAXfit, xreg=xregf)$mean
} else{
NoFcast <- NoFcast +1
}
}
#Save the forecasts to .csv
write(t(fcast),file="fcasts.csv",sep=",",ncol=ncol(fcast))
date()
나는 이것에 관한 방법에 대한 건설적인 비판 과이 스크립트가 작동하는 데 도움이되는 것에 대해 완전히 감사하겠습니다. 사용 가능한 다른 소프트웨어가 있음을 알고 있지만 여기에서 R 및 / 또는 SPSS 사용으로 엄격하게 제한됩니다 ...
또한 저는이 포럼을 처음 접했습니다. 가능한 한 완전한 설명을 제공하고, 이전에 수행 한 연구를 설명하고, 재현 가능한 예를 제공하려고 노력했습니다. 이것이 충분하기를 희망하지만 내 게시물을 개선하기 위해 제공 할 수있는 다른 것이 있으면 알려주십시오.
편집 : Nick은 먼저 일일 합계를 사용하도록 제안했습니다. 나는 이것을 테스트했으며 외생 변수는 매일, 매주 및 매년 계절을 포착하는 예측을 생성한다고 덧붙여 야합니다. Nick이 언급했듯이 특정 날짜의 오후 4시에 대한 예측은 하루의 이전 시간에 영향을받지 않지만 이것은 내가 매 시간을 별도의 시리즈로 예측하는 다른 이유 중 하나였습니다.
편집 : 09/08/13, 루프의 문제는 단순히 테스트에 사용한 원래 주문과 관련이 있습니다. 나는 이것을 빨리 발견하고 auto.arima 가이 데이터로 작업하기 위해 더 긴급하게 노력해야합니다-위의 a) & d)를 참조하십시오.