主要内容

lassoblm

套索正则化贝叶斯线性回归模型

描述

贝叶斯线性回归模型对象lassoblm指定回归系数和扰动方差的联合先验分布(βσ2)以执行贝叶斯套索回归[1].为j= 1,…,NumPredictors的条件先验分布βj|σ2拉普拉斯(双指数)分布是否具有均值为0和刻度σ2/λ,在那里λ是套索正则化或收缩参数。的先验分布σ2逆是有形状的吗一个和规模B

数据的可能性是 t 1 T ϕ y t x t β σ 2 在哪里ϕytxtβσ2)为点的高斯概率密度yt与的意思xtβ和方差σ2.由此产生的后验分布是不可分析处理的。关于后验分布的详细信息,请参见易于分析处理的后验

一般来说,当您创建一个贝叶斯线性回归模型对象时,它只指定了线性回归模型的联合先验分布和特征。也就是说,模型对象是用于进一步使用的模板。具体来说,为了将数据合并到模型中进行后验分布分析和特征选择,将模型对象和数据传递给适当的对象目标函数

创建

描述

例子

PriorMdl= lassoblm (NumPredictors创建一个贝叶斯线性回归模型对象(PriorMdl)由NumPredictors预测器和一个截距,并设置NumPredictors财产。的联合先验分布(βσ2)适用于实现贝叶斯套索回归[1]PriorMdl是定义先验分布并指定套索正则化参数值的模板吗λ的维数β

例子

PriorMdl= lassoblm (NumPredictors名称,值属性(除了NumPredictors)使用名称-值对参数。将每个属性名用引号括起来。例如,lassoblm(3“λ”0.5)的收缩。0.5对于三个系数(不是截距)

属性

全部展开

当您使用名称-值对参数语法创建模型对象时,或者在您使用点表示法创建模型对象之后,您可以设置可写的属性值。例如,将除截距外的所有系数的收缩设置为0.5,输入

PriorMdl。λ=0.5;

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

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

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

在创建模型之后,如果您更改了值NumPredictors使用点表示法,然后这些参数恢复为默认值:

  • 变量名称(VarNames

  • 收缩参数(λ

数据类型:

标记,用于包含回归模型截距,该截距在本表中指定为值。

价值 描述
从回归模型中排除一个截距。因此,β是一个p-维向量,其中p的值NumPredictors
真正的 在回归模型中包含一个截距。因此,β是a (p+ 1)-维向量。此规范导致T-by-1的向量作为预估和模拟时预估的预测器数据。

如果在预测器数据中包含一列的截距项,则设置拦截

例子:“拦截”,假的

数据类型:逻辑

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

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

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

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

所有回归系数的套索正则化参数,指定为正数值标量或(拦截+NumPredictors)-乘1的正数值向量。较大的值λ使相应的系数缩小到接近零。

假设X是一个T——- - - - - -NumPredictors预测器数据矩阵,在估计、模拟或预测过程中指定。

  • 如果λ是一个向量拦截真正的λ(1)是截距的收缩,λ(2)收缩是第一个预测因子的系数吗X (: 1)λ(3)收缩是第二个预测器的系数吗X (:, 2)、……Lambda(NumPredictors + 1)收缩是最后一个预测器的系数吗X (:, NumPredictors)

  • 如果λ是一个向量拦截λ(1)收缩是第一个预测因子的系数吗X (: 1)、……λ(NumPredictors)收缩是最后一个预测器的系数吗X (:, NumPredictors)

  • 如果你提供标量年代λ,则预测因子的所有系数X收缩年代

    • 如果拦截真正的时,截距收缩为0.01,lassoblm商店(0.01;* (NumPredictors, 1)]λ

    • 否则,lassoblm商店*的(NumPredictors, 1)λ

例子:“λ”6

数据类型:

逆先验的形状超参数σ2,指定为数值标量。

一个至少是-(截距+ NumPredictors)/2

B当保持固定时,逆伽马分布变得更高更集中一个增加。的先验模型σ2大于后验估计时的似然。

逆伽马分布的函数形式,见易于分析处理的后验

例子:“一个”,0.1

数据类型:

逆先验的比例参数σ2,指定为正标量或

一个当保持固定时,逆伽马分布变得更高更集中B增加。的先验模型σ2大于后验估计时的似然。

例子:“B”,5

数据类型:

对象的功能

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

例子

全部折叠

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

GNPR t β 0 + β 1 新闻学会 t + β 2 E t + β 3. 或者说是 t + ε t

对所有 t ε t 是一系列均值为0,方差为0的独立高斯扰动吗 σ 2

假设这些先验分布:

  • j= 0,…,3, β j | σ 2 拉普拉斯分布的均值为0,标度为 σ 2 / λ ,在那里 λ 为收缩参数。系数是条件独立的。

  • σ 2 G 一个 B 一个 而且 B 分别是逆伽马分布的形状和比例。

为贝叶斯线性回归创建一个先验模型。指定预测器的数量p

P = 3;Mdl = lassoblm(p);

PriorMdl是一个lassoblm贝叶斯线性回归模型对象表示回归系数和扰动方差的先验分布。在命令窗口中,lassoblm显示先前分布的摘要。

或者,您可以通过传递预测因子的数量来创建贝叶斯套索回归的先验模型bayeslm和设置ModelType到的名称-值对参数“套索”

MdlBayesLM = bayeslm(p,“ModelType”“套索”
MdlBayesLM = lassoblm属性:NumPredictors: 3拦截:1 VarNames: {4 x1细胞}λ:[4 x1双]A: 3 B: 1 |意味着性病CI95积极的分布  --------------------------------------------------------------------------- 拦截| 0 100[-200.000,200.000]0.500级混合β(1)| 0 1[-2.000,2.000]0.500级混合β(2)| 0 1[-2.000,2.000]0.500级混合β(3)| 0 1[-2.000,2.000]0.500级混合Sigma2 | 0.5000 - 0.5000[0.138, 1.616] 1.000搞笑(3.00,1)

Mdl而且MdlBayesLM是等价的模型对象。

您可以使用点表示法设置已创建模型的可写属性值。将回归系数名称设置为相应的变量名称。

Mdl。VarNames = [“他们”“E”“福”
Mdl = lassoblm属性:NumPredictors: 3拦截:1 VarNames: {4 x1细胞}λ:[4 x1双]A: 3 B: 1 |意味着性病CI95积极的分布  --------------------------------------------------------------------------- 拦截| 0 100[-200.000,200.000]0.500级混合IPI | 0 1[-2.000, 2.000] 0.500级混合E | 0 1[-2.000, 2.000] 0.500级混合WR | 0 1[-2.000, 2.000] 0.500级混合Sigma2 | 0.5000 - 0.5000[0.138, 1.616] 1.000搞笑(3.00,1)

MATLAB®将变量名称与显示中的回归系数关联起来。

中的线性回归模型建立贝叶斯套索回归的先验模型

创建一个执行贝叶斯套索回归的先验模型。指定预测器的数量p回归系数的名称。

P = 3;PriorMdl = bayeslm(p,“ModelType”“套索”“VarNames”,[“他们”“E”“福”]);收缩= PriorMdl。λ
收缩=4×10.0100 1.0000 1.0000 1.0000

PriorMdl中存储所有预测器的收缩值λ财产。收缩(1)是收缩为截距,和元素的收缩(2:结束)对应的预测因子的系数Mdl。VarNames.截距的默认收缩为0.01,默认为1对于所有其他系数。

加载Nelson-Plosser数据集。为响应和预测器系列创建变量。因为lasso对可变尺度很敏感,标准化所有变量。

负载Data_NelsonPlosserX = DataTable{:, priormll . varnames (2:end)};y = DataTable{:,“GNPR”};X = (X - mean(X,“omitnan”)。/性病(X,“omitnan”);Y = (Y - mean(Y,“omitnan”)) /性病(y,“omitnan”);

属性为每个系数指定不同的收缩值,尽管此示例对变量进行了标准化λ的属性PriorMdl缩水率数值矢量。

通过估计的边际后验分布实现贝叶斯套索回归 β 而且 σ 2 .由于贝叶斯套索回归使用马尔科夫链蒙特卡罗(MCMC)进行估计,设置一个随机数种子来再现结果。

rng (1);PosteriorMdl =估计(PriorMdl,X,y);
方法:套索MCMC抽样10000次观测数:62个预测数:4 |平均标准CI95正分布-----------------------------------------------------------------------拦截| -0.4490 0.0527[-0.548,-0.344]0.000经验IPI | 0.6679 0.1063[0.456, 0.878] 1.000经验E | 0.1114 0.1223[-0.110, 0.365] 0.827经验WR | 0.2215 0.1367[-0.024, 0.494] 0.956经验Sigma2 | 0.0343 0.0062[0.024, 0.048] 1.000经验

PosteriorMdl是一个empiricalblm的后验分布绘制的模型对象 β 而且 σ 2 根据这些数据。估计在命令行上显示边缘后验分布的摘要。摘要的行对应回归系数和扰动方差,列对应后验分布的特征。其特点包括:

  • CI95,其中包含参数的95%贝叶斯相等可信区间。例如,后验概率的回归系数E(标准化)在[-0.110,0.365]是0.95。

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

默认情况下,估计绘制并丢弃大小为5000的老化样本。然而,一个好的做法是检查图纸的痕迹图,以充分混合和缺乏瞬态。绘制每个参数的绘图跟踪图。您可以访问组成分布的绘图(属性)BetaDraws而且Sigma2Draws)使用点表示法。

图;J = 1:(p + 1) subplot(2,2, J);情节(PosteriorMdl.BetaDraws (j,:));标题(sprintf (' % s ', PosteriorMdl.VarNames {j}));结束

图中包含4个轴对象。标题为Intercept的Axes对象1包含一个类型为line的对象。标题为IPI的Axes对象2包含一个line类型的对象。标题为E的坐标轴对象3包含一个line类型的对象。标题为WR的Axes对象4包含一个类型为line的对象。

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

图中包含一个轴对象。标题为Sigma2的axes对象包含一个类型为line的对象。

轨迹图表明,这些图似乎混合得很好。该图没有显示出可检测到的短暂性或序列相关性,并且绘制不会在状态之间跳跃。

绘制系数和扰动方差的后验分布。

图;情节(PosteriorMdl)

图中包含5个轴对象。标题为Intercept的Axes对象1包含一个类型为line的对象。标题为IPI的Axes对象2包含一个line类型的对象。标题为E的坐标轴对象3包含一个line类型的对象。标题为WR的Axes对象4包含一个类型为line的对象。标题为Sigma2的Axes对象5包含一个类型为line的对象。

E而且或者说是可能不是重要的预测因子,因为0在后验分布的高密度区域内。

中的线性回归模型建立贝叶斯套索回归的先验模型以及它在执行变量选择使用默认套索收缩

当您实现lasso回归时,一个常见的实践是标准化变量。然而,如果你想保留系数的解释,但变量有不同的尺度,那么你可以执行不均匀收缩通过为每个系数指定不同的缩水率。

创建一个执行贝叶斯套索回归的先验模型。指定预测器的数量p回归系数的名称。

P = 3;PriorMdl = bayeslm(p,“ModelType”“套索”“VarNames”,[“他们”“E”“福”]);

加载Nelson-Plosser数据集。为响应和预测器系列创建变量。通过在单独的图表中绘制每个变量来确定变量是否具有指数趋势。

负载Data_NelsonPlosserX = DataTable{:, priormll . varnames (2:end)};y = DataTable{:,“GNPR”};图;情节(日期、y)标题(“GNPR”

图中包含一个轴对象。标题为GNPR的axis对象包含一个类型为line的对象。

J = 1:3的数字;情节(日期、X (:, j));标题(PriorMdl。VarNames (j+1));结束

图中包含一个轴对象。标题为IPI的axes对象包含一个line类型的对象。

图中包含一个轴对象。标题为E的axes对象包含一个line类型的对象。

图中包含一个轴对象。标题为WR的axes对象包含一个类型为line的对象。

的变量GNPR新闻学会,或者说是似乎呈指数增长趋势。

从变量中去掉指数趋势GNPR新闻学会,或者说是

Y = log(Y);X(:,[1 3]) = log(X(:,[1 3]));

所有预测变量都有不同的尺度(欲了解更多细节,请输入描述在命令行)。显示每个预测器的平均值。从所有预测器中删除包含前导缺失值的观测值。

predmeans = mean(X,“omitnan”
predmeans =1×3104× 0.0002 4.7700 0.0004

第二个预测因子的值远大于其他两个预测因子和响应的值。因此,第二个预测器的回归系数可以近似于零。

使用点表示法,将截距的收缩率定义为非常低,第一个和第三个预测因子的收缩率为0.1,第二个预测因子的收缩率为1000。

PriorMdl。λ=[1e-5 0.1 1e4 0.1];

通过估计的边际后验分布实现贝叶斯套索回归 β 而且 σ 2 .因为贝叶斯套索回归使用MCMC进行估计,所以设置一个随机数种子来重现结果。

rng (1);PosteriorMdl =估计(PriorMdl,X,y);
方法:套索MCMC抽样10000次观测数:62预测数:4 |平均标准CI95正分布----------------------------------------------------------------------截取| 2.0281 0.6839[0.679,3.323]0.999经验IPI | 0.3534 0.2497[-0.139, 0.839] 0.923经验E | 0.0000 0.0000[-0.000, 0.000] 0.762经验WR | 0.5250 0.3482[-0.126, 1.209] 0.937经验Sigma2 | 0.0315 0.0055[0.023, 0.044] 1.000经验

中的线性回归模型建立贝叶斯套索回归的先验模型

进行贝叶斯套索回归:

  1. 为回归系数和扰动方差创建一个贝叶斯套索先验模型。使用默认收缩。

  2. 列出最后10期估计数据。

  3. 估计边际后验分布。

P = 3;PriorMdl = bayeslm(p,“ModelType”“套索”“VarNames”,[“他们”“E”“福”]);负载Data_NelsonPlosserFHS = 10;%预测视界大小X = DataTable{1:(end - fhs), priormll . varnames (2:end)};y = DataTable{1:(end - fhs),“GNPR”};XF = DataTable{(end - fhs + 1):end, priormll . varnames (2:end)};%未来预测数据yFT = DataTable{(end - fhs + 1):end,“GNPR”};%真实的未来反应rng (1);%用于再现性PosteriorMdl =估计(PriorMdl,X,y,“显示”、假);

使用后验预测分布和未来预测数据预测反应XF.画出响应的真实值和预测值。

yF = forecast(PosteriorMdl,XF);图;情节(日期、DataTable.GNPR);持有plot(date ((end - fhs + 1):end),yF) h = gca;HP = patch([dates(end - FHS + 1) dates(end) dates(end) dates(end - FHS + 1)],...h.YLim([1,1,2,2]),[0.8 0.8 0.8]);uistack(惠普、“底”);传奇(“预测地平线”“真正的GNPR”“预测GNPR”“位置”“西北”)标题(实际国民生产总值:1909 - 1970);ylabel (“rGNP”);包含(“年”);持有

图中包含一个轴对象。标题为“实际国民生产总值:1909 - 1970”的坐标轴对象包含三个类型的对象,即斑块、直线。这些对象代表预测水平,真实GNPR,预测GNPR。

yF是与未来预测数据相对应的真实GNP的未来值的10乘1向量。

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

frmse =√(mean((yF - yFT).^2))
Frmse = 25.4831

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

当您执行贝叶斯套索回归时,最佳实践是搜索适当的收缩值。这样做的一种方法是在收缩值网格上估计预测RMSE,并选择使预测RMSE最小化的收缩。

更多关于

全部展开

提示

  • λ是一个调优参数。因此,使用收缩值网格执行贝叶斯套索回归,并选择最佳平衡拟合准则和模型复杂性的模型。

  • 对于估计,模拟和预测,MATLAB®没有标准化预测器数据。如果预测器数据中的变量具有不同的尺度,则为每个预测器指定收缩参数λ

选择功能

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

参考文献

[1]帕克、T.和G.卡塞拉。“贝叶斯套索。”美国统计协会杂志.Vol. 103 No. 482, 2008, pp. 681-686。

版本历史

在R2018b中引入