Stan推荐:新手从哪开始
Stan推荐给想做贝叶斯建模、又不想手写采样器的人。新手别一上来啃厚论文,最稳的路线是先用接口工具跑通模型,再回头理解Stan语言本身。下面这套入门顺序,我按实际带新人踩过的坑整理。
先搞清楚你适不适合用Stan
Stan不是通用统计软件,它最擅长的是连续参数的贝叶斯模型,比如层级模型、回归模型、测量误差模型、时间序列里的复杂先验。你如果只是做普通线性回归,Excel、R的lm、Python的statsmodels都够用;你如果经常遇到“小样本、多层级、不确定性要说清楚”,Stan就很值得学。
我给新手的Stan推荐标准很简单:能写出模型公式,愿意花时间检查诊断图,接受一次模型可能跑几分钟甚至更久。只想点按钮出结果的人,会觉得Stan太“硬”。
安装别贪全,先选一个入口
新手最推荐两条路:R用户用cmdstanr,Python用户用cmdstanpy。老的rstan能用,但安装时容易被编译器、R版本、系统路径折腾。CmdStan是Stan官方命令行后端,cmdstanr和cmdstanpy只是帮你更舒服地调用它。
R里大致是安装cmdstanr,再用install_cmdstan()下载CmdStan;Python里是pip安装cmdstanpy,再运行install_cmdstan。Windows用户记得提前装好RTools或合适的C++编译环境,Mac用户通常要有Xcode Command Line Tools。安装成功的标志不是包能加载,而是官方bernoulli例子能编译并采样。
第一个模型别写复杂
我建议第一个Stan模型就写最朴素的正态均值模型:数据是一组y,参数是mu和sigma,y服从normal(mu, sigma)。这个模型看着幼稚,但能让你一次看懂data、parameters、model三个代码块。
新手常犯的错是上来写十几个参数、三个层级、五个先验,报错后不知道是哪一层坏了。Stan编译报错通常很直白,但前提是模型够小。我的习惯是每次只加一个模块:先跑通似然,再加先验,再加层级结构。
跑完别只看均值,要看诊断
Stan推荐看的三个基础指标是Rhat、有效样本量ESS、divergent transitions。Rhat接近1通常才算链混合得不错;ESS太低说明样本信息不够;出现divergence,别急着改随机种子,优先怀疑参数化和先验。
一个内行小窍门:层级模型如果频繁divergence,先试非中心化参数化;尺度参数比如sigma别用太宽的先验,half-normal或exponential往往比随手写uniform(0,100)稳得多。
学Stan的正确节奏
Stan推荐的入门节奏不是“语法背完再建模”,而是用一个小模型跑完整流程:准备数据、编译、采样、诊断、后验预测检查。你能解释每一步在干什么,才算真正入门。
最后给一句实在话:Stan学起来慢,但回报很高。它逼你把假设写清楚,也逼你面对不确定性。新手别追求模型花哨,先把简单模型跑稳,后面扩展会轻松很多。
常见问题
Stan新手用R还是Python更合适?
看你原来的工作流。做统计分析、画诊断图多,R加cmdstanr很顺;机器学习项目、数据管道在Python里,cmdstanpy更省事。Stan模型文件本身两边通用。
Stan一定要懂贝叶斯统计吗?
至少要懂先验、似然、后验和可信区间。不会贝叶斯也能复制代码跑,但很容易把先验设错,或者把后验结果解释成传统置信区间。
Stan入门需要多久?
有回归基础的人,1到2天能跑通简单模型;想独立写层级模型、处理诊断问题,通常要做完三五个真实项目才会顺手。