【免费下载链接】stat_rethinking_2026
Statistical Rethinking Course 2026
在Statistical Rethinking 2026(统计再思考课程)中,缺失数据与测量误差是数据分析绕不开的两座大山。本文带你快速掌握潜变量模型(Latent Variable Models)如何应对这两类难题:把"看不见"的真实值当作随机变量放进模型,用贝叶斯推断让残缺数据也能说真话。适合刚接触因果推断与贝叶斯回归的读者,无需深厚数学基础。
为什么你的分析可能已经被数据"骗"了
真实世界的数据很少完美:问卷有漏填、传感器有噪声、调查有误差。粗暴地"删除含缺失值的行"(complete case analysis)往往带来两个后果:
- 样本量缩水,信息白白流失;
- 更隐蔽的是系统性偏差——缺失本身可能就与结局相关(成绩差的人更不愿填问卷),删掉的不是噪声,而是信号。
Statistical Rethinking 的解法非常统一:既然观测值不可靠,就引入一个潜变量表示真实值,再为"观测 ← 潜变量"这个过程单独建模。这就是测量模型(Measurement Model)的核心思想,对应 2026 课程日程中的 [Measurement Models] 与 [Missing and Censored Data] 两讲(第 07、08 周,Experienced 组)。
📌 仓库中的完整教学脚本可在此查看:
- 测量误差:scripts/17_measurement_error.r
- 缺失数据:scripts/18_missing_data.r
- 课程总览与课表:README.md
缺失数据三兄弟:MCAR、MAR、MNAR 一步识别
仓库用了一个极其形象的教学比喻——"狗吃作业"(狗随机吃了学生的作业,数据就"消失"了)。18_missing_data.r 模拟了四种缺失机制,一眼就能看出区别:
| 机制 | 英文缩写 | 狗的吃作业规则 | 简单回归的结局 |
|---|---|---|---|
| 完全随机缺失 | MCAR | 随机吃掉 50% 的作业 | 偏差很小,只是浪费样本 |
| 随机缺失 | MAR | 只吃"学习努力"(S>0)同学的作业 | 回归斜率开始失真 |
| 非线性 + 天花板效应 | MAR 变体 | 吃掉所有 S>0 的作业,且真实关系有饱和 | 直线拟合明显歪掉 |
| 非随机缺失 | MNAR | 专吃"成绩差"(H<0)的作业 | 偏差最严重,缺失直接与结局挂钩 |
关键结论:只要缺失机制不是 MCAR,"直接删行再回归"就可能给出错误的因果解释。识别你面对的是哪一种机制,是决定后续建模策略的第一步。
测量误差修正:华夫饼与离婚率中的潜变量
课程第 15 章的经典案例是"华夫饼销量与离婚率"(WaffleDivorce 数据):各县的婚姻率、离婚率都是抽样估计,自带标准误。若直接拿带误差的观测值做回归,效应量会被向零收缩(attenuation bias)。
17_measurement_error.r 给出的潜变量模型结构非常清晰,可以拆成两层:
- 测量层:观测到的离婚率 D_obs 以真实离婚率 D_true 为中心,服从均值 D_true、标准差 D_sd 的正态分布——把"数据有多不准"显式写进模型;
- 结构层:真实值 D_true 再由婚龄 A 与婚姻率 M 预测,
mu <- a + bA*A + bM*M。
当 D_obs 的标准误较小时,后验的 D_true 会贴近 D_obs;标准误大的州则被强烈拉向回归线——这种"借力收缩"正是潜变量模型最直观的魅力。脚本中还用animation包做了逐帧动画,展示每个点如何从观测位置平滑地收缩到模型位置(scripts/17_measurement_error.r)。
脚本后半部分还覆盖了一个进阶场景:分类变量的错误分类(misclassification)。scripts/Himba.csv 是遗传父亲分析数据,脚本通过引入假阳性率 f,把观测概率改写为p + (1-p)*f的形式来校正检测误差(scripts/17_measurement_error.r),并逐步给出数值更稳定的 log 形式写法,值得学习。
用高斯过程 + 系统发育树填补灵长类缺失数据
缺失数据讲的高潮案例是 301 个灵长类物种的脑量数据:脑量、体重、群组规模三个变量各有大量缺失,不同物种缺失模式还各不相同。
- 完整案例代码:scripts/18_missing_data.r(含系统发育树与缺失标记可视化)
- 手写 Stan 模型:scripts/18_BMG_OU.stan
18_BMG_OU.stan 的核心思路分三步:
- 缺失值升格为参数:
vector[N_M_miss] M_impute;等三行,把缺失的体重、群组规模、脑量直接声明为待估计参数,而不是在数据里填一个"猜测值"; - 结构回归:合并后的完整变量
B_merge ~ multi_normal(mu, K),其中mu[i] = a + bM*M + bG*G(scripts/18_BMG_OU.stan); - 跨物种借力:利用系统发育距离矩阵
Dmat构造高斯过程协方差K(cov_GPL1函数,scripts/18_BMG_OU.stan)——亲缘关系越近的物种,缺失值越相似,等于"向亲戚借数据"。
脚本里最精彩的对照实验是:把完整案例模型与"先删行再建模"(complete case)模型的系数后验分布叠画对比(scripts/18_missing_data.r),直观展示填补模型不仅恢复了样本量,还改变了系数估计本身。
另一个常被忽略的"缺失"是删失(censoring):猫收养案例中,5 年仍未被领养的猫只能观测到"≥5 年"。18_missing_data.r 用三种等价方式处理——仅用未删失数据(有偏)、为删失值建y_cens ~ normal(5,1)的占位潜变量、以及用exponential_lccdf直接积分边缘似然,让你看清删失数据同样"有信息"。
潜变量模型落地清单:何时该用、怎么用
| 你的数据症状 | 该引入的潜变量 | 仓库对应参考 |
|---|---|---|
| 连续变量带标准误/测量噪声 | 每个观测对应一个 true 值 + 噪声分布 | 17_measurement_error.r |
| 自变量也有误差 | 给自变量再建一层测量模型 | 17_measurement_error.r |
| 分类变量检测有假阳性/假阴性 | 观测概率 = 真实概率 ⊕ 错误分类率 | 17_measurement_error.r |
| 表格型缺失(MAR) | 缺失值作为参数,由其余变量与总体结构预测 | 18_BMG_OU.stan |
| 单位间存在相似性(分组/亲缘/时间) | 用高斯过程或随机效应提供"跨单元"结构 | 18_BMG_OU.stan |
| 删失/截断数据 | 潜变量 + 条件似然,或直接积分 | 18_missing_data.r |
给新手的三条建议:
- 先画图判断缺失机制(MCAR/MAR/MNAR),再谈填补方法;
- 潜变量模型要写全两层:观测模型 + 结构模型,缺一层就退化成普通回归;
- 用"完整案例模型 vs 潜变量模型"的后验对比,验证你的填补是否真的改变了结论。
想动手复现?克隆课程仓库后安装rethinking包,直接运行上述脚本即可:
git clone https://gitcode.com/gh_mirrors/st/stat_rethinking_2026结语
Statistical Rethinking 2026 用统一的潜变量语言告诉我们:数据不完整,不代表分析走投无路。把"看不见"写进模型、让先验与结构假设提供额外的证据来源,你就能从缺失数据和测量误差中打捞回真实信号。建议从"狗吃作业"模拟入手,再跟着灵长类案例完整跑一遍 Stan 模型,两个下午就能建立直觉。祝建模愉快!🐕
【免费下载链接】stat_rethinking_2026
Statistical Rethinking Course 2026
相关推荐
Statistical Rethinking 多层模型教程:分组数据建模如何避免过度拟合
Statistical Rethinking 多层模型教程:分组数据建模如何避免过度拟合 想掌握 Statistical Rethinking 多层模型教程?本
用代码生成流程图从未如此简单:Jekyll Spaceship 与 Mermaid 完美结合
用代码生成流程图从未如此简单:Jekyll Spaceship 与 Mermaid 完美结合 Jekyll Spaceship 是一款功能强大的 Jekyll
BCFtools完整指南:如何快速掌握高通量测序数据处理
BCFtools完整指南:如何快速掌握高通量测序数据处理 BCFtools是生物信息学领域最强大的VCF和BCF文件处理工具之一,专门用于高通量测序数据的分析和
生物信息学科研
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考