主要内容

customblm

贝叶斯线性回归模型与自定义联合先验分布

描述

贝叶斯线性回归模型对象customblm包含一个日志的pdf(联合先验分布的β,σ2)。日志pdf是一个自定义函数,您申报的东西。

数据可能是 t = 1 T ϕ ( y t ; x t β , σ 2 ) , 在哪里ϕ(yt;xtβ,σ2)是高斯概率密度评估yt与的意思xtβ和方差σ2。MATLAB®将先验分布函数作为如果它是未知的。因此,由此产生的后验分布不易于分析。估计或从后验分布模拟,用MATLAB实现了片取样器。

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

创建

描述

例子

PriorMdl= customblm (NumPredictors”,LogPDF”,LogPDF)创建一个贝叶斯线性回归模型对象(PriorMdl)组成的NumPredictors预测和拦截,并设置NumPredictors财产。LogPDF是一个函数代表联合先验分布的日志(β,σ2)。PriorMdl是一个模板,它定义了维度的先验分布和β

例子

PriorMdl= customblm (NumPredictors”,LogPDF“LogPDF,名称,值)属性(除了NumPredictors使用参数名称-值对)。在报价附上每个属性的名字。例如,customblm (2 ' LogPDF @logprior“拦截”,假)指定代表联合之前的日志的功能密度(β,σ2),并指定两个回归系数的回归模型,但没有拦截。

属性

全部展开

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

PriorMdl。拦截=假;

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

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

当指定NumPredictors,排除任何截距项的值。

在创建一个模型,如果你改变的价值NumPredictors使用点符号VarNames恢复为默认值。

数据类型:

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

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

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

例子:“拦截”,假的

数据类型:逻辑

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

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

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

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

日志的联合概率密度函数(β,σ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

对象的功能

估计 估计贝叶斯线性回归模型参数的后验分布
模拟 模拟回归系数和扰动贝叶斯线性回归模型的方差
预测 贝叶斯线性回归模型的预测的反应
情节 可视化之前和贝叶斯线性回归模型参数的后验密度
总结 分布汇总统计标准的贝叶斯线性回归模型

例子

全部折叠

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

$ $ \ texttt {GNPR} _t = \ beta_0 + \ beta_1 \ texttt {IPI} _t + \ beta_2 \ texttt {E} _t + \ beta_3 \ texttt {WR} _t + \ varepsilon_t。$ $

对所有元新台币时间点,\ varepsilon_t美元是一系列的独立和0的均值和方差高斯干扰吗\σ^ 2美元。假设这些先验分布:

  • 美元\ beta_j \绿色\σ^ 2美元是四维t分布和50个自由度为每个组件和相关矩阵的单位矩阵。此外,分布集中左${\[{\开始{数组}{* {20}{c}}{- 25} & # 38; 4 & # 38; 0 & # 38; 3结束\{数组}}\右]^ \ '}$和每个组件是由相应的扩展元素的向量左${\[{\开始{数组}{* {20}{c}}{1} & # 38; 1 & # 38; 1 & # 38;结束1 \{数组}}\右]^ \ '}$

  • 美元\σ^ 2 \ sim搞笑(3,1)美元

bayeslm对待这些假设和相应数据好像可能性后分析棘手。

声明一个MATLAB®函数:

  • 接受的价值观β\美元\σ^ 2美元在一个列向量,并接受hyperparameters的值

  • 之前返回的值的联合分布,$ \π\离开(\β\σ^ 2 \右)美元给定的值β\美元\σ^ 2美元

函数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”};

估计边际的后验分布 β σ 2 。指定宽度接近后的切片采样器参数的标准偏差假设扩散先验模型。减少的序列相关性通过指定一个稀释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模型对象存储的后验分布 β σ 2 考虑到数据。估计显示一个总结边缘后验分布的命令窗口。行总结对应回归系数和扰动变化,和列后验分布的特点。特点包括:

  • CI95,其中包含参数的贝叶斯equitailed 95%可信区间。例如,后验概率的回归系数或者说是0.95在[1.939,3.222]。

  • 积极的,其中包含参数的后验概率大于0。例如,截距大于0的概率是0。

估计后特征来自从后验分布,而MATLAB®存储矩阵的性质BetaDrawsSigma2Draws

获得监控混合和收敛的样本,构造跟踪情节。在BetaDraws属性,对应列和行参数。

图;j = 1:4次要情节(2,2,j)情节(PosteriorMdl.BetaDraws (j,:))标题(sprintf (“% s的跟踪情节”,PosteriorMdl.VarNames {j}));结束

图包含4轴对象。坐标轴对象1标题跟踪拦截的情节包含一个类型的对象。坐标轴对象2标题跟踪情节他们将包含一个类型的对象。坐标轴对象3标题跟踪情节的E包含一个类型的对象。坐标轴对象4标题跟踪情节福包含一个类型的对象。

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

图包含一个坐标轴对象。标题跟踪图的坐标轴对象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”};

估计的条件后验分布 β 考虑到数据和 σ 2 = 2 ,然后返回评估汇总表访问估计。指定宽度接近后的切片采样器参数的标准偏差假设扩散先验模型。减少的序列相关性通过指定一个稀释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 是固定在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”);包含(“年”);持有

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

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

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

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

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

更多关于

全部展开

选择

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

介绍了R2017a