empiricalblm

贝叶斯线性回归模型与来自之前或后验分布的样本

描述

贝叶斯线性回归模型宾语empiricalblm含有的先验分布样品βσ2,MATLAB®用于描述前后分布。

数据可能性是 Π Ť = 1 Ť ϕ ÿ Ť ; X Ť β σ 2 哪里ϕÿŤ;XŤβσ2)的高斯概率密度评估在ÿŤ均值XŤβ和方差σ2。由于先验分布函数的形式是未知的,因此所得到的后验分布是不可分析处理的。因此,为了从后验分布估计或模拟,MATLAB实现了采样重要性重采样

可以创建贝叶斯线性回归模型直接用经验事先bayeslmempiricalblm。但是,对于经验先验,估计所述后验分布要求现有酷似后部。因此,经验模型更适合于更新后验分布使用蒙特卡罗采样(例如,semiconjugate和定制现有型号)给定的新的数据进行估计。

创建

对象返回的经验模型估计

对于semiconjugate,经验,或自定义之前的机型,估计利用蒙特卡罗抽样估计后验分布。也就是说,估计通过从后验分布中提取大量的样本来表征后验分布。估计存储在BetaDrawsSigma2Draws返回的贝叶斯线性回归模型对象的属性。因此,当您估计semiconjugateblmempiricalblmcustomblmlassoblmmixconjugateblm,mixconjugateblm模型对象,估计返回一个empiricalblm模型对象。

直接的实证模型创建

如果你想更新一个估计后验分布使用新的数据,你有从后验分布βσ2,那么你就可以使用创建的实证模型empiricalblm

句法

描述

PriorMdl= empiricalblm (NumPredictors”,BetaDraws'BetaDraws'Sigma2Draws”,Sigma2Draws)创建贝叶斯线性回归模型对象(PriorMdl) 由...组成的NumPredictors预测和截距,和套NumPredictors财产。的先验分布的随机样本βσ2BetaDrawsSigma2Draws分别表征该先验分布。PriorMdl是一个定义先验分布和维数的模板吗β

PriorMdl= empiricalblm (NumPredictors”,BetaDraws'BetaDraws'Sigma2Draws”,Sigma2Draws,名称,值性能(除了NumPredictors)使用名称-值对参数。将每个属性名括在引号中。例如,empiricalblm(2,”BetaDraws'BetaDraws'Sigma2Draws”,Sigma2Draws“拦截”,假)指定从的先验分布的随机样本βσ2并指定一个有2个回归系数但没有截距的回归模型。

属性

全部展开

当您使用的名称 - 值对参数语法创建模型对象,你可以设置可写的属性值,或者在您通过使用点符号模型对象。例如,指定存在没有模型拦截PriorMdl,一个包含三个模型系数的贝叶斯线性回归模型,进入

PriorMdl。拦截=假;

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

NumPredictors必须与预测数据中的列数相同,预测数据是在模型估计或模拟期间指定的。

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

创建模型后,如果您更改的值为NumPredictors使用点符号,然后VarNames回复到它的默认值。

数据类型:

标志用于包括回归模型截距,指定为在此表中的值。

价值 描述
从回归模型中排除截距。因此,β是一个p维向量,其中p是的价值NumPredictors
真正的 在回归模型中包含一个截距。因此,β是(p+ 1)维向量。此规范导致Ť在估计和模拟过程中,需要将1乘1的向量预先写入预测数据。

如果包括那些在截距项的预测数据的一列,然后设置拦截

例子:“拦截”,假的

数据类型:合乎逻辑

显示的预测变量名,指定为字符串向量或字符向量的单元向量。VarNames必须包含NumPredictors元素。VarNames (Ĵ变量的名称在列中吗Ĵ在估计、模拟或预测期间指定的预测器数据集。

默认值是{ 'β(1)','测试版(2),...,β(p)},在那里p是的价值NumPredictors

例子:'VarNames',[ “UnemploymentRate”;“CPI”]

数据类型:|细胞|字符

从的先验分布随机样品β,指定为(拦截+NumPredictors)———NumDraws数字矩阵。行对应于回归系数;第一行对应于截距,和随后的行对应于列在预测数据。列对应于连续从先验分布绘制。

BetaDrawsSigmaDraws必须具有相同数量的列。

NumDraws应该相当大。

数据类型:

从的先验分布随机样品σ2,指定为1逐NumDraws数字矩阵。列对应于连续从先验分布绘制。

BetaDrawsSigma2Draws必须具有相同数量的列。

NumDraws应该相当大。

数据类型:

对象函数

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

例子

全部收缩

考虑预测美国实际国民生产总值的多元线性回归模型(GNPR)采用工业生产指数(IPI),总就业(Ë)和实际工资(或者说是)。

GNPR Ť = β 0 + β 1 IPI Ť + β 2 Ë Ť + β 3 或者说是 Ť + ε Ť

对所有 Ť 时间点, ε Ť 是具有0和方差的平均一系列独立的高斯干扰的 σ 2

假定先验分布是:

  • β | σ 2 ñ 4 中号 V 中号 是的手段一个4×1向量,以及 V 是一个4×4的正定协方差矩阵。

  • σ 2 一世 G 一个 一个 是一个逆伽马分布的形状和规模,分别。

这些假设和数据似然性暗示的正逆伽马semiconjugate模型。即,条件是后验共轭现有相对于所述数据的可能性,但边缘后验是解析难治。

建立了线性回归参数的正-反-半jugate先验模型。指定谓词的数量p

P = 3;PriorMdl = bayeslm(P,'ModelType''semiconjugate'
PriorMdl = jugateblm with properties: NumPredictors: 3 Intercept: 1 varname: {4x1 cell} Mu: [4x1 double] V: [4x4 double] A: 3b:1 |意味着性病CI95积极分配- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -拦截| 0 100 [-195.996,195.996]0.500 N(0.00、100.00 ^ 2)β(1)| 0 100 [-195.996,195.996]0.500 N(0.00、100.00 ^ 2)β(2)| 0 100 [-195.996,195.996]0.500 N(0.00、100.00 ^ 2)β(3)| 0 100 [-195.996,195.996]0.500 N (0.00、100.00 ^ 2) Sigma2 | 0.5000 - 0.5000[0.138, 1.616] 1.000搞笑(3.00,1)

Mdl是一个semiconjugateblm贝叶斯线性回归模型对象表示回归系数和扰动方差的先验分布。在命令窗口,bayeslm显示先验分布的总结。

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

加载Data_NelsonPlosserVarNames = {“他们”;“E”;“福”};X = DataTable {: VarNames};y = DataTable {:,'GNPR'};

估计的边际后验分布 β σ 2

RNG(1);%的再现性PosteriorMdl =估计(PriorMdl,X,Y);
方法:吉布斯抽样数量与10000年吸引的观察:62年的预测数量:4 |意味着性病CI95积极分配- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -拦截| -23.9922 - 9.0520[-41.734,-6.198]0.005经验β(1)| 4.3929 - 0.1458[4.101,4.678]1.000经验β(2)| 0.0011 - 0.0003[0.000,0.002]0.999经验β(3)| 2.4711 - 0.3576[1.762,3.178]1.000经验Sigma2 | 46.7474 - 8.4550[33.099, 66.126] 1.000经验

PosteriorMdl是一个empiricalblm模型对象存储从后验分布绘制 β σ 2 考虑到数据。估计显示边缘后验分布到命令窗口的摘要。摘要对应于回归系数和干扰方差,和列于后验分布的特征的行。该特性包括:

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

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

在这种情况下,边缘后部是难以分析的。因此,估计使用Gibbs抽样,以从后吸取并估计后的特性。

考虑线性回归模型建立实证模型前

建立了线性回归参数的正-反-半jugate先验模型。指定谓词的数量p以及回归系数的名称。

P = 3;PriorMdl = bayeslm(P,'ModelType''semiconjugate''VarNames',(“他们”“E”“福”]);

加载纳尔逊 - 普洛瑟数据集。通过保留该系列中的最后五个时期分区数据。

加载Data_NelsonPlosserX0 = DataTable{1:(end - 5),PriorMdl.VarNames(2:end)};y0 = DataTable{1:(end - 5),'GNPR'};X1 = {数据表(结束 -  4):端,PriorMdl.VarNames(2:结束)};Y1 =数据表{(端 -  4):端,'GNPR'};

估计的边际后验分布 β σ 2

RNG(1);%的再现性PosteriorMdl0 =估计(PriorMdl,X0,Y0);
方法:用吉布斯抽样10000绘制的观测总数57预测数:4 |均值标准CI95正分布---------------------------------------------------------------------------拦截|-34.3887 10.5218 [-55.350,-13.615] 0.001实证IPI |3.9076 0.2786 [3.356,4.459] 1.000实证E |0.0011 0.0003 [0.000,0.002] 0.999实证WR |3.2146 0.4967 [2.228,4.196] 1.000实证西格玛-2 |45.3098 8.5597 [31.620,64.972] 1.000实证

PosteriorMdl0是一个empiricalblm存储吉布斯采样模型对象从后验分布绘制。

根据最近5个周期的数据更新后验分布,将观测值和后验分布传递给估计

PosteriorMdl1 =估计(PosteriorMdl0 (X1, y1);
方法:重要抽样/ 10000重采样得出的意见数量:5号码预测的:4 |均值标准CI95正分布-------------------------------------------------------------------------拦截|-24.3152 9.3408 [-41.163,-5.301] 0.008实证IPI |4.3893 0.1440 [4.107,4.658] 1.000实证E |0.0011 0.0004 [0.000,0.002] 0.998实证WR |2.4763 0.3694 [1.630,3.170] 1.000实证西格玛-2 |46.5211 8.2913 [33.646,65.402] 1.000实证

更新基于图的后验分布,估计使用的是采样重要性重采样。

考虑线性回归模型估计边际后验分布

创建用于回归系数和干扰方差的现有模型,然后估计边缘后验分布。

P = 3;PriorMdl = bayeslm(P,'ModelType''semiconjugate''VarNames',(“他们”“E”“福”]);加载Data_NelsonPlosserX = {数据表:,PriorMdl.VarNames(2:结束)};y = DataTable {:,'GNPR'};RNG(1);%的再现性PosteriorMdl =估计(PriorMdl,X,Y);
方法:用吉布斯抽样10000绘制的观测总数62号码预测的:4 |均值标准CI95正分布-------------------------------------------------------------------------拦截|-23.9922 9.0520 [-41.734,-6.198] 0.005实证IPI |4.3929 0.1458 [4.101,4.678] 1.000实证E |0.0011 0.0003 [0.000,0.002] 0.999实证WR |2.4711 0.3576 [1.762,3.178] 1.000实证西格玛-2 |46.7474 8.4550 [33.099,66.126] 1.000实证

估计后验分布汇总统计 β 通过使用后验模型中存储的后验分布的提取。

estBeta =平均(PosteriorMdl.BetaDraws,2);EstBetaCov = COV(Pos​​teriorMdl.BetaDraws');

假设实际工资系数低于2.5,则制定政策。虽然后验分布或者说是是已知的,这样你就可以直接计算概率,你可以利用蒙特卡罗模拟,而不是估计的概率。

1E6样本来自的边际后验分布 β

NumDraws = 1E6;RNG(1);BetaSim =模拟(PosteriorMdl,“NumDraws”,NumDraws);

BetaSim是一个4×-1E6包含图纸的矩阵。行对应回归系数,列对应连续的绘图。

将与实际工资系数相对应的图分离出来,然后确定哪些图小于2.5。

ISWR = PosteriorMdl.VarNames ==“福”;wrSim = BetaSim (isWR:);isWRLT2p5 = wrSim < 2.5;

求回归系数的边际后验概率或者说是通过计算小于2.5的抽签比例得到小于2.5。

probWRLT2p5 =意味着(isWRLT2p5)
probWRLT2p5 = 0.5283

实际工资系数小于2.5的后验概率约为0.53

MathWorks, Inc.版权所有

考虑线性回归模型估计边际后验分布

创建用于回归系数和干扰方差的现有模型,然后估计边缘后验分布。从估计抱出数据的最后10个周期,所以你可以用它们来预测实际国民生产总值。打开判别显示关闭。

P = 3;PriorMdl = bayeslm(P,'ModelType''semiconjugate''VarNames',(“他们”“E”“福”]);加载Data_NelsonPlosserFHS = 10;%预测地平线大小X = {数据表1:(结束 -  FHS),PriorMdl.VarNames(2:结束)};Y = {数据表1:(结束 -  FHS),'GNPR'};XF =数据表{(端 -  FHS + 1):端,PriorMdl.VarNames(2:结束)};今后%的预测数据yFT = DataTable{(end - fhs + 1):end,'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(HP,'底部');传奇(“预测地平线”“真GNPR”“预测GNPR”“位置”“西北”)标题("实际国民生产总值:1909 - 1970 ");ylabel('rGNP');xlabel('年');持有

yF为未来预测数据对应的实际GNP未来值的10乘1向量。

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

frmse = sqrt(mean((yF - yFT).^2))
frmse = 25.1938

预测RMSE是预测精度的相对量度。具体地说,您使用不同的假设来估计几个模型。预测RMSE最低的模型是被比较模型中表现最好的模型。

更多关于

全部展开

算法

  • 实施后采样重要性重采样从后验分布中取样,估计模拟,预测计算有效的样本大小ESS),即产生合理的后验统计和推论所需的样本数目。它的公式是

    Ë 小号 小号 = 1 Σ Ĵ w ^ Ĵ 2

    如果ESS<0.01 * NumDraws,然后MATLAB抛出警告。该警告意味着,给定先验分布的样本,建议分布的样本太小,无法产生良好的后验统计和推论。

  • 如果有效样本量太小,则:

    • 增加从先前分布中抽取的样本的大小。

    • 调整先验分布超参数,然后对其进行二次采样。

  • 指定BetaDrawsSigma2Draws作为样本信息先验分布。也就是说,如果该提案平局来自近持平分布,则算法可能是低效的。

备择方案

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

介绍了在R2017a