Проведение анализа интервенций с использованием ARIMA-модели данных о запасах в R - PullRequest
0 голосов
/ 11 декабря 2018

У меня проблемы с анализом интервенций.Я моделирую влияние на цену закрытия Nvidia (NVDA), когда они объявили о своем суперкомпьютере глубокого обучения в апреле 2016 года. Я добавил фиктивную переменную, равную 0 до даты вмешательства и 1 после, и добавил ее в качестве регрессора.в моей модели.Моя проблема в том, что я не могу понять результат, так как я никогда не получаю ничего существенного из коэффициента вмешательства.Я не могу сказать, делаю ли я что-то не так.Вот мой код:

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") #  sets the intervention Date  
closing = NVDA[, "NVDA.Close"]
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){
    closing[i,"Intervention"] = 1
  }
}

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")

1 Ответ

0 голосов
/ 11 декабря 2018

Я провел еще несколько часов, возясь с параметрами модели.Вместо того, чтобы использовать интервенционную переменную «чистый скачок» (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")
...