原创R语言随机搜索变量选择SSVS估计贝叶斯向量自回归BVAR模型数据分析报告论文附代码数据.docx
- 文档编号:2015546
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:10
- 大小:146.94KB
原创R语言随机搜索变量选择SSVS估计贝叶斯向量自回归BVAR模型数据分析报告论文附代码数据.docx
《原创R语言随机搜索变量选择SSVS估计贝叶斯向量自回归BVAR模型数据分析报告论文附代码数据.docx》由会员分享,可在线阅读,更多相关《原创R语言随机搜索变量选择SSVS估计贝叶斯向量自回归BVAR模型数据分析报告论文附代码数据.docx(10页珍藏版)》请在冰豆网上搜索。
原创R语言随机搜索变量选择SSVS估计贝叶斯向量自回归BVAR模型数据分析报告论文附代码数据
R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型数据分析报告
介绍
向量自回归(VAR)模型的一般缺点是,估计系数的数量与滞后的数量成比例地增加。
因此,随着滞后次数的增加,每个参数可用的信息较少。
在贝叶斯VAR文献中,减轻这种所谓的维数诅咒的一种方法是随机搜索变量选择(SSVS),由George等人提出(2008)。
SSVS的基本思想是将通常使用的先验方差分配给应包含在模型中的参数,将不相关参数的先验方差接近零。
这样,通常就可以估算出相关参数,并且无关变量的后验值接近于零,因此它们对预测和冲激响应没有显着影响。
这是通过在模型之前添加层次结构来实现的,其中在采样算法的每个步骤中评估变量的相关性。
这篇文章介绍了使用SSVS估计贝叶斯向量自回归(BVAR)模型。
它使用Lütkepohl(2007)的数据集E1,其中包含有关1960Q1至1982Q4十亿德国马克的西德固定投资,可支配收入和消费支出的数据。
加载数据并生成数据:
library(bvartools)#install.packages("bvartools")
#Loadandtransformdata
data("e1")
e1<-diff(log(e1))
#GenerateVAR
data<-gen_var(e1,p=4,deterministic="const")
#Getdatamatrices
y<-data$Y[,1:
71]
x<-data$Z[,1:
71]
估算值
根据George等人所述的半自动方法来设置参数的先验方差(2008)。
对于所有变量,先验包含概率设置为0.5。
误差方差-协方差矩阵的先验信息不足。
#Resetrandomnumbergeneratorforreproducibility
set.seed(1234567)
t<-ncol(y)#Numberofobservations
k<-nrow(y)#Numberofendogenousvariables
m<-k*nrow(x)#Numberofestimatedcoefficients
#Coefficientpriors
a_mu_prior<-matrix(0,m)#Vectorofpriormeans
#SSVSpriors(semiautomaticapproach)
ols<-tcrossprod(y,x)%*%solve(tcrossprod(x))#OLSestimates
sigma_ols<-tcrossprod(y-ols%*%x)/(t-nrow(x))#OLSerrorcovariancematrix
cov_ols<-kronecker(solve(tcrossprod(x)),sigma_ols)
se_ols<-matrix(sqrt(diag(cov_ols)))#OLSstandarderrors
tau0<-se_ols*0.1#Priorifexcluded
tau1<-se_ols*10#Priorifincluded
#Priorforinclusionparameter
prob_prior<-matrix(0.5,m)
#Priorforvariance-covariancematrix
u_sigma_df_prior<-0#Priordegreesoffreedom
u_sigma_scale_prior<-diag(0,k)#Priorcovariancematrix
u_sigma_df_post<-t+u_sigma_df_prior#Posteriordegreesoffreedom
初始参数值设置为零,这意味着在Gibbs采样器的第一步中应相对自由地估算所有参数。
#Initialvalues
a<-matrix(0,m)
a_v_i_prior<-diag(1/c(tau1)^2,m)#Inverseofthepriorcovariancematrix
#Datacontainersforposteriordraws
iter<-15000#NumberoftotalGibssamplerdraws
burnin<-5000#Numberofburn-indraws
store<-iter-burnin
draws_a<-matrix(NA,m,store)
draws_lambda<-matrix(NA,m,store)
draws_sigma<-matrix(NA,k^2,store)
可以直接将SSVS添加到VAR模型的标准Gibbs采样器算法中。
在此示例中,常数项从SSVS中排除,这可以通过指定来实现include=1:
36。
#Resetrandomnumbergeneratorforreproducibility
set.seed(1234567)
#StartGibbssampler
for(drawin1:
iter){
#Drawvariance-covariancematrix
u<-y-matrix(a,k)%*%x#Obtainresiduals
#Scaleposterior
u_sigma_scale_post<-solve(u_sigma_scale_prior+tcrossprod(u))
#Drawposteriorofinversesigma
u_sigma_i<-matrix(rWishart(1,u_sigma_df_post,u_sigma_scale_post)[,,1],k)
#Obtainsigma
u_sigma<-solve(u_sigma_i)
#Drawconditionalmeanparameters
a<-post_normal(y,x,u_sigma_i,a_mu_prior,a_v_i_prior)
#Drawinclusionparametersandupdatepriors
temp<-ssvs(a,tau0,tau1,prob_prior,include=1:
36)
a_v_i_prior<-temp$V_i#Updateprior
#Storedraws
if(draw>burnin){
draws_a[,draw-burnin]<-a
draws_lambda[,draw-burnin]<-temp$lambda
draws_sigma[,draw-burnin]<-u_sigma
}
}
具有SSVS的Gibbs采样器的输出可以用通常的方式进一步分析。
因此,可以通过计算参数的绘制方式获得点估计:
A<-rowMeans(draws_a)#Obtainmeansforeveryparameter
A<-matrix(A,k)#Transformmeanvectorintomatrix
A<-round(A,3)#Roundvalues
dimnames(A)<-list(dimnames(y)[[1]],dimnames(x)[[1]])#Renamematrixdimensions
t(A)#Print
##investincomecons
##invest.1-0.1020.011-0.002
##income.10.044-0.0310.168
##cons.10.0740.140-0.287
##invest.2-0.0130.0020.004
##income.20.0150.0040.315
##cons.20.027-0.0010.006
##invest.30.0330.0000.000
##income.3-0.0080.0210.013
##cons.3-0.0430.0070.019
##invest.40.2500.001-0.005
##income.4-0.064-0.0100.025
##cons.4-0.0230.0010.000
##const0.0140.0170.014
还可以通过计算变量的均值来获得每个变量的后验概率。
从下面的输出中可以看出,在VAR(4)模型中似乎只有几个变量是相关的。
常数项的概率为100%,因为它们已从SSVS中排除。
lambda<-rowMeans(draws_lambda)#Obtainmeansforeveryrow
lambda<-matrix(lambda,k)#Transformmeanvectorintoamatrix
lambda<-round(lambda,2)#Roundvalues
dimnames(lambda)<-list(dimnames(y)[[1]],dimnames(x)[[1]])#Renamematrixdimensions
t(lambda)#Print
##investincomecons
##invest.10.430.230.10
##income.10.100.180.67
##cons.10.110.400.77
##invest.20.110.090.14
##income.20.080.070.98
##cons.20.070.060.08
##invest.30.190.070.06
##income.30.060.130.10
##cons.30.090.070.12
##invest.40.780.090.16
##income.40.130.090.18
##cons.40.090.070.06
##const1.001.001.00
给定这些值,研究人员可以按照常规方式进行操作,并根据Gibbs采样器的输出获得预测和脉冲响应。
这种方法的优势在于它不仅考虑了参数不确定性,而且还考虑了模型不确定性。
这可以通过系数的直方图来说明,该直方图描述了收入的第一个滞后项与消费当前值之间的关系。
hist(draws_a[6,],main="Consumption~Firstlagofincome",xlab="Valueofposteriordraw")
通过两个峰描述模型不确定性,并通过右峰在它们周围的散布来描述参数不确定性。
但是,如果研究人员不希望使用模型,变量的相关性可能会从采样算法的一个步骤更改为另一个步骤,那么另一种方法将是仅使用高概率的模型。
这可以通过进一步的模拟来完成,在该模拟中,对于不相关的变量使用非常严格的先验,而对于相关参数则使用没有信
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 原创 语言 随机 搜索 变量 选择 SSVS 估计 贝叶斯 向量 回归 BVAR 模型 数据 分析 报告 论文 代码
链接地址:https://www.bdocx.com/doc/2015546.html