贝叶斯线性回归模型与semiconjugate先验随机搜索变量选择(科学)
一般来说,当你创建一个贝叶斯线性回归模型对象,它指定了联合线性回归模型的先验分布和特点。即模型对象是一个模板供进一步使用。具体地说,将数据分析和特征选择后验分布的模型,将模型对象和数据传递到合适的目标函数。
你可以设置可写属性值创建模型对象时通过使用名称-值对参数语法,或在您创建模型对象通过使用点符号。例如,排除的拦截模型,输入
PriorMdl。拦截=假;
NumPredictors
- - - - - -数量的预测变量数量的预测变量的贝叶斯多元线性回归模型,指定为一个非负整数。
NumPredictors
必须一样的列数你的预测数据,在模型估计或您指定模拟。
当指定NumPredictors
,排除任何拦截的价值。
在创建一个模型,如果你改变的价值NumPredictors
使用点符号,那么这些参数恢复为默认值:
变量名(VarNames
)
之前说的β(μ
)
之前的差异β对于每个政权(V
)
之前的相关矩阵β(相关
)
前政权概率(概率
)
数据类型:双
拦截
- - - - - -为包括回归模型拦截真正的
(默认)|假
为包括回归模型拦截,这表中指定为一个值。
价值 | 描述 |
---|---|
假 |
排除回归模型的截距。因此,β是一个p 维向量,p 的值是NumPredictors 。 |
真正的 |
包括一个拦截的回归模型。因此,β是(p + 1)维向量。这个规范引起T1向量的前缀在估计和仿真预测数据。 |
如果包含一个列的预测数据的截取,然后设置拦截
来假
。
例子:“拦截”,假的
数据类型:逻辑
VarNames
- - - - - -预测变量的名字预测变量名称显示,指定为字符串向量或细胞特征向量的向量。VarNames
必须包含NumPredictors
元素。VarNames (
变量的列的名称吗j
)j
您指定的预测数据集,在估计,模拟或预测。
默认值是β{β(1),(2),…,β(
,在那里p
)}p
的值是NumPredictors
。
例子:“VarNames”,(“失业率会”;“CPI”)
数据类型:字符串
|细胞
|字符
μ
- - - - - -特定组件的平均hyperparameter高斯混合之前β0(拦截+ NumPredictors, 2)
(默认)|数字矩阵特定组件的意思是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
。
数据类型:双
V
- - - - - -特定组件的方差的高斯混合hyperparameter之前βrepmat(0.1[10],拦截+ NumPredictors, 1)
(默认)|正的数值矩阵特定组件的方差的高斯混合hyperparameter之前β,一个(拦截+ NumPredictors
)2积极数字矩阵。第一列包含组件的先验方差因素1 (variable-inclusion政权,γ= 1),第二列包含组件的先验方差因素2 (variable-exclusion政权,γ= 0)。
如果拦截
是假
,然后V
有NumPredictors
行。mixsemiconjugateblm
集的先验方差因子NumPredictors
系数预测中的列对应的数据集,您指定在估计,模拟或预测。
否则,V
有NumPredictors + 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
。
数据类型:双
概率
- - - - - -先验概率分布变量包含和排除制度0.5 * 1(拦截+ NumPredictors, 1)
(默认)|数值向量的值在[0,1]|函数处理先验概率分布变量包含和排除制度,指定为一个(拦截
+NumPredictors
)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
)。
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
)——- (拦截
+NumPredictors
)数字,正定矩阵。因此,组件的先验协方差矩阵
在混合模型j
诊断接头(sqrt (V (:,
,在那里j
)))*相关性*诊断接头(sqrt (V (:,j
)))V
的矩阵系数方差。
行和列对应的变量名VarNames
。
默认情况下,回归系数是不相关的,对阿萨德政权的条件。
请注意
你可以提供任何适当大小的数字矩阵。但是,如果您的规范不是正定的,mixsemiconjugateblm
一个警告和替换您的规范问题CorrelationPD
,地点:
CorrelationPD = 0.5 *(相关+相关性。');
提示
对于细节的值来指定相关
,请参阅[1]。
数据类型:双
一个
- - - - - -形状hyperparameter逆伽马之前σ23
(默认)|数字标量之前的形状hyperparameter逆伽马σ2,指定为一个数字标量。
一个
必须至少-(拦截+ NumPredictors) / 2
。
与B
保持固定,逆伽马分布变得更高、更集中一个
增加。这一特点重量的先验模型σ2后评估期间比的可能性更大。
函数形式的逆伽马分布,明白了易于分析后验。
例子:“一个”,0.1
数据类型:双
B
- - - - - -规模hyperparameter逆伽马之前σ21
(默认)|积极的标量|正
尺度参数的逆伽马之前σ2,指定为一个积极的标量或正
。
与一个
保持固定,逆伽马分布变得更高、更集中B
增加。这一特点重量的先验模型σ2后评估期间比的可能性更大。
例子:“B”, 5
数据类型:双
考虑的多元线性回归模型预测美国实际国民生产总值(GNPR
)使用工业生产指数的线性组合新闻学会
)、就业总人数(E
),实际工资(或者说是
)。
对所有 , 是一系列的独立和0的均值和方差高斯干扰吗 。
假设这些先验分布 = 0,…,3:
,在那里 和 是独立的,标准正态随机变量。因此,系数高斯混合分布。假定所有系数是条件独立的,先天的。
。 和 分别是形状和规模的逆伽马分布。
,它代表了随机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)
Mdl
和MdlBayesLM
是等价的模型对象。
你可以设置可写属性值创建模型的使用点符号。回归系数的名称设置为相应的变量名。
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);
每个系数的先验分布的混合两个高斯函数:这两个组件有一个均值为零,但是组件1相对于组件2有很大差异。因此,他们的分布集中在零和的spike-and-slab外观。
考虑线性回归模型为科学创造之前的模型。
创建一个模型执行科学之前。假设
和
都是独立的(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”};
实现科学的估计边际的后验分布 和 。因为科学使用马尔可夫链蒙特卡罗(密度)估计,设置一个随机数种子繁殖的结果。
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
模型对象存储的后验分布
和
考虑到数据。估计
显示一个总结边缘后验分布的命令行。行总结对应回归系数和扰动变化,和列对应于后验分布的特征。特点包括:
CI95
,其中包含参数的贝叶斯equitailed 95%可信区间。例如,后验概率的回归系数E
是在[0.000,0.001]
是0.95。
政权
,其中包含的边缘后验概率变量包含(
一个变量)。例如,后验概率E
应该包含在模型中是0.0918。
假设变量与政权
< 0.1应该从模型中删除,结果表明,可以排除失业率从模型。
默认情况下,估计
平,丢弃5000年老化的样本大小。然而,一个良好的实践是检查跟踪的情节吸引了足够的混合和缺乏无常。画一个跟踪每个参数的情节吸引了。您可以访问了组成分布(属性BetaDraws
和Sigma2Draws
使用点符号)。
图;为j = 1: (p + 1)次要情节(2,2,j);情节(PosteriorMdl.BetaDraws (j,:));标题(sprintf (' % s ',PosteriorMdl.VarNames {j}));结束
图;情节(PosteriorMdl.Sigma2Draws);标题(“Sigma2”);
跟踪情节似乎表明了混合好。故事情节没有检测到无常或序列相关性,和州之间的吸引不跳。
考虑线性回归模型为科学创造之前的模型。
加载Nelson-Plosser数据集。为响应和预测系列创建变量。例子文件添加到MATLAB®路径。
负载Data_NelsonPlosserVarNames = [“他们”“E”“福”];X = DataTable {: VarNames};y = DataTable {:,“GNPR”};路径= fullfile (matlabroot,“例子”,“经济学”,“主要”);目录路径);
假设如下:
截距模型的概率是0.9。
新闻学会
和E
0.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
在命令行中。
创建一个模型执行科学之前。假设和都是独立的(semiconjugate混合物模型)。指定数量的预测p
回归系数的名称,和自定义,variable-inclusion政权的先验概率分布。
p = 3;PriorMdl = mixsemiconjugateblm (p,“VarNames”,(“他们”“E”“福”),…“概率”,@priorssvsexample);
实现科学的估计边际的后验分布和。因为科学使用密度估计,设置一个随机数种子繁殖的结果。
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(路径);
考虑的回归模型为科学创造之前的模型。
执行科学价值:
创建一个贝叶斯回归模型科学semiconjugate之前的数据的可能性。使用默认设置。
坚持过去10期从估计的数据。
估计边缘后验分布。
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”);包含(“年”);持有从
yF
是一个10-by-1向量的值相对应的实际国民生产总值未来预测数据。
估计预测均方误差(RMSE)。
frmse =√意味着(yF - yFT) ^ 2))
frmse = 4.5935
预测均方根误差是一个相对程度的预测精度。具体地说,您估计几个使用不同的假设模型。最低的模型预测的RMSE是表现最好的模型相比较。
当您执行贝叶斯与科学价值回归,一个最佳实践是优化hyperparameters。这样做的方法之一是估计预测RMSE hyperparameter值的网格,并选择预测RMSE值最小化。
版权2018年MathWorks公司。
一个贝叶斯线性回归模型将参数β和σ2看不到在多元线性回归(MLR)模型yt=xtβ+εt为随机变量。
为次t= 1,…,T:
yt是观察到的反应。
xt是一个1 - (p+ 1)的观测值的行向量p预测因子。为了适应拦截模型,x1t= 1为所有t。
β是(p+ 1)1的列向量回归系数对应的变量组成的列xt。
εt是均值为零的随机干扰和浸(ε)=σ2我T×T,而ε是一个T1向量包含所有干扰。这些假设可能是意味着数据
ϕ(yt;xtβ,σ2)是高斯概率密度的意思xtβ和方差σ2评估在yt;。
考虑到数据之前,您征收联合先验分布假设(β,σ2)。在贝叶斯分析,你更新的分布参数通过使用信息参数获得的数据的可能性。结果是联合后验分布(β,σ2)或条件后验分布的参数。
随机搜索变量选择(科学)是一个贝叶斯线性回归预测变量选择方法,搜索潜在的空间模型,模型后验概率高、平均模型,发现后,完成搜索。
科学假设各回归系数的先验分布是两个高斯分布的混合物,和先验分布σ2是逆伽马和形状吗一个和规模B。让γ= {γ1、…γK}是一个潜在的,随机的政权指示器的回归系数β,地点:
K在模型中系数的数量(拦截
+NumPredictors
)。γk= 1意味着βk|σ2,γk高斯均值为0,方差吗c1。
γk= 0意味着预测高斯均值为0,方差c2。
概率质量函数控制的分布γ的样本空间γ由2K元素。
更具体地说,鉴于γk和σ2,βk=γkc1Z+ (1 -γk)c2Z,地点:
Z是标准正态随机变量。
对共轭模型(mixconjugateblm
),cj=σ2Vj,j= 1,2。
semiconjugate模型(mixsemiconjugateblm
),cj=Vj。
c1是相对较大,这意味着相应的预测模型中更容易。c2相对较小,这意味着相应的预测模型中不太可能因为密度分布在0。
在这个框架中,如果存在的潜力K系数模型,空间有2K搜索模型。因为计算后验概率的2K模型可以计算昂贵,然而使用获得样本γ= {γ1、…γK}和相应估计后验概率模型。算法选择的模型通常有更高的后验概率。估计后验分布的算法组成β和σ2通过计算样本的加权平均模型。该算法属性模型采样更经常更大的重量。
由此产生的后验分布semiconjugate混合模型分析棘手。后验分布的详细信息,请参见易于分析后验。
的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年。
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。