如何用R做向量自回归模型

如题所述

第1个回答  2024-12-02
要在R中实现向量自回归模型(VAR),您需要遵循以下步骤。首先,准备数据集。这里有一个例子:

halfyear_vector=data.frame(hsi_ir_h_ts,cenlhkl_ir_h_ts,m2_h_ts,ue_h_ts,cpi_h_ts,exp_h_ts,gdp_h_ts)

将其转换为时间序列对象:

halfyear_vector=ts(halfyear_vector,start=c(1995,1),frequency=2)

绘制数据:

plot(halfyear_vector,plot.type="single",lty=1:7,col=1:7)

添加标题和图例:

title("key indicators")

legend("topleft",c("hsi_ir_h_ts","cenlhkl_ir_h_ts","m2_h_ts","ue_h_ts","cpi_h_ts","exp_h_ts","gdp_h_ts"),lty=1:7,col=1:7)

进行稳定性检验:

for (i in 1:7) { print(kpss.test(halfyear_vector[,i],null="Level")) print(kpss.test(halfyear_vector[,i],null="Trend")) print(kpss.test(diff(halfyear_vector[,i]),null="Level")) print(kpss.test(diff(halfyear_vector[,i]),null="Trend")) }

进行ADF检验:

adf.test(halfyear_vector, alternative = c("stationary", "explosive"), k = trunc((length(halfyear_vector)-1)^(1/3)))

进行格兰杰因果检验:

granger.test(halfyear_vector,p=7)

进行指标共线性判断:

计算X矩阵的秩:qr(X)$rank,如果不是满秩的,说明其中有Xi可以用其他的X的线性组合表示;也可以计算条件数kappa(X),k<100,说明共线性程度小,如果100<1000,有较强的多重共线性,k>1000,存在严重的多重共线性。可以进行逐步回归,用step()命令,比如你一开始的模型是fm,step(fm)就可以了

进行VAR阶数判断:

AIC准则——计算AIC统计量,模型的残差平方和(SS)除以样本容量(n),再取对数,加上2倍的解释变量个数(k)除以样本容量。AIC=log(SS/n)+2*k/n 寻找某一k值是AIC达到极小值,则k就是最优滞后阶数。

SC准则——SC=log(SS/n)+log(n)*k/n

VAR模型拟合:

halfyear_VAR=VAR(halfyear_vector,p=3,type="both")

VAR模型的稳定性、自相关性,异方差检验:

R里有两种检验方法是常用的,LiMcLeod{portes}可以进行多元的Portmanteau Q检验。。。protest{portes}可以进行一元的Portmanteau Q检验,把函数中的参数SquaredQ=T 还可以把序列平方之后再检验自相关性。。。也相当于进行了异方差检验。。。 自相关检验可以通过ACF图,函数是acf{stats},或者单位根检验ur.df{urca}进行ADF检验或者ur.pp{urca}进行PP检验,或者进行白噪声检验Box.test{stats},相当于检验了序列的二阶自相关性。。。 {}里面的是package的名字

最后,进行预测:

halfyear_VAR_Predict=predict(halfyear_VAR,n.head=1,ci=0.9999)

绘制预测结果:

plot(halfyear_VAR_Predict)

计算95%,99%,99.9%分位数的预测取值:

...
相似回答