나는 자산의 가격을 예측하기 위해 VAR 모델을 구축 중이며 내 방법이 통계적으로 적합한 지, 포함 된 테스트가 적절한 지 여부 및 입력 변수를 기반으로 신뢰할 수있는 예측을 보장하기 위해 더 많은 것이 필요한지 알고 싶습니다.
다음은 Granger 인과 관계를 확인하고 선택한 VAR 모델을 예측하는 현재 프로세스입니다.
require("forecast")
require("vars")
#Read Data
da=read.table("VARdata.txt", header=T)
dac <- c(2,3) # Select variables
x=da[,dac]
plot.ts(x)
summary(x)
#Run Augmented Dickey-Fuller tests to determine stationarity and differences to achieve stationarity.
ndiffs(x[, "VAR1"], alpha = 0.05, test = c("adf"))
ndiffs(x[, "VAR2"], alpha = 0.05, test = c("adf"))
#Difference to achieve stationarity
d.x1 = diff(x[, "VAR1"], differences = 2)
d.x2 = diff(x[, "VAR2"], differences = 2)
dx = cbind(d.x1, d.x2)
plot.ts(dx)
#Lag optimisation
VARselect(dx, lag.max = 10, type = "both")
#Vector autoregression with lags set according to results of lag optimisation.
var = VAR(dx, p=2)
#Test for serial autocorrelation using the Portmanteau test
#Rerun var model with other suggested lags if H0 can be rejected at 0.05
serial.test(var, lags.pt = 10, type = "PT.asymptotic")
#ARCH test (Autoregressive conditional heteroscedasdicity)
arch.test(var, lags.multi = 10)
summary(var)
#Granger Causality test
#Does x1 granger cause x2?
grangertest(d.x2 ~ d.x1, order = 2)
#Does x2 granger cause x1?
grangertest(d.x1 ~ d.x2, order = 2)
#Forecasting
prd <- predict(var, n.ahead = 10, ci = 0.95, dumvar = NULL)
print(prd)
plot(prd, "single")
이 방법이 들리나요?