不是“背命令”,而是学会为什么选这个公式
OpenStata 的目标不只是让你会输入命令,而是帮你回答三个更重要的问题: 什么时候该用这个工具、为什么不该用其他工具、以及跑出来的结果到底在说什么。
统计分析的标准流程
先用 `describe`、`codebook`、`inspect` 看变量类型、缺失值、唯一值个数,避免把字符串变量误当成连续变量。
你是想比较均值、看变量关联、解释因果路径,还是检查分类变量之间是否有关联?问题不同,工具不同。
看清楚是连续变量还是分类变量,是两组还是多组,是独立样本还是配对样本,是近似正态还是明显偏态。
不要只盯着 p 值。均值差、回归系数、相关系数、效应方向、区间估计和业务含义,通常比“显著/不显著”更重要。
选工具速查表
先别急着记命令。先问你自己:我的研究问题是什么?变量是什么类型?有几组?是独立样本还是配对样本?
| 如果你的问题是 | 优先命令 | 为什么 |
|---|---|---|
| 我只是想先认识这份数据 | describe / codebook / inspect / list / count | 这些命令不会直接做推断,而是帮你先确认变量类型、缺失、取值范围和数据质量。 |
| 我想看均值、标准差、偏度、峰度 | summarize / summarize, detail | 这是描述性统计的起点,适合先理解分布和离散程度。 |
| 我想看分类变量的频数或列联关系 | tabulate / tab2 / chi2 | 分类变量最自然的表示是频数和比例,不是均值。 |
| 我想看两个连续变量是否线性相关 | correlate | 相关矩阵直接回答“是否同向变化、强度多大”,但不解释控制变量后的关系。 |
| 我想解释一个连续因变量,同时控制多个自变量 | regress | OLS 回归用来分离每个自变量在“其他变量不变”条件下的边际关联。 |
| 我想比较均值和某个理论值是否不同 | ttest var = # | 这是单样本 t 检验,研究的是样本均值和给定常数的差异。 |
| 我想比较两组独立样本的均值 | ttest var, by(group) | 独立样本 t 检验专门处理“两组、连续变量、独立观测”的情形。 |
| 我想比较同一对象前后两次测量 | ttest var1 == var2 / signrank var1 == var2 | 配对设计要分析“差值”,不能当成两组独立样本。 |
| 我想比较三组及以上的均值 | oneway | 多组比较不能反复做 t 检验,否则第一类错误会不断累积。 |
| 数据明显偏态,或量表更像等级而不是连续变量 | ranksum / signrank / kwallis | 这类秩和方法对极端值和非正态分布更稳健。 |
| 我想检查变量是否近似正态 | jbtest | 正态性不是目的本身,但会影响你是否更放心地使用参数方法。 |
数据识别与清洗起点
什么时候用
当你刚导入数据,或者对变量类型、缺失情况、编码规则还没把握时,先用这组命令建立全貌。
为什么是这个公式 / 这个思路
这组工具不依赖推断公式,核心思想是“先确认数据结构,再做统计判断”。统计方法选错,往往不是公式算错,而是变量理解错了。
为什么不适合其他方法
如果你还没确认 `treatment` 是字符串还是数值、`score` 有没有大量缺失,就直接回归或 t 检验,得到的结论往往从起点就偏了。
结果是什么意思
- 看 `describe` 的 `type`,确认变量是 numeric 还是 string。
- 看 `codebook` 的唯一值、缺失值、最常见取值,判断变量更像连续变量、分组变量还是编码变量。
- 看 `inspect` 和 `list`,确认异常值、空值和录入问题。
示例命令
. describe. codebook treatment score. inspect score. list score treatment 10. count描述统计
什么时候用
你想先知道变量的大致中心位置、波动大小、偏态程度、是否存在明显极端值。
为什么是这个公式 / 这个思路
描述统计关注的是样本本身:均值、标准差、中位数、四分位数、偏度、峰度。它不回答“是否显著”,而是回答“数据长什么样”。
为什么不适合其他方法
如果你的问题只是“这个变量大概分布如何”,没必要一上来就做假设检验。推断统计之前,先看描述统计能避免误判。
结果是什么意思
- 均值和中位数差得很大,往往提示分布偏斜。
- 标准差大,说明个体差异大;四分位距大,说明中间 50% 的波动也大。
- 偏度、峰度离 0 和 3 很远时,正态近似要更谨慎。
示例命令
. summarize score age income. summarize score, detail频数表与交叉表
什么时候用
当变量是分类变量,或者你要看两个分类变量之间的分布结构时。
为什么是这个公式 / 这个思路
频数表关心的是每个类别出现了多少次;交叉表关心的是两个分类变量组合后形成的格子频数。
为什么不适合其他方法
分类变量最关心的是比例和构成,不是均值。比如 `gender`、`treatment`、`city` 这类变量,用 `summarize` 没有解释力。
结果是什么意思
- 先看每一类占比是否失衡,失衡会影响后续检验的稳定性。
- 交叉表里如果某几个格子特别大,通常提示变量之间可能有关联。
- 频数很小的类别要小心,后续卡方检验的近似可能不稳定。
示例命令
. tabulate treatment. tab2 treatment satisfaction. tab2 gender city相关分析
什么时候用
研究问题是“两个连续变量是否线性同向变化,以及强度多大”。
为什么是这个公式 / 这个思路
Pearson 相关系数本质上是标准化协方差:`r = cov(X, Y) / (sd(X) * sd(Y))`。它衡量的是线性关联的方向和强度。
为什么不适合其他方法
如果你的问题是“组间均值是否不同”,应该用 t 检验或 ANOVA;如果你想控制其他变量,就该进入回归,而不是停留在相关。
结果是什么意思
- `r > 0` 表示正相关,`r < 0` 表示负相关,绝对值越大线性关系越强。
- 相关不代表因果,它没有控制混杂因素。
- 对离群值敏感,所以解释前最好先看描述统计或散点结构。
示例命令
. correlate age income education score线性回归(OLS)
什么时候用
当因变量是连续变量,而且你想同时考虑多个解释变量,回答“在其他变量不变时,X 和 Y 的关系如何”。
为什么是这个公式 / 这个思路
OLS 的核心是最小化残差平方和:`min Σ(y_i - ŷ_i)^2`,模型写成 `Y = β0 + β1X1 + ... + βkXk + ε`。
为什么不适合其他方法
如果只比较两组均值,用 t 检验更直接;如果因变量是分类变量,OLS 就不是首选;如果自变量里有字符串分组变量,要先编码或改用适合的设计。
结果是什么意思
- 系数 `β` 表示在其他变量不变时,自变量增加 1 个单位,因变量平均改变多少。
- `R-squared` 表示模型解释的方差比例,但不是“模型真伪”的证明。
- 看 `P>|t|` 判断系数是否足够偏离 0,但更重要的是系数方向、大小和置信区间。
示例命令
. regress score age education income. regress posttest pretest treatment_code单样本 t 检验
什么时候用
当你要问“样本均值是否和某个理论值、行业基准或政策目标不同”。
为什么是这个公式 / 这个思路
统计量是 `t = (x̄ - μ0) / (s / √n)`,本质上是在看“观察到的均值偏差”相对于“抽样误差”有多大。
为什么不适合其他方法
如果你比较的是两组或多组,就不该用单样本 t;如果数据极度偏态且样本很小,也要谨慎依赖参数近似。
结果是什么意思
- `t` 绝对值越大,表示样本均值离假设值越远。
- `p` 很小意味着“如果总体均值真等于 μ0,这么极端的样本很少见”。
- 结果要回到业务:差了多少,比“显著”二字更重要。
示例命令
. ttest score = 75独立样本 t 检验
什么时候用
当你要比较两组独立样本在某个连续变量上的均值差异,例如男/女、实验组/对照组。
为什么是这个公式 / 这个思路
核心是“均值差 / 标准误”。它衡量两组均值差是否大到不能只用抽样波动解释。
为什么不适合其他方法
如果是同一批人前后测,应该用配对 t;如果是三组及以上,应该用 ANOVA;如果数据明显偏态且受极端值影响大,可考虑 `ranksum`。
结果是什么意思
- 先看两组均值谁大,再看差异是否足够稳定。
- `p` 小说明均值差不太像随机波动,但不等于差异一定有实践意义。
- 结合组内标准差一起看,判断差异是否“稳”和“有多大”。
示例命令
. ttest score, by(gender). ttest score, by(treatment)配对 t 检验
什么时候用
同一对象有两次测量,如干预前后、左右手、两种条件下的重复测量。
为什么是这个公式 / 这个思路
不是比较两个均值本身,而是比较“差值”的均值是否为 0:`t = d̄ / (s_d / √n)`。
为什么不适合其他方法
如果你把配对数据当独立样本来做,会丢掉配对结构,标准误和结论都会被扭曲。
结果是什么意思
- 关键是看差值 `var1 - var2` 的平均方向和大小。
- 如果前后高度相关,配对 t 往往比独立样本 t 更有检验力。
- 解释时要明确“变化量”而不是两个时间点各自均值。
示例命令
. ttest pretest == posttest单因素方差分析
什么时候用
你有三个及以上独立组,要比较某个连续结果变量的组间均值。
为什么是这个公式 / 这个思路
ANOVA 的核心是 `F = 组间均方 / 组内均方`。如果组间差异相对组内噪声足够大,F 就会上升。
为什么不适合其他方法
如果你有三组以上还反复做 t 检验,第一类错误会膨胀;如果结果变量是分类变量,则不该用 ANOVA。
结果是什么意思
- 显著的 F 只能说明“至少有一组和其他组不同”,不能直接告诉你哪两组不同。
- 解释时要先看各组均值,再看 F 和 p 值是否支持组间差异。
- 如果组内波动特别大,即使均值看起来不同,也可能难以显著。
示例命令
. oneway score treatment卡方检验
什么时候用
当你研究两个分类变量是否独立,例如处理组别是否影响满意度分布。
为什么是这个公式 / 这个思路
卡方统计量是 `χ² = Σ (O - E)^2 / E`,比较的是“观察频数”与“若两变量独立时的期望频数”之间的偏离。
为什么不适合其他方法
如果变量是连续变量,卡方不合适;如果你关心的是均值差,不该把连续变量硬分箱后再做卡方。
结果是什么意思
- 显著结果表示两个分类变量之间可能存在关联,而不是“差值有多大”。
- 先看交叉表中哪些格子的观察频数明显高于或低于期望频数。
- 如果很多期望频数太小,卡方近似要谨慎。
示例命令
. chi2 treatment satisfaction. tab2 treatment satisfactionMann-Whitney U / Rank-sum
什么时候用
当你比较两组独立样本,但连续变量明显偏态、存在极端值,或者更像等级数据。
为什么是这个公式 / 这个思路
它不直接比较均值,而是把两组数据合并后整体排序,比较两组的秩次是否系统性偏高或偏低。
为什么不适合其他方法
如果数据近似正态且你关心均值本身,t 检验更直接;`ranksum` 关注的是位置差异,不是均值差的具体数值。
结果是什么意思
- 如果一组平均秩明显更高,说明这组整体取值通常更大。
- 它更稳健,但代价是对“均值差多少”的解释没有 t 检验直接。
- 适合把“分布整体偏高”作为研究语言,而不是只谈均值。
示例命令
. ranksum score, by(gender)Wilcoxon 符号秩检验
什么时候用
配对数据、前后测数据,但差值分布偏态,或者样本量较小,不想过度依赖正态性。
为什么是这个公式 / 这个思路
它对每个配对差值取绝对值后排序,再把正负号放回去,比较正向变化和负向变化的秩和。
为什么不适合其他方法
如果把它用在独立样本上就不对了;如果配对差值近似正态且你更关心均值变化,配对 t 更容易解释。
结果是什么意思
- 显著结果表示“正向变化”和“负向变化”并不平衡。
- 它更强调变化方向和秩次,而不是平均改变量的绝对值。
- 适合讲“干预后整体变高/变低了”,不适合直接讲“平均提高了几分”。
示例命令
. signrank pretest == posttestKruskal-Wallis 检验
什么时候用
三组及以上独立样本比较,但数据不满足正态近似,或者量表更适合秩次分析。
为什么是这个公式 / 这个思路
它是 ANOVA 的非参数对应物,用全体秩次构造 `H` 统计量,比较不同组的平均秩是否一致。
为什么不适合其他方法
如果只有两组,`ranksum` 更合适;如果数据近似正态且关心均值,ANOVA 更直观。
结果是什么意思
- 显著结果说明至少有一组的秩分布和其他组不同。
- 和 ANOVA 一样,它不能单独告诉你具体哪两组不同。
- 解释时重点看各组平均秩高低,而不是均值本身。
示例命令
. kwallis score, by(treatment)Jarque-Bera 正态性检验
什么时候用
你想快速检查某个连续变量是否与正态分布差异较大,尤其在准备使用参数方法前。
为什么是这个公式 / 这个思路
JB 利用偏度和峰度构造统计量,本质上是在问:这个变量的偏斜程度和尖峭程度,是否明显偏离正态分布应有的形状。
为什么不适合其他方法
它不是研究问题的终点。即使不正态,也不代表所有参数方法都不能用;很多时候样本量足够大、模型残差更关键。
结果是什么意思
- `p` 小表示数据形状和正态分布差异较大。
- 要结合直方图、箱线特征、样本量一起看,不要机械地“一票否决”。
- 真正需要正态近似时,优先关心模型残差而不只是原始变量。
示例命令
. jbtest score数据操作工具
什么时候用
当你需要构造新变量、重命名、筛选分析变量、排序或给变量加上更清晰的含义。
为什么是这个公式 / 这个思路
这些命令不对应统计检验公式,但它们直接决定你的分析对象是否被正确构造,是统计推断前最重要的“数据工程”。
为什么不适合其他方法
如果变量没整理好,再高级的检验也只是建立在错误字段上的精致计算。
结果是什么意思
- `generate` 适合构造差值、编码变量、交互项。
- `rename` 和 `label` 让输出更清楚,减少解释歧义。
- `keep`、`drop`、`sort` 让数据集更聚焦,降低操作失误。
示例命令
. generate improvement = posttest - pretest. rename score final_score. label variable score "Final composite score". sort treatment最后:怎么把结果讲成人话
统计输出最怕的不是公式复杂,而是解释空洞。下面这几条,是把结果从“表格数字”翻译成“研究结论”的关键。
- 先解释效应方向,再解释显著性。方向决定结论是“更高”“更低”还是“没有明显趋势”。
- 先解释量级,再解释 p 值。均值差 0.2 分和均值差 20 分,即使都显著,含义完全不同。
- 把结果放回研究问题。统计工具不是为了“显著”,而是为了回答现实中的比较、关联、解释和决策问题。
- 区分“统计显著”和“实践重要”。样本很大时很小的差异也可能显著,但未必值得行动。