乐趣区

关于机器学习:R语言stan进行贝叶斯推理分析

原文连贯:http://tecdat.cn/?p=6252

R 的 Stan

能够从许多统计软件包中运行 Stan。到目前为止,我始终在从 R 运行 Stan。

简略线性回归

第一步是为 Stan 模型编写文件。这蕴含一个文件 linreg.stan:

 data {
  int N;
  vector[N] x;
  vector[N] y;
}

model {y ~ normal(alpha + beta * x, sigma);
}

该文件的第一局部称为数据,它申明了将作为输出传递给 Stan 的标量,向量和矩阵。

接下来,咱们能够通过运行以下 R 代码来模仿数据集,并应用 Stan 和咱们的文件 linreg.stan 来拟合模型:

stan(file = 'linreg.', data = mydata, iter = 1000,   = 4)

第一次装置 Stan 模型时,模型编译成 C ++ 时会有几秒钟的提早。然而,一旦编译了模型,就能够将其利用于新的数据集而无需反复编译过程(执行模仿钻研具备很大的劣势)。

在下面的代码中,咱们要求 Stan 运行 4 个独立的链,每个链有 1000 次迭代。运行后,咱们能够通过以下形式汇总输入:

Inference for Stan model: linreg.
4 chains, each with iter=1000; warmup=500; thin=1; 
post-warmup draws per chain=500, total post-warmup draws=2000.

        mean se_mean   sd   2.5%    25%    50%    75%  97.5% n_eff Rhat
alpha  -0.10    0.00 0.10  -0.29  -0.16  -0.10  -0.04   0.09  1346    1
beta    0.95    0.00 0.11   0.75   0.88   0.95   1.02   1.17  1467    1
sigma   0.98    0.00 0.07   0.85   0.93   0.98   1.03   1.12  1265    1
lp__  -47.54    0.06 1.24 -50.77 -48.02 -47.24 -46.68 -46.17   503    1

Samples were drawn using NUTS(diag_e) at Mon Jun 08 18:35:58 2015.
For each parameter, n_eff is a crude measure of effective sample size,
and Rhat is the potential scale reduction factor on split chains (at 
convergence, Rhat=1).

对于回归斜率 β,咱们的后验均值为 0.95(靠近用于模仿数据的实在值 1)。为了造成 95%的后验置信区间,咱们简略地采纳取样后验的 2.5%和 97.5%的百分位数,这里是 0.75 到 1.17。

您能够从拟合的模型中获取各种其余数量。一种是绘制其中一个模型参数的后验散布。要取得回归斜率,咱们能够执行以下操作:

 hist(result$beta)

β 后验散布直方图

当初让咱们应用规范一般最小二乘拟合线性模型:

Residuals:
    Min      1Q  Median      3Q     Max 
-1.9073 -0.6835 -0.0875  0.5806  3.2904 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.10280    0.09755  -1.054    0.295    
x            0.94753    0.10688   8.865  3.5e-14 ***
---
Signif. codes:  0‘***’0.001‘**’0.01‘*’0.05‘.’0.1‘’1

Residual standard error: 0.9707 on 98 degrees of freedom
Multiple R-squared:  0.4451,    Adjusted R-squared:  0.4394 
F-statistic:  78.6 on 1 and 98 DF,  p-value: 3.497e-14

这给出了咱们对斜率 0.95 的预计,与 Stan 的后验平均值相差 2 位小数,标准误差为 0.11,这与 Stan 的后验 SD 雷同。

stan 和贝叶斯推理

有趣味摸索 Stan 并应用它来执行贝叶斯推理,这是出于测量误差和数据缺失的问题。正如 WinBUGS 和作者所形容的,贝叶斯办法在解决不同的不确定性起源问题时十分天然,这些不确定性起源超出参数不确定性,例如缺失数据或用误差测量的协变量。实际上,对于风行的缺失数据多重插补办法是在贝叶斯范式内倒退的。

退出移动版