能告诉你什么
Crosstabs 提供 SPSS RMV 的五种函数(SMEAN、MEAN、MEDIAN、LINT 和 TREND)、每个替换值的预览,以及含新列的 CSV 下载。
- 每种方法在每个缺口中填入的值,与缺失的源值并列显示。
- 替换了多少个值,以及有多少个值因无法估计而仍然缺失,例如插值法下位于序列开头的缺口。
- 第一个和最后一个非缺失个案,以及 SPSS 风格的创建函数,例如 MEAN(sales,2)。
适用场景
适合使用
- 按时间排列的序列(每日销售额、每月计数)存在零星缺口,需要在预测或作图之前补齐。
- 需要快速、透明的填补,基于相邻值的估计合理,且希望在新变量旁注明所用方法。
改用其他方法
- 行顺序没有意义的横截面调查数据:基于相邻点的方法在此没有意义,请使用多重插补。
- 填补后需要有效的标准误时:单一插补会低估不确定性,请改用多重插补并汇聚结果。
- 存在长串连续缺失:跨越它们的插值相当于凭空画出一条直线,可考虑时间序列模型。
在 Crosstabs 中如何操作
- 01
排好顺序后打开数据
个案按当前顺序被视为序列(个案号 = 行号),因此在“统计”模式中打开文件前,请确认各行已按时间排序。
- 02
选择替换缺失值
在“缺失值”组中选择“替换缺失值”(RMV),并勾选一个或多个“序列变量”。
- 03
选择方法
方法:序列平均值(SMEAN)、邻近点的平均值(MEAN)、邻近点的中位数(MEDIAN)、线性插值(LINT)或该点的线性趋势(TREND)。邻近点方法需设置“邻近点跨度(每侧)”,默认 2,或勾选“使用所有点”。
- 04
命名新变量
在“新变量名”下保留 SPSS 风格的默认名(源变量名加 _1)或自行输入;文件中已存在的名称会被拒绝。
- 05
预览并下载
点击“预览”查看结果变量和替换值,然后点击“下载含新变量的数据(CSV)”。源数据不会被更改。
计算示例
以下结果由 Crosstabs 引擎在构建本页时根据模拟数据实际计算得出,并非手工填写。
数据
按个案顺序录入的 20 天网站访问量序列,第 1、4、9、10 和 16 天的值缺失。序列足够短,可以列出每一个替换值。
输入数据预览
| 天 | visits |
|---|---|
| 1 | . |
| 2 | 132 |
| 3 | 128 |
| 4 | . |
| 5 | 141 |
| 6 | 139 |
| 7 | 150 |
| 8 | 147 |
| 9 | . |
| 10 | . |
| 11 | 158 |
| 12 | 163 |
| 13 | 160 |
| 14 | 171 |
| 15 | 168 |
| 16 | . |
| 17 | 175 |
| 18 | 181 |
| 19 | 178 |
| 20 | 186 |
| 创建函数 | 已替换缺失值数 | 第一个非缺失个案 | 最后一个非缺失个案 | 有效个案数 |
|---|---|---|---|---|
| SMEAN(visits) | 5 | 1 | 20 | 20 |
| MEAN(visits,2) | 4 | 2 | 20 | 19 |
| LINT(visits) | 4 | 2 | 20 | 19 |
| TREND(visits) | 5 | 1 | 20 | 20 |
| 个案 | visits | 序列平均值 | 邻近点的平均值(跨度 2) | 线性插值 | 该点的线性趋势 |
|---|---|---|---|---|---|
| 1 | . | 158.5 | — | — | 126.9 |
| 4 | . | 158.5 | 135.0 | 134.5 | 136.0 |
| 9 | . | 158.5 | 154.5 | 150.7 | 151.3 |
| 10 | . | 158.5 | 154.5 | 154.3 | 154.4 |
| 16 | . | 158.5 | 173.8 | 171.5 | 172.7 |
— 表示该方法在此处无法给出估计值,因此仍为缺失。
结果解读
序列平均值在每个缺口都填入相同的 158.5,忽略了上升趋势。线性插值把第 9–10 天的两天缺口填为 150.7 和 154.3,位于前后相邻值的连线上,但第 1 天之前没有数值,因此无法填补(1 个值仍缺失)。线性趋势法用整个序列拟合直线,把第 1 天估计为 126.9。
输出表格说明
- 结果变量
- 每个新变量的已替换缺失值数、第一个和最后一个非缺失个案、有效个案数和创建函数。脚注列出仍然缺失的值。
- 替换值预览
- 所有源值缺失的个案(最多前 50 个),源值显示为“.”,新值列在其旁。
前提假设与注意事项
- 行顺序就是时间顺序;该过程本身不使用日期变量。
- LINT 和邻近点方法需要缺口两侧都有有效值,因此序列开头或结尾的缺口可能仍然缺失;SMEAN 和 TREND 会填补所有缺口。
- 替换值是单一估计值,后续计算的标准误会把它们当作观测值来处理。
结果如何验证
LINT、TREND、SMEAN 以及邻近点的平均值和中位数(跨度 1、2、3 和全部)与独立的 Python 参考实现生成的参考值对照——LINT 对照 pandas interpolate,TREND 对照 numpy polyfit,邻近点方法对照独立实现——一致到 1e-12。测试还确认结果变量按 SPSS 风格命名,且源列从不被更改。 验证证据(英文)
常见问题
应该用哪种方法?
对于平滑且缺口较短的序列,线性插值是不错的默认选择。邻近点中位数不受离群值影响,线性趋势适合稳定漂移的序列,而序列平均值只适用于没有趋势的序列。
为什么有的值仍然缺失?
插值和邻近点方法需要缺口两侧都有数据;位于序列最开头或最末尾的缺口有一侧没有数据。脚注会列出仍然缺失的值的个数。
会改变我的数据集吗?
不会。工作区数据保持原样;新变量出现在预览和下载的 CSV 中。
跨度有什么作用?
对于邻近点的平均值或中位数,跨度表示每一侧使用多少个有效值。跨度 2 即前后各取两个;“使用所有点”则使用整个序列。
相关过程
用你自己的数据运行替换缺失值
打开 .sav、CSV 或 Excel 文件。所有计算都在浏览器中完成,文件不会离开你的设备。
SPSS 是 IBM Corp. 的商标。Crosstabs 与 IBM 无关联,也未获得 IBM 认可。