贝叶斯线性回归模型共轭先验用于随机搜索变量选择(SS VS移至)
通常,在创建贝叶斯线性回归模型对象,它仅指定线性回归模型的联合先验分布和特征。也就是说,模型对象是用于进一步使用的模板。具体而言,纳入数据到模型对于后验分布的分析和特征选择,通过模型对象和数据到适当的目标函数。
当您使用名称-值对参数语法创建模型对象时,或者在您使用点符号创建模型对象之后,您可以设置可写的属性值。例如,要从模型中排除截距,输入
PriorMdl.Intercept = FALSE;
NumPredictors
- - - - - -预测变量的数贝叶斯多元线性回归模型中预测变量的个数,指定为非负整数。
NumPredictors
必须同列在您的预测数据,您模型估计或仿真过程中指定的电话号码。
当指定NumPredictors
,为该值排除任何截取项。
创建模型后,如果您更改的值NumPredictors
使用点符号,然后这些参数恢复到默认值:
变量名(VarNames
)
之前说的β(亩
)
之前的差异β对于每个政体(V
)
之前相关矩阵β(相关
)
先验状态概率(概率
)
数据类型:双
截距
- - - - - -标志包括回归模型截距真正
(默认)|假
包含回归模型截距的标志,在此表中指定为值。
值 | 描述 |
---|---|
假 |
从回归模型中排除截距。因此,β是一个p 维向量,p 的值NumPredictors 。 |
真正 |
在回归模型中包含一个截距。因此,β是(p + 1)维向量。此规范导致T在估计和仿真过程中,需要在预测数据中加入1的-by-1向量。 |
如果在预测器数据中包含一列的个位,则设置截距
来假
。
例子:“拦截”,假
数据类型:逻辑
VarNames
- - - - - -预测变量的名字用于显示器的预测器变量名,指定为字符串向量或特征向量的细胞载体。VarNames
必须包含NumPredictors
元素。VarNames(
在列中的变量的名称j
)j
的预测数据集,你估计,仿真或预测过程中指定。
默认值是β{β(1),(2),…,β(
,在那里p
)}p
的值NumPredictors
。
例子:“VarNames”,(“失业率会”;“CPI”)
数据类型:字符串
|细胞
|字符
亩
- - - - - -高斯混合先验的成分平均超参数β零(截距+ NumPredictors,2)
(默认)|数字矩阵成分上高斯混合先验的均值超参数β,指定为一个(拦截+ NumPredictors
)2数字矩阵。第一列包含组件1的先验均值(变量包含机制,即,γ= 1)。第二列包含组分2(可变排阻制度,即在现有的装置,γ= 0)。
如果截距
是假
,然后亩
有NumPredictors
行。mixconjugateblm
的先验均值NumPredictors
在估计、模拟或预测期间指定的预测器数据集中与列对应的系数。
否则,亩
有NumPredictors + 1
元素。第一个元素对应于截距的先验平均值,所有其他元素对应于预测变量。
若要执行ssv,请使用的默认值为亩
。
例子:在3系数模型中,“亩”,[0.5 0;0.5 0;0.5 0]
将所有系数的分量1先验均值设为0.5
并将所有系数的分量2先验均值设为0
。
数据类型:双
V
- - - - - -高斯混合先验的分量方差因子超参数βrepmat([10 0.1],Intercept + NumPredictors,1)
(默认)|正的数值矩阵各分量方差因子超参数的高斯混合先验上β,一个(拦截+ NumPredictors
)-by-2阳性的数值矩阵。第一列包含组分1(可变列入制度,即现有方差因子,γ= 1).第二列是第2部分的先验方差因子(变量排除制度,即,γ= 0)。无论政权或系数,系数的先验方差是方差因子乘以σ2。
如果截距
是假
,然后V
有NumPredictors
行。mixconjugateblm
的先验方差因子NumPredictors
在估计、模拟或预测期间指定的预测器数据集中与列对应的系数。
否则,V
有NumPredictors + 1
元素。第一元件相当于截距的现有方差因子,和所有其他元件对应于预测变量。
要执行ssv,为方案1指定一个比方案2更大的方差因子(对于所有方案)j
,指定V (
>j
,1)V (
)。j
,2)
关于什么样的价值,以指定更多的细节V
,请参阅[1]。
例子:在3系数模型中,“V”, [100 1;100年1;100 (1)
将所有系数的分量1先验方差因子设为One hundred.
设各系数的分量2先验方差因子为1
。
数据类型:双
概率
- - - - - -变量纳入和排除制度先验概率分布0.5 * 1(拦截+ NumPredictors, 1)
(默认)|数值向量[0,1]|函数处理为变量纳入和排除制度先验概率分布,指定为一个(截距
+NumPredictors
)-by-1数字向量的值在[0,1],或函数句柄的形式@fcnName
,在那里fcnName
是函数名。概率
表示的先验概率分布γ= {γ1、……γK},其中:
K=截距
+NumPredictors
,即回归模型中的系数个数。
γk∈{0,1}k=1、……K。因此,样本空间的基数为2K。
γk= 1表示变量VarNames
(
包括在模型中,并且γk= 0表示该变量被从模型中排除。k
)
如果概率
是一个数值向量:
行对应的变量名VarNames
。对于包含截距的模型,截距包含的先验概率为概率(1)
。
为
= 1,...,K中,先验概率为不含可变k
是1 -k
可能性(
k
)。
变量包含机制的先验概率,在所有变量和截距之间是独立的。
如果概率
为函数句柄,则表示变量包含状态概率的自定义先验分布。对应的函数必须有这样的声明语句(参数和函数名可以不同):
logprob = regimeprior (varinc)
logprob
是代表现有分布的对数的数值标量。你可以写先验分布到一个比例常数。
varinc
是一个K×1逻辑矢量。元素对应的变量名VarNames
并指出相应变量存在的状态。varinc(
=k
)真正
指示为VarName(
包括在模型中,并且k
)varinc(
=k
)假
指示它被排除在模型之外。
您可以包括更多的输入参数,但当你叫他们必须知道mixconjugateblm
。
关于什么样的价值,以指定的细节概率
,请参阅[1]。
例子:在3系数模型中,“概率”,兰德(3,1)
随机分配之前可变包含概率给每个系数。
数据类型:双
|function_handle
相关
- - - - - -之前相关矩阵β眼睛(拦截+ NumPredictors)
(默认)|数值,正定矩阵之前相关矩阵β对于混合模型中的两个组件,指定为一个(截距
+NumPredictors
)-通过-(截距
+NumPredictors
)数值,正定矩阵。从而得到各分量的先验协方差矩阵
混合模型为j
sigma2 *诊断接头(sqrt (V (:,
,在那里j
)))*相关性*诊断接头(sqrt (V (:,j
)))sigma2
是σ2和V
为系数方差因子的矩阵。
行和列对应于in中的变量名VarNames
。
默认情况下,回归系数是不相关的,取决于该机制。
您可以提供任何适当大小的数字矩阵。但是,如果你的规格是不是正定的,mixconjugateblm
发出警告,并替换您的规格CorrelationPD
,地点:
CorrelationPD = 0.5*(Correlation + Correlation.');
关于什么样的价值,以指定的细节相关
,请参阅[1]。
数据类型:双
一个
- - - - - -逆先验的形状超参数σ23.
(默认)|数字标逆先验的形状超参数σ2,指定为数值标量。
一个
至少-(拦截+ NumPredictors) / 2
。
与B
保持固定,反伽马分布变得更高和更浓缩为一个
增加。这个特征称为先验模型σ2比后验估计的可能性更大。
有关反伽马分布的函数形式,请参阅分析听话的后验。
例子:“一个”,0.1
数据类型:双
B
- - - - - -逆先验的尺度超参数σ21
(默认)|积极的标量|天道酬勤
反演先验的尺度参数σ2,指定为正标量或天道酬勤
。
与一个
保持固定,反伽马分布变得更高和更浓缩为B
增加。这个特征称为先验模型σ2比后验估计的可能性更大。
例子:“B”, 5
数据类型:双
考虑预测美国实际国民生产总值(gdp)的线性回归模型(GNPR
)采用工业生产指数的线性组合(新闻学会
)、总就业人数(E
)和实际工资(或者说是
)。
对所有 , 一系列独立的高斯扰动的均值和方差是否为0 。
假设这些先验分布 = 0,…,3:
,在那里 和 是独立的标准正态随机变量。因此,系数呈高斯混合分布。假设所有系数都是先验的条件独立的,但它们依赖于扰动方差。
。 和 为反伽马分布的形状和比例尺。
它表示具有离散均匀分布的随机变量-包含状态变量。
创建的SSVs采用现有的模型。指定预测器的数量p
。
p = 3;PriorMdl = mixconjugateblm (p);
PriorMdl
是一个mixconjugateblm
贝叶斯线性回归模型对象表示回归系数和扰动方差的先验分布。mixconjugateblm
在命令行显示先前发行版的摘要。
或者,你可以通过预测的数量创造的SSVs采用现有的模型bayeslm
并设置ModelType
名称 - 值对参数“mixconjugate”
。
MdlBayesLM = bayeslm (p,“ModelType”,“mixconjugate”)
属性:NumPredictors: 3 Intercept: 1 varname: {4x1 cell} Mu: [4x2 double] V: [4x2 double]概率:[4x1 double]相关性:[4x4 double] A: 3b:1 |意味着性病CI95积极分配- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -拦截| 0 1.5890[-3.547,3.547]0.500混合分布β(1)| 0 1.5890[-3.547,3.547]0.500混合分布β(2)| 0 1.5890[-3.547,3.547]0.500混合分布β(3)| 0 1.5890[-3.547,3.547]0.500混合分布Sigma2 | 0.5000 - 0.5000[0.138, 1.616] 1.000搞笑(3.00,1)
MDL
和MdlBayesLM
是等效的模型对象。
可以使用点符号设置创建的模型的可写属性值。将回归系数名称设置为相应的变量名称。
PriorMdl。VarNames=[“IPI”“E”“WR”]
PriorMdl = mixegegblm,属性:NumPredictors: 3 Intercept: 1 varname: {4x1 cell} Mu: [4x2 double] V: [4x2 double]概率:[4x1 double]相关性:[4x4 double] A: 3b:1 |意味着性病CI95积极分配- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -拦截| 0 1.5890[-3.547,3.547]0.500混合分布IPI | 0 1.5890[-3.547, 3.547] 0.500混合分布E | 0 1.5890[-3.547, 3.547] 0.500混合分布WR | 0 1.5890[-3.547, 3.547] 0.500混合分布Sigma2 | 0.5000 - 0.5000[0.138, 1.616] 1.000搞笑(3.00,1)
MATLAB®关联的变量名中显示的回归系数。
绘制先验分布。
情节(PriorMdl);
每个系数的先验分布在两个高斯的混合物:两种组分具有零均值,但部件1具有大的相对度与组分2方差因此,它们的分布在零为中心,并具有spike-and-slab外观。
考虑线性回归模型为ssv创建先验模型。
为执行ssv创建一个先验模型。假设
和
是相关的(共轭混合模型)。指定预测器的数量p
以及回归系数的名称。
p = 3;PriorMdl = mixconjugateblm(P,“VarNames”[“IPI”“E”“WR”]);
显示先验状态概率和先验的高斯混合方差因子 。
priorProbabilities =表(PriorMdl.Probability,“RowNames”PriorMdl.VarNames,…“VariableNames”,“可能性”)
priorProbabilities =4×1表截获0.5 IPI 0.5 e0.5 WR 0.5的概率
priorV = array2table (PriorMdl.V,“RowNames”PriorMdl.VarNames,…“VariableNames”[“gammaIs1”“gammaIs0”])
priorV =4×2表gammaIs1 gammaIs0 ________拦截10 0.1 10 IPI 0.1 E 10 0.1 10 WR 0.1
PriorMdl
存储在现有区域概率概率
的性质和状态方差因子V
财产。变量包含的默认先验概率是0.5。每个系数的默认方差因子,变量-包含制度为10,变量-排除制度为0.01。
加载Nelson-Plosser数据集。为响应和预测器系列创建变量。
负载Data_NelsonPlosserX = DataTable {: PriorMdl.VarNames(2:结束)};y = DataTable {:,“GNPR”};
通过估计的边际后验分布实现SS VS移至 和 。由于SSVS使用Markov chain Monte Carlo (MCMC)进行估计,因此设置一个随机数种子来重现结果。
rng (1);PosteriorMdl =估计(PriorMdl, X, y);
方法:用MCMC抽样10000绘制的观测总数62号码预测的:4 |均值标准CI95正分配制度----------------------------------------------------------------------------------拦截|-18.8333 10.1851 [-36.965,0.716] 0.037实证0.8806 IPI |4.4554 0.1543 [4.165,4.764] 1.000实证0.4545 E |0.0010 0.0004 [0.000,0.002] 0.997实证0.0925 WR |2.4686 0.3615 [1.766,3.197] 1.000实证0.1734西格玛-2 |47.7557 8.6551 [33.858,66.875] 1.000实证的NaN
PosteriorMdl
是一个empiricalblm
的后验分布中存储的模型对象
和
给出的数据。估计
显示命令行边缘后验分布的摘要。摘要的行对应回归系数和扰动方差,列对应后验分布特征。特点包括:
CI95
,其中包含95%的贝叶斯equitailed可信区间的参数。例如,后概率的回归系数E
(标准化)是在[0.000,0.002]是0.95。
政权
,其中包含变量包含的边际后验概率(
用于可变)。例如,后验概率那E
应该包括在模型中的是0.0925。
假设,变量政权
< 0.1应该从模型中删除,结果表明可以将失业率从模型中排除。
默认情况下,估计
抽取和丢弃大小为5000的老化样本。然而,一个好的做法是检查绘图的跟踪图,以获得足够的混合和缺少过渡。为每个参数绘制绘制的跟踪图。您可以访问组成分布的绘图(属性)BetaDraws
和Sigma2Draws
)使用点符号。
图;为j = 1:(p + 1) subplot(2,2,j);情节(PosteriorMdl.BetaDraws (j,:));标题(sprintf (' % s ',PosteriorMdl.VarNames {j}));结束
图;情节(PosteriorMdl.Sigma2Draws);标题(“Sigma2”);
从图中可以看出,这些图似乎很好地结合在了一起。图中没有可检测到的瞬态或序列相关,图中没有在状态之间跳转。
考虑线性回归模型为ssv创建先验模型。
加载Nelson-Plosser数据集。为响应和预测器系列创建变量。将特定于示例的文件添加到MATLAB®路径。
负载Data_NelsonPlosserVarNames = [“IPI”“E”“WR”];X = DataTable {: VarNames};y = DataTable {:,“GNPR”};路径=完整文件(matlabroot,'例子',“经济学”,'主要');目录路径);
假设如下:
模型中的截距是0。9。
新闻学会
和E
的概率为0.75。
如果E
被包括在模型中,则该概率或者说是
包括在模型中的是0.9。
如果E
从模型中排除,那么概率是多少或者说是
包括0。25。
声明一个名为priorssvsexample.m
那:
接受一个逻辑向量,该逻辑向量指示截距和变量是否在模型中(真正
模型包含)。元素1对应于截距,其余元素对应于数据中的变量。
返回一个数字标量,表示所描述的先验状态概率分布的日志。
功能logprior = priorssvsexample (varinc)%PRIORSSVSEXAMPLE日志中的SS VS移至前体制概率分布% PRIORSSVSEXAMPLE是一个自定义日志先验状态概率的例子为的SSVs%分布相关的随机变量。varinc是%4由1逻辑矢量指示4个系数是否处于一个模型%和logPrior是表示现有的对数的数值标量状态概率的%分布。%%系数按照以下规则进入模型:%* varinc(1)附带概率0.9。模型中% * varinc(2)和varinc(3)的概率为0.75。%*如果varinc(3)被包含在模型中,则概率模型中包含的% varinc(4)为0.9。% *如果模型中不包含varinc(3),则概率为%该varinc(4)被包括为0.25。logprior =日志(0.9)+ 2 *日志(0.75)+日志(varinc (3) * 0.9 + (1-varinc (3)) * 0.25);结束
priorssvsexample.m
是Econometrics Toolbox™中包含的特定于示例的文件。要访问它,请输入编辑priorssvsexample.m
在命令行。
为执行ssv创建一个先验模型。假设和是(共轭混合模型)。指定预测器的数量p
回归系数的名称和自定义,可变列入制度的先验概率分布。
p = 3;PriorMdl = mixconjugateblm(P,“VarNames”[“IPI”“E”“WR”),…“概率”,@priorssvsexample);
通过估计的边际后验分布实现SS VS移至和。因为SSVS使用MCMC进行估计,所以设置一个随机数种子来重现结果。
rng (1);PosteriorMdl =估计(PriorMdl, X, y);
方法:用MCMC抽样10000绘制的观测总数62号码预测的:4 |均值标准CI95正分配制度----------------------------------------------------------------------------------拦截|-18.7971 10.1644 [-37.002, 0.765] 0.039 Empirical 0.8797 IPI | 4.4559 0.1530 [ 4.166, 4.760] 1.000 Empirical 0.4623 E | 0.0010 0.0004 [ 0.000, 0.002] 0.997 Empirical 0.2665 WR | 2.4684 0.3618 [ 1.759, 3.196] 1.000 Empirical 0.1727 Sigma2 | 47.7391 8.6741 [33.823, 67.024] 1.000 Empirical NaN
假设,变量政权
< 0.1应该从模型中删除,结果表明您可以在模型中包含所有变量。
因为这个例子需要路径
要访问特定于示例的文件,请通过删除进行清理路径
从MATLAB®路径。
rmpath(路径);
考虑回归模型为ssv创建先验模型。
执行科学价值:
具有共轭之前的数据似然创建贝叶斯回归模型的SSVs。使用默认设置。
从评估中拿出最后10个时期的数据。
估计边缘后验分布。
p = 3;PriorMdl = bayeslm (p,“ModelType”,“mixconjugate”,“VarNames”[“IPI”“E”“WR”]);负载Data_NelsonPlosserfhs = 10;预测层位大小X = DataTable{1:(end - fhs),PriorMdl.VarNames(2:end)};y = DataTable{1:(end - fhs),“GNPR”};XF = DataTable{(end - fhs + 1):end,PriorMdl.VarNames(2:end)};未来预报数据yFT = DataTable{(end - fhs + 1):end,“GNPR”};%真正的未来应对rng (1);%用于重现PosteriorMdl =估计(PriorMdl,X,Y,'显示'、假);
预测响应采用后验预测分布和未来预测数据XF
。绘制响应的真实值和预测值。
yF =预测(PosteriorMdl XF);图;情节(日期、DataTable.GNPR);保持上plot(date ((end - fhs + 1):end),yF) h = gca;hp =补丁([日期(结束- fhs + 1)日期(结束)日期(结束)日期(结束)日期(结束- fhs + 1)],…h.YLim ([1, 1、2、2]), [0.8 0.8 0.8]);uistack(惠普、“底”);传说(“预测地平线”,“真正的GNPR”,“预测GNPR”,“位置”,“西北”)标题("实际国民生产总值:1909 - 1970 ");ylabel (“rGNP”);包含(“年”);保持离
yF
是与未来预测数据相对应的未来实际国民生产总值的10乘1向量。
估计预测均方根误差(RMSE)。
frmse = sqrt(均值((yF - yFT).^2))
frmse = 18.8470
预测RMSE是预测准确度的一个相对度量。具体地说,您可以使用不同的假设来估计几个模型。预测RMSE最低的模型是被比较模型中表现最好的模型。
当您使用的SSVs执行贝叶斯回归,最好的做法是调整超参数。这样做的一个方法是估算预测RMSE在超参数值的网格,并选择价值最小化的预测RMSE。
一个贝叶斯线性回归模型将参数β和σ2在多元线性回归(MLR)模型中yt=xtβ+εt为随机变量。
为次t= 1,…,T:
yt是所观察到的响应。
xt是1副(p+ 1)的观测值的行向量p预测因子。为了适应模型截距,x1t= 1t。
β是(p的各列所对应的回归系数的列向量xt。
εt为均值为0的随机扰动,Cov(ε)=σ2我T×T,而ε是一个T包含所有扰动的-乘-1向量。这些假设意味着数据的可能性是
φ(yt;xtβ,σ2)是具有均值的高斯概率密度xtβ和方差σ2在评估yt;。
在考虑数据之前,您施加a联合先验分布假设上(β,σ2)。在贝叶斯分析中,可以使用关于从数据的似然所获得的参数的信息更新所述参数的分布。其结果是联合后验分布(β,σ2)或条件后验分布的参数。
随机搜索变量选择(SS VS移至)为贝叶斯线性回归的预测变量选择方法,该方法搜索潜在模型对于具有高的后验概率模型平均值它发现它完成搜索后的模型空间中,和。
SS VS移至假定每个回归系数的先验分布是两个高斯分布的混合物,和的先验分布σ2逆和形状有关吗一个和规模B。让γ= {γ1、……γK做一个潜在的、随机的人政权指示器对于回归系数β,地点:
K为模型中的系数个数(截距
+NumPredictors
)。γk= 1表示βk|σ2,γk是高斯均值为0,方差为c1。
γk= 0表示预测器为高斯分布,均值为0,方差为0c2。
的分布由概率质量函数决定γ,和的样品空间γ由2组成K元素。
更具体地说,鉴于γk和σ2,βk=γkc1Z+ (1 -γk)c2Z,地点:
Z为标准正态随机变量。
共轭模型(mixconjugateblm
),cj=σ2Vj,j= 1,2。
对于半jugate模型(mixsemiconjugateblm
),cj=Vj。
c1相对较大,这意味着相应的预测因子更可能出现在模型中。c2相对较小,这意味着相应的预测因子不太可能出现在模型中,因为分布在0附近比较密集。
在此框架下,如果存在一个总的潜力K一个模型的系数,那么空间是2K模型,通过它来搜索。因为计算的所有2后验概率K模型的计算成本很高,ssv使用MCMC进行采样γ= {γ1、……γK,并估计相应模型的后验概率。该算法选择的模型后验概率往往较高。该算法构成的估计后验分布β和σ2通过计算采样模型的加权平均值。该算法对采样频率较高的模型赋予了较大的权重。
在SSVS框架中,共轭混合先验存在一个闭形式后验K系数。然而,因为先前β|σ2,γ边缘化,γ是一个2K-成分高斯混合,MATLAB®使用MCMC代替从后部取样以获得数值稳定性。
的bayeslm
函数可以创建贝叶斯线性回归任何支持的现有模型对象金宝app。
[1]乔治E·I和R. E.麦卡洛克。“变量选择通过Gibbs采样。”杂志美国统计协会。第88卷,第423号,1993年,第881-889页。
[2]Koop, G., D. J. Poirier,和J. L. Tobias。贝叶斯计量经济学方法。纽约:剑桥大学出版社,2007年。
你点击了一个链接,对应于这个MATLAB命令:
在MATLAB命令窗口中输入命令,运行该命令。Web浏览器不支持MATLAB命令。金宝app
您还可以选择从下面的列表中的网站:
选择中国网站(中文或英文),以获得最佳的网站表现。其他MathWorks国家站点不适合来自您所在位置的访问。