【免费下载链接】stat_rethinking_2026
Statistical Rethinking Course 2026
想在真实数据上掌握隐藏马尔可夫模型(HMM)?《Statistical Rethinking》2026 开源课程(stat_rethinking_2026)给出了完整路径:Richard McElreath 教授把 HMM 放在课程第 10 周压轴讲授,配套脚本覆盖了从猞猁-野兔种群周期、黑猫领养生存分析到总统"死亡概率"的马尔可夫建模全流程。本文带你沿课程脚本走一遍,理解 HMM 的核心思想并找到动手入口。
为什么 HMM 值得学:一个"看不见"的问题
HMM 解决的是这类问题:系统内部有状态,但你只能看到状态的模糊证据。
以课程里的经典例子为例:一位"总统"每天可能公开露面(观察到 0/1),但他实际处于"活着"或"已死"两个隐藏状态之一。活着时他 50% 概率露面,死了则几乎永远不露面——于是"连续几天没露面"的证据会逐步推高你估计的"死亡概率"。这正是 HMM 的两大要素:
| HMM 要素 | 符号 | 含义 | 课程示例 |
|---|---|---|---|
| 状态转移矩阵 | gamma | 隐藏状态如何随时间演化 | 活着→已死的每日概率phi |
| 观测发射概率 | theta | 各状态下"看到某证据"的概率 | 活着时露面概率约 0.5 |
| 初始状态 | rho | 起点的状态分布 | 第 1 天一定活着[1,0] |
这套框架一旦建立,就能套用到物种监测、疾病分期、设备故障预警等大量场景。
第一步:猞猁-野兔周期——先看懂动态系统
动手 HMM 之前,课程先用猞猁与野兔(Lynx-Hare)的经典皮草贸易数据带你复习动态系统的贝叶斯建模,脚本见 B09_new_lynx.R。
该脚本的脉络非常清晰:
- R code 16.13:绘制 21 年间的猞猁/野兔数量,肉眼可见的周期性振荡;
- R code 16.14:写出捕食者-猎物的差分方程仿真函数
sim_lynx_hare,理解"猎物驱动捕食者、捕食者压制猎物"的循环机制; - R code 16.17–16.19:把微分方程嵌入 Stan,用 MCMC 从皮草数据反推四个生态参数,并用 21 条后验预测时间序列检验模型是否复现了真实周期;
- R code 16.21:再用自回归(AR1)思路对照——不同建模视角的对比,正是本课程"数据花园"思想的体现。
🦊 这一节的收获:HMM 不是凭空出现的,它是"带隐变量的时间序列"。猞猁-野兔让你先熟悉"用数据反推系统机制"的贝叶斯工作流。
第二步:黑猫生存分析——处理删失数据的三种等价姿势
接下来 B08 black cats new script.r 用 AustinCats 数据讲生存分析:每只猫有两个属性——days_to_event(多少天后被领养)和out_event(领养/死亡/仍留在收容所)。"仍留在收容所"的猫只有下限信息,这就是典型的**右删失(right-censored)**数据。
脚本演示了三种处理删失的方式,结论完全等价:
- 只建事件模型:对已领养猫用几何分布似然
(1-P)^(days-1)*P,ulam直接拟合; - 加删失似然项:
adopted==0的猫贡献log( (1-P)^days ),一行代码解决删失; - 插补(imputation)版本:为每只删失猫引入参数
days_imputed,把删失似然变成缺失值的先验,用cstan直接写 Stan 代码。
三种写法互相验证后,课程再用 Kaplan-Meier 后验预测曲线(对 1000 只模拟猫作survfit)检查推断质量。
🐈 生存分析看似和 HMM 无关,但它训练的核心能力——"只看到部分证据时如何建模"——正是 HMM 的前置技能。
第三步:B10 核心脚本——纯 Stan 手写 HMM
压轴脚本 B10_HMMs_basic.R 用 CmdStan 从零搭建 HMM,是全文最值得精读的部分。
3.1 最小可用的 HMM:三块积木
整个模型代码可以拆成三块:
- 构造转移矩阵
gamma:2×2 矩阵中gamma[1,2]=phi(每日死亡概率),gamma[2,1]=0(死人不会复活); - 发射对数似然
log_omega:对每个状态、每一天,计算bernoulli_lpmf(Y[n] | theta[k]); - 一行核心:
target += hmm_marginal(log_omega, gamma, rho);——Stan 前向-后向算法自动完成边缘化,无需手写隐状态积分。
先验设置也颇有讲究:theta[2] ~ beta(1,100)让"死者的露面概率"接近 0 但不严格为 0,避免数值溢出;phi ~ beta(1,50)表达"每日死亡概率约 2%"的弱先验。
3.2 从后验里读出"哪一天死的"
采样后,generated quantities块提供两种解读:
hmm_latent_rng(...):从后验中采样一条具体隐状态轨迹("他最可能在第 50 天死");hmm_hidden_state_prob(...):逐日"死亡概率"曲线——脚本把它画成带不确定带的时间序列,死亡日附近曲线陡然爬升,直观展示 HMM 如何用累积证据定位不可观测事件。
3.3 升级:多个体版本 = 捕获-再捕获模型
脚本后半段把模型推广为M只个体 ×N年的观测矩阵,每个个体独立跑一次hmm_marginal后累加似然。此时模型就退化成了生态学的捕获-再捕获(capture-recapture)模型:年度调查中"看见/没看见"某只动物,用来估计年死亡率phi。脚本用 100 只模拟动物(真实死亡率 0.05)验证了后验密度dens(post$phi)能精准覆盖真值。
📌 这是 HMM 的精髓所在:同一套前向-后向算法,换个数据排列就是生态学里成熟的人口模型。理解了它,你就拥有了一个可复用的建模模板。
配套作业与学习路径
课程每周配 PDF 作业题,本节相关的是 homework/homework_B08.pdf(生存/删失数据)与 homework/homework_B09.pdf(猞猁-野兔建模),部分章节附解答 PDF 可供对照。完整日程与讲座安排见 README.md 中的 Calendar & Topical Outline 表格。
环境准备清单
- 安装 R 并装好
rethinking包(课程所有脚本的第一行都是library(rethinking)); - HMM 部分用
cstan(),因此需要 CmdStan 后端,首次运行会自动编译; - 运行顺序建议:
B09→B08→B10,先建立动态系统与删失数据直觉,再攻坚hmm_marginal。
总结:三条脚本串起的一条能力线
| 脚本 | 训练能力 | 对应场景 |
|---|---|---|
| B09_new_lynx.R | 动态系统 + 后验预测检验 | 种群周期 |
| B08 black cats new script.r | 删失数据、三种等价建模 | 生存分析 |
| B10_HMMs_basic.R | 转移矩阵 + 发射概率 + 前向-后向 | HMM / 捕获-再捕获 |
HMM 的门槛不在代码量——核心逻辑不超过 50 行 Stan——而在于"状态不可见、证据可累积"这一建模视角。跑通上面三个脚本后,你会发现把模板迁移到自己的问题(如设备故障、用户流失、疾病分期)只是换个先验和观测矩阵的事。
【免费下载链接】stat_rethinking_2026
Statistical Rethinking Course 2026
相关推荐
免费获得苹果苹方字体的终极指南:3分钟在Windows上安装专业中文字体
免费获得苹果苹方字体的终极指南:3分钟在Windows上安装专业中文字体 厌倦了Windows系统默认的微软雅黑字体?想要为你的文档、设计作品和网站换上苹果Ma
前端Better OneTab:Chrome标签页管理终极解决方案,让你的浏览器效率提升300%
Better OneTab:Chrome标签页管理终极解决方案,让你的浏览器效率提升300% Better OneTab是一款专为Chrome浏览器设计的标签页
Statsmodels马尔可夫转换模型:捕捉时间序列结构变化
Statsmodels马尔可夫转换模型:捕捉时间序列结构变化 在时间序列分析中,许多经济和金融数据会表现出明显的结构性变化特征,例如经济扩张与衰退的交替、市场波
数据科学科学计算数据分析
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考