主要内容

mixsemiconjugateblm

带半共轭先验的随机搜索变量选择贝叶斯线性回归模型

描述

贝叶斯线性回归模型对象mixsemiconjugateblm指定回归系数和扰动方差的联合先验分布(βσ2)以执行科学价值(见[1][2])假设βσ2都是相关随机变量。

一般来说,当您创建一个贝叶斯线性回归模型对象时,它只指定了线性回归模型的联合先验分布和特征。也就是说,模型对象是用于进一步使用的模板。具体来说,为了将数据合并到模型中进行后验分布分析和特征选择,将模型对象和数据传递给适当的对象目标函数

创建

描述

例子

PriorMdl= mixsemiconjugateblm (NumPredictors创建一个贝叶斯线性回归模型对象(PriorMdl)由NumPredictors预测器和一个截距,并设置NumPredictors财产。的联合先验分布(βσ2)适用于采用SSVS进行预测因子选择[2]PriorMdl是定义先验分布和维数的模板吗β

例子

PriorMdl= mixsemiconjugateblm (NumPredictors名称,值属性(除了NumPredictors)使用名称-值对参数。将每个属性名用引号括起来。例如,mixsemiconjugateblm(3、“概率”、abs(兰德(4,1)))指定模型中所有四个系数的随机先验概率。

属性

全部展开

当您使用名称-值对参数语法创建模型对象时,或者在您使用点表示法创建模型对象之后,您可以设置可写的属性值。例如,要从模型中排除一个拦截,请输入

PriorMdl。拦截=假;

贝叶斯多元线性回归模型中预测变量的数量,指定为非负整数。

NumPredictors必须与您在模型估计或模拟期间指定的预测器数据中的列数相同。

当指定NumPredictors,排除值的任何截距项。

在创建模型之后,如果您更改了值NumPredictors使用点表示法,然后这些参数恢复为默认值:

  • 变量名称(VarNames

  • 先验均值βμ

  • 的先验方差β对于每个制度(V

  • 的先验相关矩阵β相关

  • 先验状态概率(概率

数据类型:

标记,用于包含回归模型截距,该截距在本表中指定为值。

价值 描述
从回归模型中排除一个截距。因此,β是一个p-维向量,其中p的值NumPredictors
真正的 在回归模型中包含一个截距。因此,β是a (p+ 1)-维向量。此规范导致T-by-1的向量作为预估和模拟时预估的预测器数据。

如果在预测器数据中包含一列的截距项,则设置拦截

例子:“拦截”,假的

数据类型:逻辑

用于显示的预测器变量名,指定为字符串向量或字符向量的单元格向量。VarNames必须包含NumPredictors元素。VarNames (j变量名在列中吗j在估计、模拟或预测期间指定的预测器数据集的。

默认为β{β(1),(2),…,β(p)},在那里p的值NumPredictors

例子:“VarNames”,(“失业率会”;“CPI”)

数据类型:字符串|细胞|字符

高斯混合先验的分量平均超参数β,指定为一个(拦截+ NumPredictors)-by-2数值矩阵。第一列包含组件1的先验均值(变量包含域,即γ= 1)。第二列为成分2的先验均值(变量排除制度,即γ= 0)。

  • 如果拦截,然后μNumPredictors行。mixsemiconjugateblm属性的先验平均值NumPredictors与预测器数据集中的列对应的系数,您在估计、模拟或预测期间指定。

  • 否则,μNumPredictors + 1元素。第一个元素对应于截距的先验均值,所有其他元素对应于预测变量。

提示

执行SSVS时,使用默认值μ

例子:在3系数模型中,“亩”,[0.5 0;0.5 0;0.5 0]将所有系数的分量1的先验平均值设置为0.5并将所有系数的分量2的先验平均值设为0

数据类型:

高斯混合先验的分量方差超参数β一个(拦截+ NumPredictors)-乘2的正数值矩阵。第一列为成分1的先验方差因子(变量包含域,即γ= 1)。第二列为成分2的先验方差因子(变量排除制度,即γ= 0)。

  • 如果拦截,然后VNumPredictors行。mixsemiconjugateblm的先验方差因子NumPredictors与预测器数据集中的列对应的系数,您在估计、模拟或预测期间指定。

  • 否则,VNumPredictors + 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

数据类型:

变量包含和排除制度的先验概率分布,指定为一个(拦截+NumPredictors)-by-1的数值向量[0,1],或形式的函数句柄@fcnName,在那里fcnName函数名。概率的先验概率分布γ= {γ1、……γK},:

  • K=拦截+NumPredictors,为回归模型中的系数数。

  • γk∈{0,1},用于k=1、……K。因此,样本空间的基数为2K

  • γk= 1表示变量VarNamesk包含在模型中,和γk= 0表示该变量被排除在模型之外。

如果概率是数值向量:

  • 中的变量名对应于VarNames。对于包含截距的模型,截距包含的先验概率为概率(1)

  • k= 1,…,K,排除变量的先验概率k是1 -概率(k)。

  • 在所有变量和截距之间,变量包含区域的先验概率是独立的。

如果概率是函数句柄,则它表示变量包含区域概率的自定义先验分布。对应的函数必须有这样的声明语句(参数和函数名可以不同):

Logprob = regmeprior (varinc)

  • logprob表示先验分布的对数的数值标量。你可以把先验分布写成比例常数。

  • varinc是一个K-by-1逻辑向量。元素对应于中的变量名VarNames并指出对应变量存在的状态。varinc (k=真正的表明VarName (k包含在模型中,和varinc (k=指示它从模型中排除。

您可以包含更多的输入参数,但在调用时必须知道它们mixsemiconjugateblm

有关要指定的值的详细信息概率,请参阅[1]

例子:在3系数模型中,“概率”,兰德(3,1)为每个系数分配随机的先验变量包含概率。

数据类型:|function_handle

的先验相关矩阵β对于混合模型中的两个组件,指定为一个(拦截+NumPredictors)——- (拦截+NumPredictors)数值的正定矩阵。因此,分量的先验协方差矩阵j在混合模型中诊断接头(sqrt (V (:,j))) *相关性*诊断接头(sqrt (V (:,j))),在那里V为方差系数矩阵。

中的行和列对应于变量名VarNames

默认情况下,回归系数是不相关的,以制度为条件。

请注意

您可以提供任何适当大小的数字矩阵。但是,如果你方的说明不明确,mixsemiconjugateblm发出警告并将您的规范替换为CorrelationPD,地点:

相关性pd = 0.5*(相关性+相关性。');

提示

有关要指定的值的详细信息相关,请参阅[1]

数据类型:

逆先验的形状超参数σ2,指定为数值标量。

一个至少是-(截距+ NumPredictors)/2

B当保持固定时,逆伽马分布变得更高更集中一个增加。的先验模型σ2大于后验估计时的似然。

逆伽马分布的函数形式,见易于分析处理的后验

例子:“一个”,0.1

数据类型:

逆先验的比例参数σ2,指定为正标量或

一个当保持固定时,逆伽马分布变得更高更集中B增加。的先验模型σ2大于后验估计时的似然。

例子:“B”,5

数据类型:

对象的功能

估计 对贝叶斯线性回归模型进行预测变量选择
模拟 模拟贝叶斯线性回归模型的回归系数和扰动方差
预测 贝叶斯线性回归模型的响应预测
情节 可视化贝叶斯线性回归模型参数的先验和后验密度
总结 分布汇总统计的贝叶斯线性回归模型预测变量的选择

例子

全部折叠

考虑预测美国实际国民生产总值(gdp)的多元线性回归模型(GNPR)采用工业生产指数(新闻学会)、总就业人数(E)和实际工资(或者说是)。

GNPR t = β 0 + β 1 新闻学会 t + β 2 E t + β 3. 或者说是 t + ε t

对所有 t ε t 是一系列均值为0,方差为0的独立高斯扰动吗 σ 2

假设这些先验分布 k = 0,…,3:

  • β k | σ 2 γ k = γ k V k 1 Z 1 + 1 - γ k V k 2 Z 2 ,在那里 Z 1 Z 2 是独立的标准正态随机变量。因此,系数具有高斯混合分布。假设所有系数都是条件独立的。

  • σ 2 G 一个 B 一个 B 分别是逆伽马分布的形状和比例。

  • γ k 0 1 } 它表示具有离散均匀分布的随机变量-包含状态变量。

为SSVS创建一个先验模型。指定预测器的数量p

P = 3;PriorMdl = mixsemijugateblm (p);

PriorMdl是一个mixsemiconjugateblm贝叶斯线性回归模型对象表示回归系数和扰动方差的先验分布。mixsemiconjugateblm在命令行上显示先前分布的摘要。

或者,您可以通过传递预测器的数量来为SSVS创建一个先验模型bayeslm和设置ModelType到的名称-值对参数“mixsemiconjugate”

MdlBayesLM = bayeslm(p,“ModelType”“mixsemiconjugate”
MdlBayesLM = mix半导体jugateblm与属性:NumPredictors: 3拦截:1 VarNames: {4x1 cell} Mu: [4x2 double] V: [4x2 double]概率:[4x1 double]相关性:[4x4 double] A: 3 B:1 |意味着性病CI95积极的分布  ------------------------------------------------------------------------------ 拦截| 0 2.2472[-5.201,5.201]0.500混合分布β(1)| 0 2.2472[-5.201,5.201]0.500混合分布β(2)| 0 2.2472[-5.201,5.201]0.500混合分布β(3)| 0 2.2472[-5.201,5.201]0.500混合分布Sigma2 | 0.5000 - 0.5000[0.138, 1.616] 1.000搞笑(3.00,1)

MdlMdlBayesLM是等价的模型对象。

您可以使用点表示法设置已创建模型的可写属性值。将回归系数名称设置为相应的变量名称。

PriorMdl。VarNames=[“他们”“E”“福”]
PriorMdl = mixsemijugateblm with properties: NumPredictors: 3拦截:1 VarNames: {4x1 cell} Mu: [4x2 double] V: [4x2 double]概率:[4x1 double]相关性:[4x4 double] A: 3 B:1 |意味着性病CI95积极的分布  ------------------------------------------------------------------------------ 拦截| 0 2.2472[-5.201,5.201]0.500混合分布IPI | 0 2.2472[-5.201, 5.201] 0.500混合分布E | 0 2.2472[-5.201, 5.201] 0.500混合分布WR | 0 2.2472[-5.201, 5.201] 0.500混合分布Sigma2 | 0.5000 - 0.5000[0.138, 1.616] 1.000搞笑(3.00,1)

MATLAB®将变量名称与显示中的回归系数关联起来。

绘制先验分布。

情节(PriorMdl);

图中包含5个轴对象。标题为Intercept的Axes对象1包含一个类型为line的对象。标题为IPI的Axes对象2包含一个line类型的对象。标题为E的坐标轴对象3包含一个line类型的对象。标题为WR的Axes对象4包含一个类型为line的对象。标题为Sigma2的Axes对象5包含一个类型为line的对象。

每个系数的先验分布是两个高斯的混合:两个分量的均值都为零,但分量1相对于分量2的方差较大。因此,它们的分布以0为中心,并且具有spike-and-slab外观。

中的线性回归模型为SSVS创建先验模型

为执行SSVS创建一个先验模型。假设 β σ 2 是独立的(半共轭混合物模型)。指定预测器的数量p回归系数的名称。

P = 3;PriorMdl = mixsemijugateblm (p,“VarNames”, (“他们”“E”“福”]);

显示先验区域概率和先验的高斯混合方差因子 β

priorprobability = table(PriorMdl。概率,“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{:, priormll . varnames (2:end)};y = DataTable{:,“GNPR”};

的边际后验分布来实现SSVS β σ 2 。因为SSVS使用马尔科夫链蒙特卡罗(MCMC)进行估计,所以设置一个随机数种子来再现结果。

rng (1);PosteriorMdl =估计(PriorMdl,X,y);
方法:MCMC抽样10000张,观察数:624 |意味着性病CI95积极的分配制度  ------------------------------------------------------------------------------- 拦截| -1.5629 - 2.6816[-7.879,2.703]0.300经验0.5901 IPI | 4.6217 - 0.1222[4.384, 4.865] 1.000经验1 E | 0.0004 - 0.0002[0.000, 0.001] 0.976经验0.0918 WR | 2.6098 - 0.3691[1.889, 3.347] 1.000经验1 Sigma2 | 50.9169 - 9.4955[35.838, 72.707] 1.000经验NaN

PosteriorMdl是一个empiricalblm的后验分布绘制的模型对象 β σ 2 根据这些数据。估计在命令行上显示边缘后验分布的摘要。摘要的行对应回归系数和扰动方差,列对应后验分布的特征。其特点包括:

  • CI95,其中包含参数的95%贝叶斯相等可信区间。例如,后验概率的回归系数E是在[0.000, 0.001]是0.95。

  • 政权,其中包含变量包含的边际后验概率( γ = 1 对于一个变量)。例如,后验概率E应该包含的型号是0.0918。

假设变量政权< 0.1应该从模型中去除,结果表明可以将失业率从模型中排除。

默认情况下,估计绘制并丢弃大小为5000的老化样本。然而,一个好的做法是检查图纸的痕迹图,以充分混合和缺乏瞬态。绘制每个参数的绘图跟踪图。您可以访问组成分布的绘图(属性)BetaDrawsSigma2Draws)使用点表示法。

图;J = 1:(p + 1) subplot(2,2, J);情节(PosteriorMdl.BetaDraws (j,:));标题(sprintf (' % s ', PosteriorMdl.VarNames {j}));结束

图中包含4个轴对象。标题为Intercept的Axes对象1包含一个类型为line的对象。标题为IPI的Axes对象2包含一个line类型的对象。标题为E的坐标轴对象3包含一个line类型的对象。标题为WR的Axes对象4包含一个类型为line的对象。

图;情节(PosteriorMdl.Sigma2Draws);标题(“Sigma2”);

图中包含一个轴对象。标题为Sigma2的axes对象包含一个类型为line的对象。

轨迹图表明,这些图似乎混合得很好。这些图没有显示出可检测的短暂性或序列相关性,并且在状态之间不跳跃。

中的线性回归模型为SSVS创建先验模型

加载Nelson-Plosser数据集。为响应和预测器系列创建变量。将特定于示例的文件添加到MATLAB®路径。

负载Data_NelsonPlosserVarNames = [“他们”“E”“福”];X = DataTable{:,VarNames};y = DataTable{:,“GNPR”};Path = fullfile(matlabroot,“例子”“经济学”“主要”);目录路径);

假设:

  • 截距在模型中,概率为0.9。

  • 新闻学会E在模型中的概率是0.75。

  • 如果E是包含在模型中的,那么概率是或者说是包含在模型中的是0.9。

  • 如果E被排除在模型之外,那么概率是或者说是包含的是0.25。

声明一个名为priorssvsexample.m:

  • 接受一个逻辑向量,指示截距和变量是否在模型中(真正的对于模型包含)。元素1对应于截距,其余元素对应于数据中的变量。

  • 返回一个数字标量,表示所描述的先验区域概率分布的对数。

函数Logprior = priorssvsexample(varinc)PRIORSSVSEXAMPLE记录ssv的先验状态概率分布% 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是计量经济学工具箱™中包含的特定于示例的文件。要访问它,请输入编辑priorssvsexample.m在命令行。

为执行SSVS创建一个先验模型。假设β\美元\σ^ 2美元是独立的(半共轭混合物模型)。指定预测器的数量p回归系数的名称,自定义,变量包含制度的先验概率分布。

P = 3;PriorMdl = mixsemijugateblm (p,“VarNames”, (“他们”“E”“福”],...“概率”, @priorssvsexample);

的边际后验分布来实现SSVSβ\美元\σ^ 2美元。因为SSVS使用MCMC进行估计,所以设置一个随机数种子来再现结果。

rng (1);PosteriorMdl =估计(PriorMdl,X,y);
方法:MCMC抽样10000张,观察数:624 |意味着性病CI95积极的分配制度  ------------------------------------------------------------------------------- 拦截| -1.4658 - 2.6046[-7.781,2.546]0.308经验0.5516 IPI | 4.6227 - 0.1222[4.385, 4.866] 1.000经验1 E | 0.0004 - 0.0002[0.000, 0.001] 0.976经验0.2557 WR | 2.6105 - 0.3692[1.886, 3.346] 1.000经验1 Sigma2 | 50.9621 - 9.4999[35.860, 72.596] 1.000经验NaN

假设,变量与政权< 0.1应该从模型中移除,结果表明可以将所有变量都包含在模型中。

因为这个例子要求路径要访问特定于示例的文件,请通过删除进行清理路径从MATLAB®路径。

rmpath(路径);

中的回归模型为SSVS创建先验模型

执行科学价值:

  1. 为SSVS创建一个贝叶斯回归模型,该模型具有数据似然的半估计先验。使用默认设置。

  2. 列出最后10期估计数据。

  3. 估计边际后验分布。

P = 3;PriorMdl = bayeslm(p,“ModelType”“mixsemiconjugate”“VarNames”, (“他们”“E”“福”]);负载Data_NelsonPlosserFHS = 10;%预测视界大小X = DataTable{1:(end - fhs), priormll . varnames (2:end)};y = DataTable{1:(end - fhs),“GNPR”};XF = DataTable{(end - fhs + 1):end, priormll . varnames (2:end)};%未来预测数据yFT = DataTable{(end - fhs + 1):end,“GNPR”};%真实的未来反应rng (1);%用于再现性PosteriorMdl =估计(PriorMdl,X,y,“显示”、假);

使用后验预测分布和未来预测数据预测反应XF。画出响应的真实值和预测值。

yF = forecast(PosteriorMdl,XF);图;情节(日期、DataTable.GNPR);持有plot(date ((end - fhs + 1):end),yF) h = gca;HP = patch([dates(end - FHS + 1) dates(end) dates(end) dates(end - FHS + 1)],...h.YLim([1,1,2,2]),[0.8 0.8 0.8]);uistack(惠普、“底”);传奇(“预测地平线”“真正的GNPR”“预测GNPR”“位置”“西北”)标题(实际国民生产总值:1909 - 1970);ylabel (“rGNP”);包含(“年”);持有

图中包含一个轴对象。标题为“实际国民生产总值:1909 - 1970”的坐标轴对象包含三个类型的对象,即斑块、直线。这些对象代表预测水平,真实GNPR,预测GNPR。

yF是与未来预测数据相对应的真实GNP的未来值的10乘1向量。

估计预测均方根误差(RMSE)。

frmse =√(mean((yF - yFT).^2))
Frmse = 4.5935

预测均方根误差是预测精度的相对度量。具体来说,您使用不同的假设来估计几个模型。预测RMSE最低的模型是所比较的模型中表现最好的模型。

当您使用SSVS执行贝叶斯回归时,最佳实践是调优超参数。一种方法是在超参数值的网格上估计预测RMSE,并选择使预测RMSE最小化的值。

版权所有2018 The MathWorks, Inc.

更多关于

全部展开

选择功能

bayeslm函数可以为贝叶斯线性回归创建任何支持的先验模型对万博1manbetx象。

参考文献

[1]乔治,e。I。和r。e。麦卡洛克。"通过吉布斯抽样的变量选择"美国统计协会杂志。第88卷,第423号,1993年,第881-889页。

[2]库普,G. D. J.普瓦里尔,J. L.托比亚斯。贝叶斯计量经济学方法。纽约:剑桥大学出版社,2007年。

版本历史

在R2018b中引入