Я провел еще несколько часов, возясь с параметрами модели.Вместо того, чтобы использовать интервенционную переменную «чистый скачок» (0 и 1), я попытался постепенно увеличивать эффект в течение 200 периодов.Это помогло зафиксировать эффект вмешательства и сделать все коэффициенты значимыми, но я не могу использовать результаты, так как остатки модели обычно не распределяются.Вот код, который я использовал:
rm(list=ls())
library('ggplot2'); library('forecast'); library('tseries'); library('xts'); library(quantmod) ; library(lmtest)
start <- as.Date("2005-01-01")
end <- as.Date("2018-10-01")
getSymbols("NVDA", src = "yahoo", from = start, to = end)
plot(NVDA[, "NVDA.Close"], main = "NVIDIA")
# Adding dummy intervention variable
intDate<-as.Date("2016-04-05")
closing = NVDA[, "NVDA.Close"]
periods = 200
count = 0
closing$Intervention = 0
for (i in 1:nrow(closing)){
if (index(closing[i,1]) < intDate){
closing[i,"Intervention"] = 0
}
if(index(closing[i,1]) >= intDate){
count = count + 1
if(count<=periods){
closing[i,"Intervention"] = count*0.025
}
if(count>periods){
closing[i,"Intervention"] = periods*0.025
}
}
}
model<-auto.arima(closing[,"NVDA.Close"], xreg = closing[,"Intervention"])
model
coeftest(model)
dates = as.Date(index(closing),"YYYY-MM-DD")
fittedVal = xts(fitted.values(model), dates)
plot(NVDA[,"NVDA.Close"], col = "blue", type = "l")
lines(fittedVal, col = "red", type = "l")