主要内容

mixsemiconjugateblm

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

描述

贝叶斯线性回归模型对象mixsemiconjugateblm指定回归系数与扰动方差的联合先验分布(βσ2)用于实施科学价值(见[1][2])假设βσ2为相依随机变量。

通常,当您创建贝叶斯线性回归模型对象时,它仅指定线性回归模型的联合先验分布和特征。也就是说,模型对象是供进一步使用的模板。具体而言,要将数据合并到模型中以进行后验分布分析和特征选择,请通过将模型对象和数据添加到相应的目标函数

创建

描述

例子

PriorMdl= mixsemiconjugateblm(NumPredictors创造一个贝叶斯线性回归模型对象(PriorMdl)组成的NumPredictors预测器和截距,并设置NumPredictors财产。(βσ2)适用于实施SSV以进行预测器选择[2]PriorMdl是一个模板,用于定义先验分布和β

例子

PriorMdl= mixsemiconjugateblm(NumPredictors名称,值属性(除了NumPredictors),使用名称-值对参数。将每个属性名用引号括起来。例如,MixSementonJugateBlm(3,'概率',ABS(兰特(4,1)))为模型中的所有四个系数指定随机的先前政策概率。

特性

全部展开

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

PriorMdl。拦截=假;

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

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

指定时NumPredictors,该值不包含任何截距项。

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

  • 变量名(VarNames

  • 之前的含义βμ

  • 之前的差异β每一制度(V

  • 先验相关矩阵β相关

  • 先前制度概率(可能性

数据类型:

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

价值 描述
从回归模型中排除截距。因此,β是一个p维向量,p的价值NumPredictors
真正的 在回归模型中包含一个截距。因此,β是(p+ 1)维向量。该规范导致T在估计和模拟期间,预估器数据的1 × 1向量。

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

例子:“拦截”,错

数据类型:逻辑

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

默认为{'beta(1)','beta(2),...,beta(p)},在那里p的价值NumPredictors

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

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

先验高斯混合的分量平均超参数β,指定为一个(拦截+ NumPredictors) 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元素。第一个元素对应于截距的先验方差因子,所有其他元素对应于预测变量。

提示

  • 要执行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

数据类型:

变量包含和排除机制的先验概率分布,具体为一个(拦截+NumPredictors)中[0,1]值的数字向量,或形式的函数句柄@fcnname.,在那里fcnName是函数名称。可能性表示现有概率分布γ= {γ1、……γK},其中:

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

  • γk∈{0,1}k1、……K.因此,样本空间的基数是2K

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

如果可能性是一个数值向量:

  • 行对应于中的变量名VarNames.对于包含截距的模型,拦截夹杂物的现有概率是概率(1)

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

  • 在所有变量和截距中,变量包含机制的先验概率是独立的。

如果可能性为函数句柄,则表示变量包含状态概率的自定义先验分布。对应的函数必须有这样的声明语句(参数和函数名可以变化):

logprob = regimeprior (varinc)

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

  • varinc是一个K-by-1逻辑向量。元素对应于中的变量名VarNames并指出相应变量存在的范围。varinc (k真正的表明瓦名称(k包含在模型中,并且varinc (k表示从模型中排除。

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

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

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

数据类型:|function_handle

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

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

默认情况下,回归系数是不相关的,取决于政体。

请注意

你可以提供任意大小的数字矩阵。然而,如果你的说明书不是正定的,mixsemiconjugateblm发出警告并将您的规范替换为CorrelationPD, 在哪里:

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

提示

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

数据类型:

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

一个至少- (拦截+ numpredictors)/ 2

B如果固定不变,逆伽马分布会随着时间的推移变得更高、更集中一个增加。这一特性衡量的先验模型σ2比后验估计的可能性更大。

关于逆分布的函数形式,见易于分析后验

例子:“一个”,0.1

数据类型:

先前逆伽马的比例参数σ2,指定为正标量或Inf

一个如果固定不变,逆伽马分布会随着时间的推移变得更高、更集中B增加。这一特性衡量的先验模型σ2比后验估计的可能性更大。

例子:“B”,5

数据类型:

对象的功能

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

例子

全部折叠

考虑预测美国实际国民生产总值的多元线性回归模型(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 = mixsemiconjugateblm (p);

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

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

MdlBayesLM = bayeslm (p,“ModelType”“mixsemiconjugate”
MdlBayesLM = mixsemi jugateblm 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 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 [-5.201,2.2472[0.138, 1.616] 1.000 IG(3.00, 1)

MdlMdlBayesLM是等价的模型对象。

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

PriorMdl。VarNames=[“他们”“E”“福”
PriorMdl = mixsemi jugateblm 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 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 [-5.201, 2.2472[0.138, 1.616] 1.000 IG(3.00, 1)

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

绘制现有分布。

绘图(PriorMdl);

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

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

考虑线性回归模型建立SSVS的先验模型

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

p=3;PriorMdl=混合半共轭BLM(p,“VarNames”, (“他们”“E”“福”]);

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

表(PriorMdl priorProbabilities =。概率,'rownames',priormdl.varnames,......'variablenames'“概率”
priorProbabilities =4×1表概率___________拦截0.5 IPI 0.5 E 0.5 WR 0.5
priarev = array2table(priormdl.v,'rownames',priormdl.varnames,......'variablenames', (“gammaIs1”“gammaIs0”])
普里奥夫=4×2表gammaIs1 gammaIs0 ________ ________ Intercept 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'};

通过估计边缘后验分布来实现SSVS β σ 2 .由于SSVS使用Markov chain Monte Carlo (MCMC)进行估计,所以设置随机数种子来再现结果。

RNG(1);posteriormdl =估计(priormdl,x,y);
方法:观察次数为10000次的MCMC抽样:62个预测因子:4 |平均Std 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是一个仿真纤维商店从后部分布绘制的模型对象 β σ 2 考虑到数据。估计在命令行显示边缘后缘分布的摘要。摘要的行对应回归系数和干扰方差,列对应后验分布特征。特点包括:

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

  • 政权,其中包含变量纳入的边际后验概率( γ 1 一个变量)。例如,后验概率E应包含在模型中的是0.0918。

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

默认情况下,估计绘制并丢弃尺寸为5000的老化样本。然而,一个良好的实践是检查绘图的轨迹图是否有充分的混合和缺乏短暂性。为每个参数绘制绘图的跟踪图。您可以访问组成分布的绘图(属性)BetaDrawsSigma2Draws)使用点表示法。

图;j = 1:(p + 1)子图(2,2,j);plot(postiormdl.betadraws(j,:));标题(Sprintf(' % s ',posteriormdl.varnames {j}));结束

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

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

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

示踪图表明,两幅画似乎混合得很好。这些图没有显示出可检测到的瞬变或序列相关,并且在状态之间绘制也没有跳变。

考虑线性回归模型建立SSVS的先验模型

加载Nelson Plosser数据集。为响应和预测序列创建变量。将特定示例的文件添加到MATLAB®ATAL。

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

假设如下:

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

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

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

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

声明一个名为Priorssvsexample.m.:

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

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

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

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

p=3;PriorMdl=混合半共轭BLM(p,“VarNames”, (“他们”“E”“福”],......“概率”, @priorssvsexample);

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

RNG(1);posteriormdl =估计(priormdl,x,y);
方法:MCMC采样带10000次观察次数:62预测器数量:4 |平均std 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经验楠

假设,变量政权< 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:(结束 -  FHS),PriormDL.Varnames(2:结束)};Y = DataTable {1:(结束 -  FHS),'GNPR'};XF = DataTable {(结束 -  FHS + 1):END,PRIOMDL.Varnames(2:结束)};%未来预测数据yFT = DataTable{(end - fhs + 1):结束,'GNPR'};%未来的真实反应RNG(1);%的再现性PosteriorMdl =估计(PriorMdl, X, y,“显示”、假);

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

yF =预测(PosteriorMdl XF);图;情节(日期、DataTable.GNPR);持有绘图(日期((结束 -  fhs + 1):end),yf)h = gca;HP =补丁([日期(结束 -  FHS + 1)日期(结束)日期(结束)日期(结束 -  FHS + 1)],......H.YLIM([1,1,2,2]),[0.8 0.8]);Uistack(惠普,'底部');传奇(“预测地平线”'真正的gnpr'“预测GNPR”“位置”“西北”)标题(“实际国民生产总值:1909 - 1970”);ylabel(“rGNP”);包含(“年”);持有

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

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

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

frmse =√(mean((yF - yFT).²))
frmse = 4.5935

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

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

The MathWorks, Inc.版权所有

更多关于

全部展开

选择功能

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

工具书类

[1]乔治,E.I.和R.E.麦卡洛赫,“通过吉布斯抽样进行变量选择。”美国统计协会杂志.卷。88,第423,1993,第423,PP。881-889。

[2]Koop, G., D. J. Poirier和J. L. Tobias。贝叶斯计量经济学方法纽约:剑桥大学出版社,2007年。

介绍了R2018b