customblm
贝叶斯线性回归模型与自定义联合先验分布
描述
的贝叶斯线性回归模型对象customblm
包含一个日志的pdf(联合先验分布的β,σ2)。日志pdf是一个自定义函数,您申报的东西。
数据可能是 在哪里ϕ(yt;xtβ,σ2)是高斯概率密度评估yt与的意思xtβ和方差σ2。MATLAB®将先验分布函数作为如果它是未知的。因此,由此产生的后验分布不易于分析。估计或从后验分布模拟,用MATLAB实现了片取样器。
一般来说,当你创建一个贝叶斯线性回归模型对象,它指定了联合线性回归模型的先验分布和特点。即模型对象是一个模板供进一步使用。具体地说,将数据合并到后验分布的模型分析,通过适当的模型对象和数据目标函数。
创建
语法
描述
创建一个贝叶斯线性回归模型对象(PriorMdl
= customblm (NumPredictors
”,LogPDF
”,LogPDF)PriorMdl
)组成的NumPredictors
预测和拦截,并设置NumPredictors
财产。LogPDF
是一个函数代表联合先验分布的日志(β,σ2)。PriorMdl
是一个模板,它定义了维度的先验分布和β。
属性
你可以设置可写属性值创建模型对象时通过使用名称-值对参数语法,或在您创建模型对象通过使用点符号。例如,排除的拦截模型,输入
PriorMdl。拦截=假;
NumPredictors
- - - - - -数量的预测变量
非负整数
数量的预测变量的贝叶斯多元线性回归模型,指定为一个非负整数。
NumPredictors
必须一样的列数你的预测数据,在模型估计或您指定模拟。
当指定NumPredictors
,排除任何截距项的值。
在创建一个模型,如果你改变的价值NumPredictors
使用点符号VarNames
恢复为默认值。
数据类型:双
拦截
- - - - - -为包括回归模型拦截
真正的
(默认)|假
为包括回归模型拦截,这表中指定为一个值。
价值 | 描述 |
---|---|
假 |
排除回归模型的截距。因此,β是一个p 维向量,p 的值是NumPredictors 。 |
真正的 |
包括一个拦截的回归模型。因此,β是(p + 1)维向量。这个规范引起T1向量的前缀在估计和仿真预测数据。 |
如果包含一个列的预测数据的截取,然后设置拦截
来假
。
例子:“拦截”,假的
数据类型:逻辑
VarNames
- - - - - -预测变量的名字
字符串向量|细胞特征向量的向量
预测变量名称显示,指定为字符串向量或细胞特征向量的向量。VarNames
必须包含NumPredictors
元素。VarNames (
变量的列的名称吗j
)j
您指定的预测数据集,在估计,模拟或预测。
默认值是β{β(1),(2),…,β(
,在那里p
)}p
的值是NumPredictors
。
例子:“VarNames”,(“失业率会”;“CPI”)
数据类型:字符串
|细胞
|字符
LogPDF
- - - - - -日志的联合概率密度函数(β,σ2)
函数处理
日志的联合概率密度函数(β,σ2),指定为一个函数处理形式@fcnName
,在那里fcnName
是函数名。
假设logprior
的名字是MATLAB函数定义的共同先验分布(β,σ2)。然后,logprior
一定是这种形式。
函数(logpdf,glpdf]=logprior(参数个数)…结束
logpdf
是一个数字标量代表日志的联合概率密度(β,σ2)。glpdf
是一个(拦截
+NumPredictors
+ 1)1数字代表的梯度向量logpdf
。元素对应的元素参数个数
。glpdf
是一个可选的输出参数,只有哈密顿蒙特卡罗采样器(看到了吗hmcSampler
)适用于它。如果你知道一些参数解析偏导数,而不是其他人,然后集合的元素glpdf
对应于未知的偏导数南
。MATLAB计算数值梯度失踪的偏导数,这很方便,但降低抽样。参数个数
是一个(拦截
+NumPredictors
+ 1)1数值向量。第一个拦截
+NumPredictors
元素必须对应的值β,最后一个元素必须对应的值σ2。的第一个元素β是拦截,如果一个人的存在。所有其他元素对应于预测变量的预测数据,期间您指定估计,模拟或预测。
例子:LogPDF, @logprior
对象的功能
例子
创建自定义多元t之前模型系数
考虑的多元线性回归模型预测美国实际国民生产总值(GNPR
)使用工业生产指数的线性组合新闻学会
)、就业总人数(E
),实际工资(或者说是
)。
对所有时间点,是一系列的独立和0的均值和方差高斯干扰吗。假设这些先验分布:
是四维t分布和50个自由度为每个组件和相关矩阵的单位矩阵。此外,分布集中和每个组件是由相应的扩展元素的向量。
。
bayeslm
对待这些假设和相应数据好像可能性后分析棘手。
声明一个MATLAB®函数:
接受的价值观和在一个列向量,并接受hyperparameters的值
之前返回的值的联合分布,给定的值和
函数logPDF = priorMVTIG (params, ct,圣,景深,C, a, b)% priorMVTIG日志多元t乘以逆伽马密度% priorMVTIG通过params (1: end-1)的多元t密度%为每个组件函数与景深的自由度和积极的%的相关矩阵c priorMVTIG返回产品的日志%计算密度。%%参数:参数值的密度进行计算,一个% m×1数值向量。%% ct:多元t分布组件中心,一个(m - 1) 1%数值向量。元素对应于第一个m - 1的元素%的参数。%%圣:多元t分布组件尺度,(m - 1) 1%数字(m - 1) 1数值向量。对应的元素%的第一个参数的m - 1元素。%%景深:多元t分布的自由度%数值标量或(m - 1) 1数值向量。priorMVTIG扩展%标量,这样景深=景深* 1 (m - 1, 1)。景深的元素%的对应元素params (1: end-1)。%% C:多元t分布的相关矩阵% (m - 1)———(m - 1)对称正定矩阵。行和%的列对应元素params (1: end-1)。%%:逆伽马形状参数,一个积极的数字标量。%% b:逆伽马尺度参数,一个积极的标量。%β= params (1: (end-1));sigma2 = params(结束);tVal =(β- ct)。/圣;mvtDensity = mvtpdf (tVal C景深);igDensity = sigma2 ^ (1) * exp (1 / (sigma2 * b)) /(γ(a) * b ^);logPDF =日志(mvtDensity * igDensity);结束
创建一个匿名函数,操作priorMVTIG
,但只接受参数值,并持有hyperparameter值固定的。
景深= 50;C =眼(4);ct = [-25;4;0;3);圣= 1 (4,1);= 3;b = 1;logPDF = @ (params) priorMVTIG (params, ct,圣,景深,C, a, b);
创建一个定制的联合线性回归参数的先验模型。指定数量的预测p
。同时,指定函数处理priorMVTIG
和变量名。
p = 3;PriorMdl = bayeslm (p,“ModelType”,“自定义”,“LogPDF”logPDF,…“VarNames”,(“他们”“E”“福”])
PriorMdl = customblm属性:NumPredictors: 3拦截:1 VarNames: {4 x1细胞}LogPDF: @ (params) priorMVTIG (params, ct,圣,景深,C, a, b)先验函数定义的:@ (params) priorMVTIG (params, ct,圣,景深,C, a, b)
PriorMdl
是一个customblm
贝叶斯线性回归模型对象代表回归系数的先验分布和扰动方差。在这种情况下,bayeslm
不显示之前的总结分布在命令行。
估计边缘后验分布
考虑线性回归模型创建自定义多元t之前模型系数。
创建一个匿名函数,操作priorMVTIG
,但只接受参数值并持有hyperparameter值固定的值。
景深= 50;C =眼(4);ct = [-25;4;0;3);圣= 1 (4,1);= 3;b = 1;logPDF = @ (params) priorMVTIG (params, ct,圣,景深,C, a, b);
创建一个定制的联合线性回归参数的先验模型。指定数量的预测p
。同时,指定函数处理priorMVTIG
和变量名。
p = 3;PriorMdl = bayeslm (p,“ModelType”,“自定义”,“LogPDF”logPDF,…“VarNames”,(“他们”“E”“福”])
PriorMdl = customblm属性:NumPredictors: 3拦截:1 VarNames: {4 x1细胞}LogPDF: @ (params) priorMVTIG (params, ct,圣,景深,C, a, b)先验函数定义的:@ (params) priorMVTIG (params, ct,圣,景深,C, a, b)
加载Nelson-Plosser数据集。为响应和预测系列创建变量。
负载Data_NelsonPlosserX = DataTable {: PriorMdl.VarNames(2:结束)};y = DataTable {:,“GNPR”};
估计边际的后验分布 和 。指定宽度接近后的切片采样器参数的标准偏差假设扩散先验模型。减少的序列相关性通过指定一个稀释10倍,并减少有效违约数量的10倍。
宽度= (20,0.5,0.01,1,20);瘦= 10;numDraws = 1 e5 /薄;rng (1)%的再现性PosteriorMdl =估计(PriorMdl, X, y,“宽度”、宽度、“薄”薄的,…“NumDraws”,numDraws);
方法:与10000年获得了数量的观察:62年的预测数量:4 |意味着性病CI95积极分配- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -拦截| -25.0069 - 0.9919[-26.990,-23.065]0.000经验IPI | 4.3544 - 0.1083[4.143, 4.562] 1.000经验E | 0.0011 - 0.0002[0.001, 0.001] 1.000经验或者说是| 2.5613 - 0.3293[1.939,3.222]1.000经验Sigma2 | 47.0593 - 8.7570[32.690, 67.115] 1.000经验
PosteriorMdl
是一个empiricalblm
模型对象存储的后验分布
和
考虑到数据。估计
显示一个总结边缘后验分布的命令窗口。行总结对应回归系数和扰动变化,和列后验分布的特点。特点包括:
CI95
,其中包含参数的贝叶斯equitailed 95%可信区间。例如,后验概率的回归系数或者说是
0.95在[1.939,3.222]。积极的
,其中包含参数的后验概率大于0。例如,截距大于0的概率是0。
估计
后特征来自从后验分布,而MATLAB®存储矩阵的性质BetaDraws
和Sigma2Draws
。
获得监控混合和收敛的样本,构造跟踪情节。在BetaDraws
属性,对应列和行参数。
图;为j = 1:4次要情节(2,2,j)情节(PosteriorMdl.BetaDraws (j,:))标题(sprintf (“% s的跟踪情节”,PosteriorMdl.VarNames {j}));结束
图;情节(PosteriorMdl.Sigma2Draws)标题(“Sigma2跟踪情节”);
跟踪情节表明足够的混合和收敛,也没有消除瞬态的影响。
估计条件后验分布
考虑线性回归模型创建自定义多元t之前模型系数。
创建一个匿名函数,操作priorMVTIG
,但只接受参数值并持有hyperparameter固定值。
景深= 50;C =眼(4);ct = [-25;4;0;3);圣= 1 (4,1);= 3;b = 1;logPDF = @ (params) priorMVTIG (params, ct,圣,景深,C, a, b);
创建一个定制的联合线性回归参数的先验模型。指定数量的预测p
。同时,指定函数处理priorMVTIG
和变量名。
p = 3;PriorMdl = bayeslm (p,“ModelType”,“自定义”,“LogPDF”logPDF,…“VarNames”,(“他们”“E”“福”])
PriorMdl = customblm属性:NumPredictors: 3拦截:1 VarNames: {4 x1细胞}LogPDF: @ (params) priorMVTIG (params, ct,圣,景深,C, a, b)先验函数定义的:@ (params) priorMVTIG (params, ct,圣,景深,C, a, b)
加载Nelson-Plosser数据集。为响应和预测系列创建变量。
负载Data_NelsonPlosserX = DataTable {: PriorMdl.VarNames(2:结束)};y = DataTable {:,“GNPR”};
估计的条件后验分布 考虑到数据和 ,然后返回评估汇总表访问估计。指定宽度接近后的切片采样器参数的标准偏差假设扩散先验模型。减少的序列相关性通过指定一个稀释10倍,并减少有效违约数量的10倍。
宽度= (20,0.5,0.01,1);瘦= 10;numDraws = 1 e5 /薄;rng (1)%的再现性[Mdl,总结]=估计(PriorMdl, X, y,“Sigma2”2,…“宽度”、宽度、“薄”薄的,“NumDraws”,numDraws);
方法:与10000年获得了有条件的变量:Sigma2固定在2的观察:62年的预测数量:4 |意味着性病CI95积极分配- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -拦截| -24.7820 - 0.8767[-26.483,-23.054]0.000经验IPI | 4.3825 - 0.0254[4.332, 4.431] 1.000经验E | 0.0011 - 0.0000[0.001, 0.001] 1.000经验或者说是| 2.4752 - 0.0724[2.337,2.618]1.000经验Sigma2 | 2 0[2.000, 2.000] 1.000经验
估计
显示的条件后验分布的摘要
。因为
是固定在2估计,推断它是微不足道的。
提取的条件后验均值向量和协方差矩阵 从评估汇总表。
condPostMeanBeta =总结。结束意味着(1:(- 1))
condPostMeanBeta =4×1-24.7820 4.3825 0.0011 2.4752
CondPostCovBeta =总结。协方差(1:(- 1),1:结束(- 1))
CondPostCovBeta =4×40.7686 0.0084 -0.0000 0.0019 0.0084 0.0006 0.0000 -0.0015 -0.0000 0.0000 0.0000 -0.0000 0.0019 -0.0015 -0.0000 0.0052
显示Mdl
。
Mdl
Mdl = customblm属性:NumPredictors: 3拦截:1 VarNames: {4 x1细胞}LogPDF: @ (params) priorMVTIG (params, ct,圣,景深,C, a, b)先验函数定义的:@ (params) priorMVTIG (params, ct,圣,景深,C, a, b)
因为估计
计算条件后验分布,它返回原来的模型之前,不后,在第一个位置的输出参数列表。同时,估计
不返回获得样本。因此,监测获得收敛的示例中,使用模拟
而不是和指定相同的随机数种子。
使用蒙特卡罗模拟法估计后验概率
考虑线性回归模型估计边缘后验分布。
创建一个模型的回归系数和扰动变化之前,然后估计边缘后验分布。关掉估计显示。
景深= 50;C =眼(4);ct = [-25;4;0;3);圣= 1 (4,1);= 3;b = 1;logPDF = @ (params) priorMVTIG (params, ct,圣,景深,C, a, b); p = 3; PriorMdl = bayeslm(p,“ModelType”,“自定义”,“LogPDF”logPDF,…“VarNames”,(“他们”“E”“福”]);负载Data_NelsonPlosserX = DataTable {: PriorMdl.VarNames(2:结束)};y = DataTable {:,“GNPR”};宽度= (20,0.5,0.01,1,20);瘦= 10;numDraws = 1 e5 /薄;rng (1)%的再现性PosteriorMdl =估计(PriorMdl, X, y,“宽度”、宽度、“薄”薄的,…“NumDraws”numDraws,“显示”、假);
估计后验分布汇总统计数据 通过使用了从后验分布存储模型。
estBeta =意味着(PosteriorMdl.BetaDraws, 2);EstBetaCov = x (PosteriorMdl.BetaDraws ');
假设如果实际工资系数(或者说是
)低于2.5,那么政策实施。尽管的后验分布或者说是
是已知的,您可以直接计算概率,您可以使用蒙特卡罗模拟估计的概率。
画1 e6
样本的边缘后验分布
。
NumDraws = 1 e6;BetaSim =模拟(PosteriorMdl,“NumDraws”,NumDraws);
BetaSim
是一个4×-1 e6
矩阵包含了。行对应的回归系数和列连续的吸引。
隔离了对应的系数或者说是
,然后确定哪些吸引小于2.5。
isWR = PosteriorMdl。VarNames = =“福”;wrSim = BetaSim (isWR:);isWRLT2p5 = wrSim < 2.5;
找到的回归系数的边缘后验概率或者说是
低于2.5通过计算的比例小于2.5的吸引。
probWRLT2p5 =意味着(isWRLT2p5)
probWRLT2p5 = 0.4430
的后验概率系数或者说是
小于2.5是什么0.4430
。
使用后预测分布预测的反应
考虑线性回归模型估计边缘后验分布。
创建一个模型的回归系数和扰动变化之前,然后估计边缘后验分布。坚持过去10期的数据估计,这样你可以使用它们来预测实际国民生产总值。关掉估计显示。
负载Data_NelsonPlosserVarNames = {“他们”;“E”;“福”};fhs = 10;%预测地平线大小X = DataTable{1:(结束- fhs), VarNames};y = DataTable{1:(结束- fhs),“GNPR”};XF = DataTable{(结束- fhs + 1):最终,VarNames};%未来的预测数据yFT = DataTable{(结束- fhs + 1):结束,“GNPR”};%未来真实的反应景深= 50;C =眼(4);ct = [-25;4;0;3);圣= 1 (4,1);= 3;b = 1;logPDF = @ (params) priorMVTIG (params, ct,圣,景深,C, a, b); p = 3; PriorMdl = bayeslm(p,“ModelType”,“自定义”,“LogPDF”logPDF,…“VarNames”,VarNames);宽度= (20,0.5,0.01,1,20);瘦= 10;numDraws = 1 e5 /薄;rng (1)%的再现性PosteriorMdl =估计(PriorMdl, X, y,“宽度”、宽度、“薄”薄的,…“NumDraws”numDraws,“显示”、假);
预测使用后反应预测分布和未来预测数据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”,“位置”,“西北”)标题(实际国民生产总值的);ylabel (“rGNP”);包含(“年”);持有从
yF
是一个10-by-1向量的值相对应的实际国民生产总值未来预测数据。
估计预测均方误差(RMSE)。
frmse =√意味着(yF - yFT) ^ 2))
frmse = 12.8148
预测均方根误差是一个相对程度的预测精度。具体地说,您估计几个使用不同的假设模型。最低的模型预测的RMSE是表现最好的模型相比较。
更多关于
贝叶斯线性回归模型
一个贝叶斯线性回归模型将参数β和σ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)或条件后验分布的参数。
选择
的bayeslm
函数可以创建任何支持先前对贝叶斯线性回归的模型对金宝app象。
另请参阅
对象
功能
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。