关于数据挖掘:R语言贝叶斯MCMC用rstan建立线性回归模型分析汽车数据和可视化诊断附代码数据

2次阅读

共计 3939 个字符,预计需要花费 10 分钟才能阅读完成。

全文链接 http://tecdat.cn/?p=23255

最近咱们被客户要求撰写对于 rstan 的钻研报告,包含一些图形和统计输入。

本文将议论 Stan 以及如何在 R 中应用 rstan 创立 Stan 模型

只管 Stan 提供了应用其编程语言的文档和带有例子的用户指南,但对于初学者来说,这可能是很难了解的。

Stan

Stan 是一种用于指定统计模型的编程语言。它最常被用作贝叶斯剖析的 MCMC 采样器。马尔科夫链蒙特卡洛(MCMC)是一种抽样办法,容许你在不晓得散布的所有数学属性的状况下预计一个概率分布。它在贝叶斯推断中特地有用,因为后验散布往往不能写成表达式。要应用 Stan,用户要写一个 Stan 程序,代表他们的统计模型。这个程序指定了模型中的参数和指标后验密度。Stan 代码被编译并与数据一起运行,输入一组参数的后验模仿。Stan 与最风行的数据分析语言,如 R、Python、shell、MATLAB、Julia 和 Stata 的接口。咱们将专一于在 R 中应用 Stan。

rstan

rstan 容许 R 用户实现贝叶斯模型。你能够应用相熟的公式和 data.frame 语法(如 lm())来拟合模型。通过为罕用的模型类型提供预编译的 stan 代码来实现这种更简略的语法。它应用起来很不便,但只限于特定的 "罕用" 模型类型。如果你须要拟合不同的模型类型,那么你须要本人用 rstan 编码。

模型拟合函数以前缀 stan_开始,以模型类型完结。建模函数有两个必要的参数。

  • 公式。一个指定因变量和自变量的公式(y ~ x1 + x2)。
  • data。一个蕴含公式中变量的数据框。

此外,还有一个可选的先验参数,它容许你扭转默认的先验散布。

stan() 函数读取和编译你的 stan 代码,并在你的数据集上拟合模型。

stan() 函数有两个必要参数。

  • 文件。蕴含你的 Stan 程序的.stan 文件的门路。
  • data。一个命名的列表,提供模型的数据。

例子

作为一个简略的例子来演示如何在这些包中指定一个模型,咱们将应用汽车数据来拟合一个线性回归模型。咱们的因变量是 mpg,所有其余变量是自变量。

mtcars %>%
  head()

首先,咱们将拟合模型。对于线性回归,咱们应用 stan 函数。


点击题目查阅往期内容

R 语言 RStan 贝叶斯示例:反复试验模型和种群竞争模型 Lotka Volterra

左右滑动查看更多

01

02

03

04

summary(fit)

输入显示参数摘要,包含平均值、标准差和量值。此外,它还显示了 MCMC 的诊断统计 Rhat 和无效样本量。这些统计数据对于评估 MCMC 算法是否收敛十分重要。

接下来,咱们将用 rstan 来拟合同一个模型。上面是咱们模型的 stan 代码,保留在一个名为 stan 的文件中(你能够在 RStudio 中创立一个.stan 文件,或者应用任何文本编辑器,并保留扩大名为.stan 的文件)。

 数据
  int<lower=0> N;   // 观测值的数量
  int<lower=0> K;   // 预测的数量
  matrix[N, K] X;   // 预测矩阵
...
参数
  real alpha;           // 截距
...
模型
  y ~ normal(alpha + X * beta, sigma);  // 指标密度 

Stan 代码在 “ 程序块 “ 中结构化。每个 Stan 模型都须要三个程序块,即数据、参数和模型。

数据块是用来申明作为数据读入的变量的。在咱们的例子中,咱们有后果向量(y)和预测矩阵(X)。当把矩阵或向量申明为一个变量时,你须要同时指定对象的维度。因而,咱们还将读出观测值的数量(N)和预测器的数量(K)。

在参数块中申明的变量是将被 Stan 采样的变量。在线性回归的状况下,感兴趣的参数是截距项(alpha)和预测因子的系数(beta)。此外,还有误差项,sigma。

模型区块是定义变量概率申明的中央。在这里,咱们指定指标变量具备正态分布,其平均值为 α +X*β,标准差为 sigma。在这个块中,你还能够指定参数的先验散布。默认状况下,参数被赋予平坦的(非信息性)先验。

此外,还有一些可选的程序块:函数、转换的数据、转换的参数和生成的数量。

接下来,咱们须要以 Stan 程序所冀望的形式来格式化咱们的数据。stan() 函数要求将数据作为一个命名的列表传入,其中的元素是你在数据块中定义的变量。对于这个程序,咱们创立一个元素为 N、K、X 和 Y 的列表。

list(
    N = 32,
    K = 10,
    X = predictors,
    y = mpg
  )

当初咱们曾经筹备好了咱们的代码和数据,咱们把它们传给函数来拟合模型。

fit_rstan

输入相似的汇总统计数据,包含每个参数的平均值、标准偏差和量值。这些后果可能类似但不完全相同。它们之所以不同,是因为统计数据是依据后验的随机抽样来计算的。

评估收敛性

当应用 MCMC 拟合一个模型时,查看链是否收敛是很重要的。咱们举荐可视化来直观地查看 MCMC 的诊断后果。咱们将创立轨迹图,Rhat 值图。

首先,让咱们创立轨迹图。轨迹图显示了 MCMC 迭代过程中参数的采样值。如果模型曾经收敛,那么轨迹图应该看起来像一个围绕平均值的随机散点。如果链在参数空间中笔直,或者链收敛到不同的值,那就证实有问题了。咱们来演示。

  mcmctrace()

这些轨迹图表明,两个模型都曾经收敛了。对于所有的参数,四条链都是混合的,没有显著的趋势。

接下来,咱们将查看 Rhat 值。Rhat 是一种收敛诊断办法,它比拟了各条链的参数估计值。如果链曾经收敛并且混合良好,那么 Rhat 值应该靠近 1。如果链没有收敛到雷同的值,那么 Rhat 值将大于 1。Rhat 值为 1.05 或更高,表明存在收敛问题。rhat() 函数须要一个 Rhat 值的向量作为输出,所以咱们首先提取 Rhat 值。

 rhat()  +
  yaxis_text()

所有的 Rhat 值都低于 1.05,阐明没有收敛问题。

Stan 是一个建设贝叶斯模型的弱小工具,这些包使 R 用户能够很容易地应用 Stan。

点击文末 “浏览原文”

获取全文残缺材料。

本文选自《R 语言贝叶斯 MCMC:用 rstan 建设线性回归模型剖析汽车数据和可视化诊断》。

点击题目查阅往期内容

【视频】马尔可夫链蒙特卡罗办法 MCMC 原理与 R 语言实现 | 数据分享
R 语言实现 MCMC 中的 Metropolis–Hastings 算法与吉布斯采样
R 语言贝叶斯 METROPOLIS-HASTINGS GIBBS 吉布斯采样器预计变点指数分布剖析泊松过程车站等待时间
R 语言马尔可夫 MCMC 中的 METROPOLIS HASTINGS,MH 算法抽样(采样)法可视化实例
python 贝叶斯随机过程:马尔可夫链 Markov-Chain,MC 和 Metropolis-Hastings,MH 采样算法可视化
Python 贝叶斯推断 Metropolis-Hastings(M-H)MCMC 采样算法的实现
Metropolis Hastings 采样和贝叶斯泊松回归 Poisson 模型
Matlab 用 BUGS 马尔可夫区制转换 Markov switching 随机稳定率模型、序列蒙特卡罗 SMC、M H 采样剖析工夫序列 R 语言 RSTAN MCMC:NUTS 采样算法用 LASSO 构建贝叶斯线性回归模型剖析职业声望数据
R 语言 BUGS 序列蒙特卡罗 SMC、马尔可夫转换随机稳定率 SV 模型、粒子滤波、Metropolis Hasting 采样工夫序列剖析
R 语言 Metropolis Hastings 采样和贝叶斯泊松回归 Poisson 模型
R 语言贝叶斯 MCMC:用 rstan 建设线性回归模型剖析汽车数据和可视化诊断
R 语言贝叶斯 MCMC:GLM 逻辑回归、Rstan 线性回归、Metropolis Hastings 与 Gibbs 采样算法实例
R 语言贝叶斯 Poisson 泊松 - 正态分布模型剖析职业足球比赛进球数
R 语言用 Rcpp 减速 Metropolis-Hastings 抽样预计贝叶斯逻辑回归模型的参数
R 语言逻辑回归、Naive Bayes 贝叶斯、决策树、随机森林算法预测心脏病
R 语言中贝叶斯网络(BN)、动静贝叶斯网络、线性模型剖析错颌畸形数据
R 语言中的 block Gibbs 吉布斯采样贝叶斯多元线性回归
Python 贝叶斯回归剖析住房累赘能力数据集
R 语言实现贝叶斯分位数回归、lasso 和自适应 lasso 贝叶斯分位数回归剖析
Python 用 PyMC3 实现贝叶斯线性回归模型
R 语言用 WinBUGS 软件对学术能力测验建设档次(分层)贝叶斯模型
R 语言 Gibbs 抽样的贝叶斯简略线性回归仿真剖析
R 语言和 STAN,JAGS:用 RSTAN,RJAG 建设贝叶斯多元线性回归预测选举数据
R 语言基于 copula 的贝叶斯分层混合模型的诊断准确性钻研
R 语言贝叶斯线性回归和多元线性回归构建工资预测模型
R 语言贝叶斯推断与 MCMC:实现 Metropolis-Hastings 采样算法示例
R 语言 stan 进行基于贝叶斯推断的回归模型
R 语言中 RStan 贝叶斯层次模型剖析示例
R 语言应用 Metropolis-Hastings 采样算法自适应贝叶斯预计与可视化
R 语言随机搜寻变量抉择 SSVS 预计贝叶斯向量自回归(BVAR)模型
WinBUGS 对多元随机稳定率模型:贝叶斯预计与模型比拟
R 语言实现 MCMC 中的 Metropolis–Hastings 算法与吉布斯采样
R 语言贝叶斯推断与 MCMC:实现 Metropolis-Hastings 采样算法示例
R 语言应用 Metropolis-Hastings 采样算法自适应贝叶斯预计与可视化
视频:R 语言中的 Stan 概率编程 MCMC 采样的贝叶斯模型
R 语言 MCMC:Metropolis-Hastings 采样用于回归的贝叶斯预计

正文完
 0