缺失值口径
统计过程取数时,「缺失」包含两种:
- 系统缺失:单元格为空(
./ 未录入); - 用户缺失值:变量上通过
MISSING VALUES声明的取值(如问卷里的-1、99、999,或「11 THRU 14」这样的缺失范围)。
两者在所有分析过程里一视同仁,都算缺失。这一节把每条口径写清楚,避免同一个数据集在不同过程里得到互相矛盾的 N。
五条基本口径
| 规则 | 内容 |
|---|---|
| A | 单变量过程只看该变量自身:该变量的系统缺失与用户缺失值都不算有效取值。 |
| B | 多变量过程要求各变量按个案对齐。相关矩阵按 PSPP / SPSS 默认的成对删除(每一对各自排除该对里的缺失);需要「完全案例」的过程(如配对 t 检验、配对置换、简单回归、K 均值、信度、因子分析)用整行删除,即只保留所有参与变量都有效的个案。 |
| C | 加权统计同时要求取值与权重都有效;任一缺失就整条个案不参与。 |
| D | 带分组变量的过程:分组变量或分析变量缺失的个案不进任何一组(分组变量的缺失值本身也不会成为一个组);组标签用分组变量的显示值(有值标签时用值标签)。 |
| E | 分类过程(频数、交叉表、FREQUENCIES、条形图)把用户缺失值计成「缺失」一栏,而不是一个类别;交叉表的行列类别不包含用户缺失值。 |
逐过程对照
| 过程 | 口径 |
|---|---|
| 描述统计、频率、直方图、箱线图、误差条图、Q-Q 图 | A |
| 单样本 t 检验、正态性检验、ROC | A |
| 独立样本 t 检验、单因素 / 双因素 ANOVA、ANCOVA、Kruskal-Wallis、有序趋势检验、置换检验(两样本) | D(分组变量或分析变量缺失都剔除) + A |
| 配对 t 检验、Wilcoxon 符号秩、配对置换 | B(成对完整个案) |
| Pearson / Spearman 相关、偏相关 | B(成对删除) |
| 简单 / 多元 / 逐步回归、logistic 回归、因子分析、K 均值、信度 | B(整行删除) |
| 加权描述统计与其他加权过程 | C |
| 频数、交叉表、CTABLES、条形图 | E |
多重响应集(MRSETS 的 /FREQUENCIES、/CROSSTABS) | A + E:按变量逐个判定选中,计数不加权;应答个案数为含至少一个有效响应的个案数 |
变量取值本身的原始值(含用户缺失值)仍然保留在数据集里:数据编辑器、导出与「查找个案」看到的是原始值,只有统计过程按上面的口径把它们当缺失。
Dataset.rawColumn返回原始取值,Dataset.numericColumn返回已把用户缺失值置空的分析取值。
与 PSPP 的差别
PSPP 默认同样把用户缺失值排除在分析之外,但提供了逐过程的 MISSING=INCLUDE 开关,把用户缺失值当成普通取值参与计算。本应用固定排除,不提供该开关:口径统一、结果不容易被误读;确实需要「把 99 当普通取值」时,请先用 RECODE 把该取值改成想要的值(或删除 MISSING VALUES 声明)。
其余口径与 PSPP 2.1.2 一致,test/pspp_parity_test.dart 用 PSPP 自带测试的期望输出做对拍(AUTORECODE、RANK、ONEWAY、CORRELATIONS 成对删除、NPAR TESTS Mann-Whitney),并在 CI 上执行。
v1.4.0 顺带修正的口径(一处缺陷 + 两处口径差异)
对拍与复核过程中发现并修正了一处错位缺陷与两处统计口径差异(都属于「结果和教科书 / PSPP 对不上」的类别):
- 多变量个案错位(缺陷):此前部分多变量过程先各自过滤列、再按位置截断,导致变量之间错位配对(例如某一行 pre 有效、post 缺失时,两列会错开一格)。现在统一走按个案对齐的取数(见上表),并有专门的回归用例。
- Levene 方差齐性:改为以组均值为中心(PSPP / SPSS 口径)。此前用的是组中位数(Brown-Forsythe),数值与 PSPP、SPSS 的 Levene 表不同;SPSS 的 ONEWAY / T-TEST / GLM 也都用组均值。
- Mann-Whitney U:渐近方差补上结校正
σ² = n1·n2·[(n+1)/12 − Σ(t³−t)/(12·n·(n−1))],p 用2·Φ(z)(PSPP 的 Asymp. Sig. (2-tailed))。连续性校正后的 Z / p(SPSS、Rcorrect = TRUE的口径)仍可在 API 结果的extra['zContinuityCorrected']/extra['pContinuityCorrected']取到。