贝叶斯线性回归模型与随机搜索变量选择的共轭前沿(SSV)
一般来说,当你创建一个贝叶斯线性回归模型对象时,它只指定线性回归模型的联合先验分布和特征。也就是说,模型对象是打算进一步使用的模板。具体来说,将数据纳入模型进行后验分布分析和特征选择,将模型对象和数据传递给合适的对象目标函数.
您可以在通过使用名称-值对参数语法创建模型对象时设置可写属性值,或者在通过使用点表示法创建模型对象之后设置可写属性值。例如,要从模型中排除拦截,请输入
primdl.intercept = false;
NumPredictors
- - - - - -预测变量数贝叶斯多元线性回归模型中预测变量的个数,指定为非负整数。
NumPredictors
必须与在模型估计或模拟期间指定的预测器数据中的列数相同。
当指定NumPredictors
,该值不包含任何截距项。
创建模型后,如果更改值NumPredictors
使用点表示法,然后这些参数恢复为默认值:
变量名(VarNames
)
之前说的β(μ
)
之前的差异β每一制度(V
)
先验相关矩阵β(相关
)
先前制度概率(概率
)
数据类型:双
拦截
- - - - - -包含回归模型截距的标志真的
(默认)|假
标志,用于包含回归模型截距,在该表中指定为值。
价值 | 描述 |
---|---|
假 |
从回归模型中排除截距。因此,β是一个p 维向量,p 的价值NumPredictors . |
真的 |
在回归模型中包含一个截距。因此,β是(p + 1)维向量。该规范导致T在估计和模拟期间,预估器数据的1 × 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
元素。第一个元素对应于之前的截距,而所有其他元素对应于预测变量。
提示
进行SSVS时,使用默认值μ
.
例子:在3系数模型中,“亩”,[0.5 0;0.5 0;0.5 0]
将所有系数的分量1的先验均值设为0.5
并将所有系数的先前平均值设置为所有系数的组件20
.
数据类型:双
V
- - - - - -高斯混合先验的分量方差因子超参数βrepmat([10 0.1],Intercept + NumPredictors,1):
(默认)|正的数值矩阵高斯混合先验的分量方差因子超参数β,一个(拦截+ NumPredictors
)- × 2正数矩阵。第一列包含组分1的先验方差因子(变量包含机制,即,γ= 1)。第二列包含成分2的先验方差因子(变量排除机制,即,γ= 0)。无论区域或系数,系数的先验方差是方差因子乘以σ2.
如果拦截
是假
,然后V
有NumPredictors
行。mixconjugateblm
设置的先验方差因子NumPredictors
与预测器数据集中列对应的系数,您在估计、模拟或预测期间指定这些列。
否则,V
有NumPredictors + 1
元素。第一个元素对应于截距的先验方差因子,所有其他元素对应于预测变量。
提示
要执行SSVS,请为方案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
)中[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
是表示先前分发日志的数字标量。您可以将先前的分配写入比例常数。
var
是一个K1逻辑向量。元素对应于中的变量名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
为系数方差因子矩阵。
中的行和列对应于变量名VarNames
.
默认情况下,回归系数是不相关的,取决于政体。
请注意
你可以提供任意大小的数字矩阵。然而,如果你的说明书不是正定的,mixconjugateblm
发出警告并将您的规范替换为CorrelationPD
,地点:
Correlation = 0.5*(Correlation + Correlation.');
有关指定值的详细信息相关
,请参阅[1].
数据类型:双
一个
- - - - - -先前逆伽马形状的塑造覆盖计σ23.
(默认)|数字标量逆先验的形状超参数σ2,指定为数字标量。
一个
至少-(拦截+ NumPredictors) / 2
.
与B
保持固定,逆伽马分布变得更高和更集中一个
增加。这一特性衡量的先验模型σ2比后验估计的可能性更大。
关于逆分布的函数形式,见分析易易行的后索.
例子:“一个”,0.1
数据类型:双
B
- - - - - -上逆伽玛先验的尺度超参数σ21
(默认)|积极的标量|正
逆伽玛先验的尺度参数σ2,指定为正标量或正
.
与一个
保持固定,逆伽马分布变得更高和更集中B
增加。这一特性衡量的先验模型σ2比后验估计的可能性更大。
例子:“B”,5
数据类型:双
考虑预测美国实际国民生产总值的线性回归模型(GNPR
),采用工业生产指数(新闻学会
),总就业人数(E
)及实际工资(或者说是
).
对所有 , 是一系列均值为0,方差为0的独立高斯扰动吗 .
假设这些先验分布 = 0,…,3:
,在那里 和 是独立的标准正态随机变量。因此,系数具有高斯混合分布。假设所有系数都是条件独立的,但它们依赖于干扰方差。
. 和 分别为逆伽马分布的形状和比例。
它表示离散均匀分布的随机变量-包含域变量。
为SSV创建先前模型。指定预测器的数量p
.
p = 3;PriorMdl = mixconjugateblm (p);
PriorMdl
是一个mixconjugateblm
贝叶斯线性回归模型对象表示回归系数的先验分布和扰动方差。mixconjugateblm
在命令行中显示先前分布的摘要。
或者,您可以通过传递预测器的数量来为SSVS创建一个先前的模型贝叶斯林
并设置ModelType
名称 - 值对参数“mixconjugate”
.
MdlBayesLM = bayeslm (p,“ModelType”,“mixconjugate”)
MdlBayesLM = mixconjugateblm with properties: NumPredictors: 3 Intercept: 1 VarNames: {4x1 cell} Mu: [4x2 double] V: [4x2 double] Probability: [4x1 double] Correlation: [4x4 double] A: 3 B: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 [-3.547,1.5890[0.138, 1.616] 1.000 IG(3.00, 1)
MDL.
和MdlBayesLM
是等价的模型对象。
您可以使用点符号来设置创建模型的可写属性值。将回归系数名称设置为相应的变量名称。
priormdl.varnames = [“IPI”“E”“WR”]
PriorMdl = mixconjugateblm with properties: NumPredictors: 3 Intercept: 1 VarNames: {4x1 cell} Mu: [4x2 double] V: [4x2 double] Probability: [4x1 double] Correlation: [4x4 double] A: 3 B: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 [-3.547, 1.5890[0.138, 1.616] 1.000 IG(3.00, 1)
Matlab®将变量名称与显示中的回归系数相关联。
绘制先验分布。
情节(PriorMdl);
每个系数的先验分布是两个高斯的混合:两个分量的均值都为零,但是分量1相对于分量2有很大的方差。因此,它们的分布是以零为中心的spike-and-slab外观。
考虑线性回归模型建立SSVS的先验模型.
为执行SSVS创建一个先前的模型。假设
和
是相依的(共轭混合模型)。指定预测器的数量p
和回归系数的名称。
p = 3;priormdl = mixconjugateblm(p,“VarNames”,[“IPI”“E”“WR”]);
显示先验的状态概率和高斯混合方差因子 .
表(PriorMdl priorProbabilities =。概率,“RowNames”, PriorMdl。VarNames,...“VariableNames”,“可能性”)
priorProbabilities =4×1表概率___________截距0.5 IPI 0.5 E 0.5 WR 0.5
priorV = array2table (PriorMdl。V,“RowNames”, PriorMdl。VarNames,...“VariableNames”,[“gammaIs1”“gammaIs0”])
priorV =4×2表Gammais1 Gammais0 ________ ________拦截10 0.1 IPI 10 0.1 e 10 0.1 WR 10 0.1
PriorMdl
中存储先验状态的概率概率
财产和制度的差异因素V
财产。变量纳入的默认先验概率为0.5。对于变量纳入制度,每个系数的默认方差因子为10,对于变量排除制度,则为0.01。
加载Nelson-Plosser数据集。为响应和预测器系列创建变量。
负载Data_NelsonPlosserX = DataTable {: PriorMdl.VarNames(2:结束)};y = DataTable {:,“GNPR”};
通过估计边缘后分布来实现SSV 和 .由于SSVS使用Markov chain Monte Carlo (MCMC)进行估计,所以设置随机数种子来再现结果。
rng (1);PosteriorMdl =估计(PriorMdl, X, y);
方法:MCMC采样使用10000绘制观测次数:62预测器数量:4 |平均std 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,31.197] 1.000经验0.1734 sigma2 |47.7557 8.6551 [33.858,66.875] 1.000经验楠
PosteriorMdl
是一个empiricalblm
的后验分布所绘制的模型对象
和
鉴于数据。估计
在命令行显示边缘后缘分布的摘要。摘要的行对应回归系数和干扰方差,列对应后验分布特征。特点包括:
CI95
,其中包含95%的贝叶斯均线用于参数的可靠间隔。例如,回归系数的后验概率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”);
示踪图表明,两幅画似乎混合得很好。这些图没有显示出可检测到的瞬变或序列相关,并且在状态之间绘制也没有跳变。
考虑线性回归模型建立SSVS的先验模型.
加载Nelson-Plosser数据集。为响应和预测器系列创建变量。添加特定于示例的文件到MATLAB®路径。
负载Data_NelsonPlosserVarNames = [“IPI”“E”“WR”];X = DataTable {: VarNames};y = DataTable {:,“GNPR”};路径= fullfile (matlabroot,“例子”,“econ”,'主要的');目录路径);
假设如下:
截距在概率为0.9的模型中。
新闻学会
和E
在概率为0.75的模型中。
如果E
包含在模型中,然后是概率或者说是
包含在模型中的是0.9。
如果E
被排除在模型之外,那么或者说是
包括0.25。
声明一个名为priorssvsexample.m
:
接受一个逻辑向量,该逻辑向量指示截距和变量是否在模型中(真的
模型包含)。元素1对应于截距,其余元素对应于数据中的变量。
返回一个数字标量,表示所描述的先验状态概率分布的对数。
功能logprior = priorssvsexample (varinc)%priorssvsexample日志SSV的先前政权概率分布% PRIORSSVSEXAMPLE是一个自定义日志优先状态概率的例子具有依赖随机变量的SSV的%分布。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工具箱™中包含的特定于示例的文件。要访问它,请进入编辑priorssvsexample.m.
在命令行。
为执行SSVS创建一个先前的模型。假设和(共轭混合模型)。指定预测器的数量p
回归系数的名称,和自定义的先验概率分布的变量包含制度。
p = 3;priormdl = mixconjugateblm(p,“VarNames”,[“IPI”“E”“WR”],...“概率”, @priorssvsexample);
通过估计边缘后分布来实现SSV和.因为SSVS使用MCMC进行估计,所以设置一个随机数种子来重现结果。
rng (1);PosteriorMdl =估计(PriorMdl, X, y);
方法:MCMC采样使用10000绘制观测次数:62预测器数量:4 |平均std 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(路径);
考虑回归模型建立SSVS的先验模型.
执行科学价值:
在数据可能性之前,为带共轭的SSVS创建贝叶斯回归模型。使用默认设置。
坚持过去10个时期的数据估计。
估计边缘后验分布。
p = 3;PriorMdl = bayeslm (p,“ModelType”,“mixconjugate”,“VarNames”,[“IPI”“E”“WR”]);负载Data_NelsonPlosserfhs = 10;预测层位大小X = DataTable{1:(end - fhs), priormdd . varnames (2:end)};y = DataTable{1:(end - fhs),“GNPR”};XF = DataTable{(end - fhs + 1):end,PriorMdl.VarNames(2:end)};%未来预测数据yFT = DataTable{(end - fhs + 1):结束,“GNPR”};%真实的未来反应rng (1);%的再现性posteriormdl =估计(priormdl,x,y,“显示”、假);
使用后验预测分布和未来预测数据预测反应XF
.绘制响应的真实值和预测值。
yF =预测(PosteriorMdl XF);图;情节(日期、DataTable.GNPR);抓住在if (date (((end - fhs + 1):end),yF) = gca;HP = patch([date (end - FHS + 1) date (end) date (end) date (end - FHS + 1)]),...h.YLim([1, 1、2、2]),[0.8 0.8 0.8]);uistack(惠普、“底”);传奇(“预测地平线”,“真正的GNPR”,“预测GNPR”,“位置”,“西北”)标题(“实际国民生产总值:1909 - 1970”);ylabel (“rGNP”);包含(“年”);抓住离开
yF
是与未来预测数据相对应的真实GNP未来值的10乘1向量。
估计预测的均方根误差(RMSE)。
frmse =√(mean((yF - yFT).²))
frmse = 18.8470
预测RMSE是预测精度的相对度量。具体来说,您使用不同的假设来估计几个模型。预测RMSE最低的模型是被比较模型中表现最好的。
当您使用SSVS执行贝叶斯回归时,最佳实践是调优超参数。一种方法是在超参数值网格上估计预测的RMSE,并选择最小化预测RMSE的值。
一个贝叶斯线性回归模型将参数β和σ2多元线性回归(MLR)模型yt=xtβ+εt为随机变量。
为次t= 1,…,T:
yt是观察到的反应。
xt是一个1-by-(p+ 1)观察值的行向量p预测因子。为了适应模型拦截,x1t= 1 for allt.
β是(p+ 1)-1-1列回归系数的载体对应于构成列的变量xt.
εt为均值为0的随机扰动,Cov(ε) =σ2我T×T,而ε是一个T包含所有扰动的-乘1向量。这些假设意味着数据的可能性是
ϕ(yt;xtβ,σ2)为带均值的高斯概率密度xtβ和方差σ2评估yt;.
在考虑数据之前,您需要执行一个联合先验分布假设(β,σ2).在贝叶斯分析中,通过使用从数据的可能性中获得的有关参数的信息来更新参数的分布。结果是联合后验分布(β,σ2)或条件后验分布的参数。
随机搜索变量选择(SSVS)是贝叶斯线性回归的预测变量选择方法,用于搜索具有高后退概率的模型的潜在模型的空间,并平均它在完成搜索后发现的模型。
SSV假设每个回归系数的先前分布是两个高斯分布的混合,以及先前分配σ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。
对于半共轭模型(mixsemiconjugateblm.
),cj=Vj.
c1是相对较大的,这意味着相应的预测器更有可能在模型中。c2是相对较小的,这意味着相应的预测器不太可能在模型中,因为在0附近分布稠密。
在这个框架中,如果存在的潜力的总数K一个模型的系数,那么空间有2K要搜索的模型。因为计算所有2的后验概率K模型计算昂贵,SSVS使用MCMC进行抽样γ= {γ1、……γK},并估计相应模型的后验概率。算法选择的模型往往具有较高的后验概率。该算法由估计的后验分布组成β和σ2通过计算抽样模型的加权平均。该算法赋予那些采样频率更高的模型更大的权重。
具有共轭混合先验的SSVS框架存在封闭后验K系数。然而,因为之前β|σ2,γ边缘化,γ,是2K-分量高斯混合,MATLAB®为了数值稳定性,使用MCMC代替后验抽样。
的贝叶斯林
函数可以为贝叶斯线性回归创建任何受支持的先前模型金宝app对象。
[1]乔治,e。I。和r。e。麦卡洛克。《吉布斯抽样的变量选择》美国统计协会杂志.1993年第88卷,第423期,第881-889页。
[2]Koop, G., D. J. Poirier和J. L. Tobias。贝叶斯计量经济学方法.纽约,纽约:剑桥大学出版社,2007。
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
您还可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。