贝叶斯线性回归模型与随机搜索变量选择semiconjugate先验(SS VS移至)
通常,当您创建贝叶斯线性回归模型对象时,它只指定线性回归模型的联合先验分布和特征。也就是说,模型对象是一个供进一步使用的模板。具体来说,将数据合并到模型中进行后验分布分析和特征选择,将模型对象和数据传递给合适的对象目标函数。
当您使用的名称 - 值对参数语法创建模型对象,你可以设置可写的属性值,或者在您通过使用点符号模型对象。例如,要从模型中排除截距,输入
PriorMdl。拦截=假;
NumPredictors
-预测变量数贝叶斯多元线性回归模型中预测变量的个数,指定为非负整数。
NumPredictors
必须与预测数据中的列数相同,预测数据是在模型估计或模拟期间指定的。
当指定NumPredictors
,为该值排除任何截取项。
在创建模型之后,如果您更改了值NumPredictors
使用点符号,然后这些参数恢复到默认值:
变量名(VarNames
)
之前说的β(μ
)
之前的差异β每一种管理制度(V
)
先验相关矩阵β(关联
)
先验状态概率(概率
)
数据类型:双
拦截
-包含回归模型截距的标志真正的
(默认)|假
标志用于包括回归模型截距,指定为在此表中的值。
价值 | 描述 |
---|---|
假 |
从回归模型中排除截距。因此,β是一个p 维向量,其中p 是的价值NumPredictors 。 |
真正的 |
在回归模型中包含一个截距。因此,β是(p + 1)维向量。此规范导致Ť在估计和仿真过程中,需要在预测数据中加入1的-by-1向量。 |
如果在预测器数据中包含一列的个位,则设置拦截
来假
。
例子:“拦截”,假的
数据类型:合乎逻辑
VarNames
-预测变量名用于显示的预测器变量名,指定为字符串向量或字符向量的单元向量。VarNames
必须包含NumPredictors
元素。VarNames (
变量的名称在列中吗Ĵ
)Ĵ
在估计、模拟或预测期间指定的预测器数据集的。
默认值是β{β(1),(2),…,β(
,在那里p
)}p
是的价值NumPredictors
。
例子:'VarNames',[ “UnemploymentRate”;“CPI”]
数据类型:字符串
|细胞
|字符
μ
-高斯混合的逐个分量均值超参数上之前β0(拦截+ NumPredictors, 2)
(默认)|数字矩阵成分上高斯混合先验的均值超参数β,指定为一个(拦截+ NumPredictors
)2数字矩阵。第一列包含组件1的先验均值(变量包含机制,即,γ= 1).第二列是第2项的先验均值(变量排除制度,即,γ= 0)。
如果拦截
是假
, 然后μ
有NumPredictors
行。mixsemiconjugateblm
的先验均值NumPredictors
在估计、模拟或预测期间指定的预测器数据集中与列对应的系数。
否则,μ
有NumPredictors + 1
元素。第一个元素对应于截距的先验平均值,所有其他元素对应于预测变量。
若要执行ssv,请使用的默认值为μ
。
例子:在3系数模型中,'穆',[0.5 0;0.5 0;0.5 0]
将所有系数的分量1先验均值设为0.5
并将所有系数的分量2先验均值设为0
。
数据类型:双
V
-高斯混合的逐个分量的方差超参数上之前βrepmat([10 0.1],Intercept + NumPredictors,1)
(默认)|正的数值矩阵高斯混合先验的成分方差超参数β,一个(拦截+ NumPredictors
)-乘2的正数值矩阵。第一列包含第1部分的先验方差因子(变量包含制度,即,γ= 1)。第二列包含组分2(可变排阻制度,即现有方差因子,γ= 0)。
如果拦截
是假
, 然后V
有NumPredictors
行。mixsemiconjugateblm
的先验方差因子NumPredictors
在估计、模拟或预测期间指定的预测器数据集中与列对应的系数。
否则,V
有NumPredictors + 1
元素。第一个元素对应于截距的先验方差因子,其他所有元素对应于预测变量。
要执行ssv,为方案1指定一个比方案2更大的方差因子(对于所有方案)Ĵ
,指定V (
>Ĵ
,1)V (
)。Ĵ
,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]的值)×1数值向量,或在形式的功能句柄@fcnName
,在那里fcnName
是函数名。概率
表示的先验概率分布γ= {γ1、……γķ},:
ķ=拦截
+NumPredictors
,即回归模型中的系数个数。
γķ∈{0,1}ķ=1、……ķ。因此,样品空间具有2的基数ķ。
γķ= 1表示可变VarNames
(
包括在模型中,并γķ= 0表示该变量被排除在模型之外。ķ
)
如果概率
为数值向量:
行对应于in中的变量名VarNames
。对于包含截距的模型,截距包含的先验概率为概率(1)
。
对于
= 1,…,ķ,排除变量的先验概率ķ
是1 -ķ
概率(
ķ
)。
变量包含机制的先验概率,在所有变量和截距之间是独立的。
如果概率
为函数句柄,则表示变量包含状态概率的自定义先验分布。对应的函数必须有这样的声明语句(参数和函数名可以不同):
logprob = regimeprior (varinc)
logprob
是一个数字标量,表示先验分布的日志。你可以把先验分布写成比例常数。
varinc
是一个ķ1逻辑向量。元素对应于中的变量名VarNames
并指出相应变量存在的状态。varinc (
=ķ
)真正的
表明VarName (
包括在模型中,并ķ
)varinc (
=ķ
)假
指示它被排除在模型之外。
您可以包括更多的输入参数,但是在调用时必须知道它们mixsemiconjugateblm
。
有关指定值的详细信息概率
见[1]。
例子:在3系数模型中,'概率',兰特(3,1)
为每个系数分配随机的先验变量包含概率。
数据类型:双
|function_handle
关联
-先验相关矩阵β眼(截距+ NumPredictors)
(默认)|数值,正定矩阵先验相关矩阵β对于混合模型中的两个组件,指定为一个(拦截
+NumPredictors
)——- (拦截
+NumPredictors
)数值,正定矩阵。从而得到各分量的先验协方差矩阵
混合模型为Ĵ
诊断接头(sqrt (V (:,
,在那里Ĵ
)))* *相关性诊断(SQRT(V(:,Ĵ
)))V
为方差系数矩阵。
行和列对应的变量名VarNames
。
默认情况下,回归系数是不相关的,在制度条件。
您可以提供任何适当大小的数字矩阵。然而,如果你的说明不是肯定的,mixsemiconjugateblm
发出警告并将您的规范替换为CorrelationPD
,地点:
CorrelationPD = 0.5*(Correlation + Correlation.');
有关指定值的详细信息关联
见[1]。
数据类型:双
一个
-逆先验的形状超参数σ23
(默认)|数字标量逆先验的形状超参数σ2,指定为数值标量。
一个
至少-(拦截+ NumPredictors) / 2
。
与乙
在保持不变的情况下,反伽马分布变得更高更集中一个
增加。这个特征称为先验模型σ2更重比后估计中的可能性。
有关反伽马分布的函数形式,请参阅易于分析后验。
例子:“一个”,0.1
数据类型:双
乙
-逆先验的尺度超参数σ21
(默认)|正标量|正
反演先验的尺度参数σ2,指定为正标量或正
。
与一个
在保持不变的情况下,反伽马分布变得更高更集中乙
增加。这个特征称为先验模型σ2更重比后估计中的可能性。
例子:“B”, 5
数据类型:双
考虑预测美国实际国民生产总值(gdp)的多元线性回归模型(GNPR
)采用工业生产指数的线性组合(IPI
)、总就业人数(Ë
)和实际工资(或者说是
)。
对所有 , 是具有0和方差的平均一系列独立的高斯干扰的 。
假设这些先验分布 = 0,…,3:
,在那里 和 是独立的标准正态随机变量。因此,系数呈高斯混合分布。假设所有系数都是先验条件独立的。
。 和 是一个逆伽马分布的形状和规模,分别。
它表示具有离散均匀分布的随机变量-包含状态变量。
为ssv创建一个先验模型。指定预测器的数量p
。
p = 3;PriorMdl = mixsemiconjugateblm (p);
PriorMdl
是一个mixsemiconjugateblm
贝叶斯线性回归模型对象表示回归系数和扰动方差的先验分布。mixsemiconjugateblm
在命令行显示先前发行版的摘要。
或者,您可以通过传递预测器的数量来为ssv创建一个先验模型bayeslm
并设置ModelType
名称-值对参数'mixsemiconjugate'
。
MdlBayesLM = bayeslm(P,'ModelType','mixsemiconjugate')
MdlBayesLM = mixjugateblm,其属性为:NumPredictors: 3 Intercept: 1 varname: {4x1 cell} Mu: [4x2 double] V: [4x2 double]概率:[4x1 double]相关性:[4x4 double] A: 3b: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 = mixjugateblm with properties: NumPredictors: 3 Intercept: 1 varname: {4x1 cell} Mu: [4x2 double] V: [4x2 double]概率:[4x1 double]相关性:[4x4 double] A: 3b: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);
每个系数的先验分布是两个高斯函数的混合:两个分量的均值都为零,但分量1相对于分量2的方差很大。因此,它们的分布以0为中心穗和板坯外观。
考虑线性回归模型为ssv创建先验模型。
为执行ssv创建一个先验模型。假设
和
是独立的(半混合模型)。指定预测器的数量p
以及回归系数的名称。
p = 3;PriorMdl = mixsemiconjugateblm (p,“VarNames”,[“他们”“E”“福”]);
显示先验状态概率和先验的高斯混合方差因子 。
priorProbabilities =表(PriorMdl.Probability,“RowNames”PriorMdl.VarNames,...“VariableNames”,“概率”)
priorProbabilities =4×1表截获0.5 IPI 0.5 e0.5 WR 0.5的概率
priorV = array2table (PriorMdl.V,“RowNames”PriorMdl.VarNames,...“VariableNames”,[“gammaIs1”“gammaIs0”])
priorV =4×2表的翻译是:gammaIs1 . gammaIs0表示截距10 .1表示IPI 10 .1表示IPI 10 .1表示IPI 10 .1表示WR 10 .1表示WR 10 .1
PriorMdl
中存储先验状态概率概率
财产和制度差异的因素在V
财产。可变夹杂物的默认先验概率为0.5。默认方差因子为每个系数是10可变列入制度和0.01用于可变排阻制度。
加载Nelson-Plosser数据集。为响应和预测器系列创建变量。
加载Data_NelsonPlosserX = DataTable {: PriorMdl.VarNames(2:结束)};y = DataTable {:,“GNPR”};
通过估计的边缘后验分布来实施SSVS 和 。因为SS VS移至使用马尔可夫链蒙特卡洛(MCMC),用于估计,设置一个随机数种子繁殖的结果。
rng (1);PosteriorMdl =估计(PriorMdl, X, y);
方法:用10000个MCMC采样抽取观察值: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
,其中包含95%贝叶斯均衡可信区间的参数。例如,回归系数的后验概率Ë
是在[0.000,0.001]
是0.95。
政权
,它包含变量夹杂物的边缘后验概率(
一个变量)。例如,后验概率Ë
应该包括在模型中的是0.0918。
假设变量政权
< 0.1应该从模型中删除,结果表明可以将失业率从模型中排除。
默认情况下,估计
平丢弃老化大小5000然而样品,一个好的习惯是检查一个轨迹曲线的绘制的充分混合,缺乏短暂的。绘制轨迹曲线的绘制每个参数。您可以访问绘制一条撰写的分布(属性BetaDraws
和Sigma2Draws
)使用点符号。
图;为j = 1:(p + 1) subplot(2,2,j);情节(PosteriorMdl.BetaDraws (j,:));标题(sprintf (' % s ',PosteriorMdl.VarNames {j}));结束
图;情节(PosteriorMdl.Sigma2Draws);标题(“Sigma2”);
跟踪曲线表明,吸引似乎拌匀。该图显示没有可检测到短暂或序列相关性,以及吸引不状态之间跳跃。
考虑线性回归模型为ssv创建先验模型。
加载Nelson-Plosser数据集。为响应和预测器系列创建变量。将特定于示例的文件添加到MATLAB®路径。
加载Data_NelsonPlosserVarNames = [“他们”“E”“福”];X = DataTable {: VarNames};y = DataTable {:,“GNPR”};路径= fullfile (matlabroot,“例子”,“经济学”,“主要”);让addpath(路径);
假设如下:
模型中的截距是0。9。
IPI
和Ë
的概率为0.75。
如果Ë
包括在模型中,那么概率是或者说是
包括在模型中的是0.9。
如果Ë
从模型中排除,那么概率是多少或者说是
包括0。25。
声明一个名为priorssvsexample.m
:
接受一个逻辑向量,该逻辑向量指示截距和变量是否在模型中(真正的
模型包含)。元素1对应于截距,其余元素对应于数据中的变量。
返回一个数字标量,表示所描述的先验状态概率分布的日志。
函数logprior = priorssvsexample (varinc)记录ssv的先验状态概率分布% PRIORSSVSEXAMPLE是一个自定义日志先验状态概率的例子含相关随机变量的ssv的%分布。varinc是表示模型中是否有4个系数的4×1逻辑向量和logPrior是一个数字标量,表示先验的日志状态概率的%分布。%%系数根据这些规则输入模式:% * varinc(1)包含0.9的概率。模型中% * varinc(2)和varinc(3)的概率为0.75。% *如果模型中包含varinc(3),则模型中包含的% varinc(4)为0.9。%*如果varinc(3)从模型中,然后将排除概率所包括的变容(4)是0.25。logprior =日志(0.9)+ 2 *日志(0.75)+日志(varinc(3)* 0.9 +(1-varinc(3))* 0.25);结束
priorssvsexample.m
是包含在计量经济学工具箱™为例,具体的文件。要访问它,进入编辑priorssvsexample.m
在命令行。
为执行ssv创建一个先验模型。假设和是独立的(半混合模型)。指定预测器的数量p
回归系数的名称,变量包含域的自定义、先验概率分布。
p = 3;PriorMdl = mixsemiconjugateblm (p,“VarNames”,[“他们”“E”“福”),...“概率”,@ priorssvsexample);
通过估计的边缘后验分布来实施SSVS和。因为SSVS使用MCMC进行估计,所以设置一个随机数种子来重现结果。
rng (1);PosteriorMdl =估计(PriorMdl, X, y);
方法:用10000个MCMC采样抽取观察值: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(路径);
考虑回归模型为ssv创建先验模型。
执行科学价值:
为ssv创建一个贝叶斯回归模型,其中数据似然部分采用半聚先验。使用默认设置。
从评估中拿出最后10个时期的数据。
估计边缘后验分布。
p = 3;PriorMdl = bayeslm(P,'ModelType','mixsemiconjugate',“VarNames”,[“他们”“E”“福”]);加载Data_NelsonPlosserfhs = 10;预测层位大小X = DataTable{1:(end - fhs),PriorMdl.VarNames(2:end)};y = DataTable{1:(end - fhs),“GNPR”};XF = DataTable{(end - fhs + 1):end,PriorMdl.VarNames(2:end)};今后%的预测数据yFT = DataTable{(end - fhs + 1):end,“GNPR”};%真实未来反应rng (1);%的再现性PosteriorMdl =估计(PriorMdl, X, y,“显示”、假);
预测响应采用后验预测分布和未来预测数据XF
。绘制响应的真实值和预测值。
yF =预测(PosteriorMdl XF);图;情节(日期、DataTable.GNPR);持有在plot(date ((end - fhs + 1):end),yF) h = gca;hp =补丁([日期(结束- fhs + 1)日期(结束)日期(结束)日期(结束)日期(结束- fhs + 1)],...h.YLim ([1, 1、2、2]), [0.8 0.8 0.8]);uistack(惠普、“底”);传奇(“预测地平线”,“真正的GNPR”,“预测GNPR”,“位置”,“西北”)标题("实际国民生产总值:1909 - 1970 ");ylabel ('rGNP');xlabel('年');持有从
yF
是与未来预测数据相对应的未来实际国民生产总值的10乘1向量。
估计预测均方根误差(RMSE)。
frmse = sqrt(均值((yF - yFT).^2))
frmse = 4.5935
预测RMSE是预测准确度的一个相对度量。具体地说,您可以使用不同的假设来估计几个模型。预测RMSE最低的模型是被比较模型中表现最好的模型。
当您使用ssv执行贝叶斯回归时,最佳实践是优化超参数。一种方法是在超参数值的网格上估计预测RMSE,并选择最小化预测RMSE的值。
MathWorks, Inc.版权所有
一个贝叶斯线性回归模型将参数β和σ2在多元线性回归(MLR)模型中ÿŤ=XŤβ+εŤ为随机变量。
对于倍Ť= 1,…,Ť:
ÿŤ是观察到的响应。
XŤ是一个1 - (p的观测值的行向量p预测因子。为了适应模型截距,X1Ť= 1Ť。
β是(p的各列所对应的回归系数的列向量XŤ。
εŤ是零和冠状病毒平均随机干扰(ε)=σ2一世Ť×Ť,而ε是一个Ť包含所有扰动的-乘-1向量。这些假设意味着数据的可能性是
ϕ(ÿŤ;XŤβ,σ2)是具有均值的高斯概率密度XŤβ和方差σ2评估在ÿŤ;。
在考虑数据之前,您施加a联合先验分布假设(β,σ2)。在贝叶斯分析中,通过使用从数据的可能性中获得的参数信息来更新参数的分布。结果是联合后验分布的(β,σ2)或条件后验分布的参数。
随机搜索变量选择(SSVS)是一种用于贝叶斯线性回归的预测变量选择方法,它在潜在模型的空间中搜索后验概率高的模型,并对搜索完成后找到的模型进行平均。
SSVS假设每个回归系数的先验分布为两个高斯分布的混合,且的先验分布为σ2逆和形状有关吗一个和规模乙。让γ= {γ1、……γķ做一个潜在的、随机的人政权指示器对于回归系数β,地点:
ķ为模型中的系数个数(拦截
+NumPredictors
)。γķ= 1所表示βķ|σ2,γķ是否为均值为0,方差为0的高斯分布C1。
γķ= 0表示预测器为高斯分布,均值为0,方差为0C2。
的分布由概率质量函数决定γ的样本空间γ由2组成ķ元素。
更具体地说,鉴于γķ和σ2,βķ=γķC1ž+ (1 -γķ)C2ž,地点:
ž为标准正态随机变量。
共轭模型(mixconjugateblm
),CĴ=σ2VĴ,Ĵ= 1,2。
对于半jugate模型(mixsemiconjugateblm
),CĴ=VĴ。
C1相对较大,这意味着相应的预测因子更可能出现在模型中。C2相对较小,这意味着相应的预测因子不太可能出现在模型中,因为分布在0附近比较密集。
在此框架下,如果存在的电位为ķ一个模型的系数,那么空间是2ķ用于搜索的模型。因为计算这两个的后验概率ķ模型的计算成本很高,ssv使用MCMC进行采样γ= {γ1、……γķ,并估计相应模型的后验概率。该算法选择的模型后验概率往往较高。该算法构成的估计后验分布β和σ2通过计算采样模型的加权平均值。该算法对采样频率较高的模型赋予了较大的权重。
半混合模型由此产生的后验分布在分析上是难以处理的。有关后验分布的详细信息,请参见易于分析后验。
该bayeslm
函数可以为贝叶斯线性回归创建任何支持的先验模型对金宝app象。
[1]乔治,E. I.和R. E.麦卡洛克。"通过吉布斯抽样进行变量选择"美国统计协会杂志。第88卷,第423号,1993年,第881-889页。
[2]库普,G.,D.J.普瓦里埃,和J. L.托拜厄斯。贝叶斯计量经济学方法。纽约,纽约:剑桥大学出版社,2007年。
你点击了一个链接,对应于这个MATLAB命令:
在MATLAB命令窗口中输入命令,运行该命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择最佳的网站性能的中国网站(在中国或英文)。其他MathWorks的国家网站都没有从您的位置访问进行了优化。