主要内容

mixsemiconjugateblm

贝叶斯线性回归模型与semiconjugate先验随机搜索变量选择(科学)

描述

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

一般来说,当你创建一个贝叶斯线性回归模型对象,它指定了联合线性回归模型的先验分布和特点。即模型对象是一个模板供进一步使用。具体地说,将数据分析和特征选择后验分布的模型,将模型对象和数据传递到合适的目标函数

创建

描述

例子

PriorMdl= mixsemiconjugateblm (NumPredictors)创建一个贝叶斯线性回归模型对象(PriorMdl)组成的NumPredictors预测和拦截,并设置NumPredictors财产。联合的先验分布(β,σ2)是合适的预测实现科学的选择[2]PriorMdl是一个模板,它定义了维度的先验分布和β

例子

PriorMdl= mixsemiconjugateblm (NumPredictors,名称,值)属性(除了NumPredictors使用参数名称-值对)。在报价附上每个属性的名字。例如,mixsemiconjugateblm(3、“概率”、abs(兰德(4,1)))指定随机前政权的所有四个系数概率模型。

属性

全部展开

你可以设置可写属性值创建模型对象时通过使用名称-值对参数语法,或在您创建模型对象通过使用点符号。例如,排除的拦截模型,输入

PriorMdl。拦截=假;

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

NumPredictors必须一样的列数你的预测数据,在模型估计或您指定模拟。

当指定NumPredictors,排除任何拦截的价值。

在创建一个模型,如果你改变的价值NumPredictors使用点符号,那么这些参数恢复为默认值:

  • 变量名(VarNames)

  • 之前说的β(μ)

  • 之前的差异β对于每个政权(V)

  • 之前的相关矩阵β(相关)

  • 前政权概率(概率)

数据类型:

为包括回归模型拦截,这表中指定为一个值。

价值 描述
排除回归模型的截距。因此,β是一个p维向量,p的值是NumPredictors
真正的 包括一个拦截的回归模型。因此,β是(p+ 1)维向量。这个规范引起T1向量的前缀在估计和仿真预测数据。

如果包含一个列的预测数据的截取,然后设置拦截

例子:“拦截”,假的

数据类型:逻辑

预测变量名称显示,指定为字符串向量或细胞特征向量的向量。VarNames必须包含NumPredictors元素。VarNames (j)变量的列的名称吗j您指定的预测数据集,在估计,模拟或预测。

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

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

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

特定组件的意思是hyperparameter高斯混合之前β,指定为一个(拦截+ NumPredictors)2数字矩阵。第一列包含了之前对组件1(意味着variable-inclusion政权,γ= 1)。第二列包含了之前对组件2(意味着variable-exclusion政权,γ= 0)。

  • 如果拦截,然后μNumPredictors行。mixsemiconjugateblm之前设置的意思NumPredictors系数预测中的列对应的数据集,您指定在估计,模拟或预测。

  • 否则,μNumPredictors + 1元素。第一个元素对应于之前拦截,和所有其他元素对应于预测变量。

提示

执行科学,使用的默认值μ

例子:在3-coefficient模型中,“亩”,[0.5 0;0.5 0;0.5 0]设置组件1之前的意思是所有的系数0.5并设置组件2之前的意思是所有的系数0

数据类型:

特定组件的方差的高斯混合hyperparameter之前β,一个(拦截+ NumPredictors)2积极数字矩阵。第一列包含组件的先验方差因素1 (variable-inclusion政权,γ= 1),第二列包含组件的先验方差因素2 (variable-exclusion政权,γ= 0)。

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

  • 否则,VNumPredictors + 1元素。第一个元素对应的先验方差因子拦截,和所有其他元素对应于预测变量。

提示

  • 执行科学,指定一个更大的政权对政权1比2(方差因素j,指定V (j,1)>V (j,2))。

  • 更多细节值来指定V,请参阅[1]

例子:在3-coefficient模型中,“V”, [100 1;100年1;100 (1)设置组件1先验方差因子的系数One hundred.并设置组件2先验方差因子的系数1

数据类型:

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

  • K=拦截+NumPredictors,这是回归模型系数的数量。

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

  • γk= 1表示变量VarNames(k)包含在模型,γk= 0表示变量被排除在模型。

如果概率是一个数值向量:

  • 行对应的变量名VarNames。模型包含一个拦截,拦截包容的先验概率概率(1)

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

  • variable-inclusion政权的先验概率,在所有变量和拦截,是独立的。

如果概率是一个函数处理,那么它代表variable-inclusion政权的一个定制的先验分布概率。相应的函数必须有这个声明语句(参数和函数名不同):

logprob = regimeprior (varinc)

  • logprob是一个数字代表先验分布的日志标量。你可以写的先验分布比例常数。

  • varinc是一个K1逻辑向量。元素对应的变量名VarNames并指出相应变量的政权存在。varinc (k)=真正的表明VarName (k)包含在模型,varinc (k)=表明它是排除在模型。

你可以包括多个输入参数,但他们必须知道当你调用mixsemiconjugateblm

对于细节的值来指定概率,请参阅[1]

例子:在3-coefficient模型中,“概率”,兰德(3,1)随机分配之前variable-inclusion概率系数。

数据类型:|function_handle

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

行和列对应的变量名VarNames

默认情况下,回归系数是不相关的,对阿萨德政权的条件。

请注意

你可以提供任何适当大小的数字矩阵。但是,如果您的规范不是正定的,mixsemiconjugateblm一个警告和替换您的规范问题CorrelationPD,地点:

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

提示

对于细节的值来指定相关,请参阅[1]

数据类型:

之前的形状hyperparameter逆伽马σ2,指定为一个数字标量。

一个必须至少-(拦截+ NumPredictors) / 2

B保持固定,逆伽马分布变得更高、更集中一个增加。这一特点重量的先验模型σ2后评估期间比的可能性更大。

函数形式的逆伽马分布,明白了易于分析后验

例子:“一个”,0.1

数据类型:

尺度参数的逆伽马之前σ2,指定为一个积极的标量或

一个保持固定,逆伽马分布变得更高、更集中B增加。这一特点重量的先验模型σ2后评估期间比的可能性更大。

例子:“B”, 5

数据类型:

对象的功能

估计 执行预测变量选择贝叶斯线性回归模型
模拟 模拟回归系数和扰动贝叶斯线性回归模型的方差
预测 贝叶斯线性回归模型的预测的反应
情节 可视化之前和贝叶斯线性回归模型参数的后验密度
总结 摘要统计信息分布的贝叶斯线性回归模型预测变量的选择

例子

全部折叠

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

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

对所有 t , ε t 是一系列的独立和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 } ,它代表了随机variable-inclusion政权变量离散均匀分布。

然而之前创建一个模型。指定数量的预测p

p = 3;PriorMdl = mixsemiconjugateblm (p);

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

或者,您可以创建一个模型之前学会通过预测的数量bayeslm并设置ModelType名称-值对参数“mixsemiconjugate”

MdlBayesLM = bayeslm (p,“ModelType”,“mixsemiconjugate”)
MdlBayesLM = mixsemiconjugateblm属性:NumPredictors: 3拦截:1 VarNames: {4 x1细胞}μ:[4 x2双]V: [4 x2双]概率:[4 x1双]相关:[4 x4双]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 = mixsemiconjugateblm属性:NumPredictors: 3拦截:1 VarNames: {4 x1细胞}μ:[4 x2双]V: [4 x2双]概率:[4 x1双]相关:[4 x4双]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®associates的回归系数显示的变量名。

情节的先验分布。

情节(PriorMdl);

图包含5轴对象。坐标轴对象1标题拦截包含一个类型的对象。坐标轴对象2标题IPI包含一个类型的对象。坐标轴对象与标题3 E包含一个类型的对象。坐标轴对象4标题或者说是包含一个类型的对象。5轴对象与标题Sigma2包含一个类型的对象。

每个系数的先验分布的混合两个高斯函数:这两个组件有一个均值为零,但是组件1相对于组件2有很大差异。因此,他们的分布集中在零和的spike-and-slab外观。

考虑线性回归模型为科学创造之前的模型

创建一个模型执行科学之前。假设 β σ 2 都是独立的(semiconjugate混合物模型)。指定数量的预测p和回归系数的名称。

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

显示前政权之前的概率和高斯混合方差因素 β

priorProbabilities =表(PriorMdl.Probability,“RowNames”PriorMdl.VarNames,“VariableNames”,“概率”)
priorProbabilities =4×1表⒈拦截概率0.5 IPI 0.5 E 0.5或者说是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或者说是0.1

PriorMdl商店前政权的概率概率房地产和政权方差因素V财产。默认的变量包含先验概率是0.5。默认每个系数的方差因素10 variable-inclusion政权和0.01 variable-exclusion政权。

加载Nelson-Plosser数据集。为响应和预测系列创建变量。

负载Data_NelsonPlosserX = DataTable {: PriorMdl.VarNames(2:结束)};y = DataTable {:,“GNPR”};

实现科学的估计边际的后验分布 β σ 2 。因为科学使用马尔可夫链蒙特卡罗(密度)估计,设置一个随机数种子繁殖的结果。

rng (1);PosteriorMdl =估计(PriorMdl, X, y);
方法:与10000年获得了数量的观察:62年的预测数量:4 |意味着性病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,其中包含参数的贝叶斯equitailed 95%可信区间。例如,后验概率的回归系数E是在[0.000,0.001]是0.95。

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

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

默认情况下,估计平,丢弃5000年老化的样本大小。然而,一个良好的实践是检查跟踪的情节吸引了足够的混合和缺乏无常。画一个跟踪每个参数的情节吸引了。您可以访问了组成分布(属性BetaDrawsSigma2Draws使用点符号)。

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

图包含4轴对象。坐标轴对象1标题拦截包含一个类型的对象。坐标轴对象2标题IPI包含一个类型的对象。坐标轴对象与标题3 E包含一个类型的对象。坐标轴对象4标题或者说是包含一个类型的对象。

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

图包含一个坐标轴对象。坐标轴对象与标题Sigma2包含一个类型的对象。

跟踪情节似乎表明了混合好。故事情节没有检测到无常或序列相关性,和州之间的吸引不跳。

考虑线性回归模型为科学创造之前的模型

加载Nelson-Plosser数据集。为响应和预测系列创建变量。例子文件添加到MATLAB®路径。

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

假设如下:

  • 截距模型的概率是0.9。

  • 新闻学会E0.75与概率模型。

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

  • 如果E的概率是排除在模型,然后呢或者说是包括是0.25。

声明一个函数命名priorssvsexample.m:

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

  • 返回一个数字代表日志标量描述前政权的概率分布。

函数logprior = priorssvsexample (varinc)% PRIORSSVSEXAMPLE日志前政权科学价值的概率分布% PRIORSSVSEXAMPLE是一个自定义日志前政权的概率%分布科学与相关的随机变量。varinc是% 4-by-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在命令行中。

创建一个模型执行科学之前。假设β\美元\σ^ 2美元都是独立的(semiconjugate混合物模型)。指定数量的预测p回归系数的名称,和自定义,variable-inclusion政权的先验概率分布。

p = 3;PriorMdl = mixsemiconjugateblm (p,“VarNames”,(“他们”“E”“福”),“概率”,@priorssvsexample);

实现科学的估计边际的后验分布β\美元\σ^ 2美元。因为科学使用密度估计,设置一个随机数种子繁殖的结果。

rng (1);PosteriorMdl =估计(PriorMdl, X, y);
方法:与10000年获得了数量的观察:62年的预测数量:4 |意味着性病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(路径);

考虑的回归模型为科学创造之前的模型

执行科学价值:

  1. 创建一个贝叶斯回归模型科学semiconjugate之前的数据的可能性。使用默认设置。

  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):最终,PriorMdl.VarNames(2:结束)};%未来的预测数据yFT = DataTable{(结束- fhs + 1):结束,“GNPR”};%未来真实的反应rng (1);%的再现性PosteriorMdl =估计(PriorMdl, X, y,“显示”、假);

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

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

图包含一个坐标轴对象。坐标轴对象与标题真正的国民生产总值:1909 - 1970包含3补丁类型的对象,线。这些对象代表预测地平线,真实GNPR,预测GNPR。

yF是一个10-by-1向量的值相对应的实际国民生产总值未来预测数据。

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

frmse =√意味着(yF - yFT) ^ 2))
frmse = 4.5935

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

当您执行贝叶斯与科学价值回归,一个最佳实践是优化hyperparameters。这样做的方法之一是估计预测RMSE hyperparameter值的网格,并选择预测RMSE值最小化。

版权2018年MathWorks公司。

更多关于

全部展开

选择功能

bayeslm函数可以创建任何支持先前对贝叶斯线性回归的模型对金宝app象。

引用

[1]乔治,我大肠。,和R. E. McCulloch. "Variable Selection Via Gibbs Sampling."美国统计协会杂志》上。88卷,423号,1993年,页881 - 889。

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

介绍了R2018b