SPSS 命令: SPSS RMV

替换序列中的缺失值

替换缺失值把变量按个案顺序视为序列并填补其中的缺口,生成新变量,原变量保持不变。

免费 · 无需注册 · 文件留在本机 · 更新于 2026年10月18日

能告诉你什么

Crosstabs 提供 SPSS RMV 的五种函数(SMEAN、MEAN、MEDIAN、LINT 和 TREND)、每个替换值的预览,以及含新列的 CSV 下载。

  • 每种方法在每个缺口中填入的值,与缺失的源值并列显示。
  • 替换了多少个值,以及有多少个值因无法估计而仍然缺失,例如插值法下位于序列开头的缺口。
  • 第一个和最后一个非缺失个案,以及 SPSS 风格的创建函数,例如 MEAN(sales,2)。

适用场景

适合使用

  • 按时间排列的序列(每日销售额、每月计数)存在零星缺口,需要在预测或作图之前补齐。
  • 需要快速、透明的填补,基于相邻值的估计合理,且希望在新变量旁注明所用方法。

改用其他方法

  • 行顺序没有意义的横截面调查数据:基于相邻点的方法在此没有意义,请使用多重插补。
  • 填补后需要有效的标准误时:单一插补会低估不确定性,请改用多重插补并汇聚结果。
  • 存在长串连续缺失:跨越它们的插值相当于凭空画出一条直线,可考虑时间序列模型。

在 Crosstabs 中如何操作

  1. 01

    排好顺序后打开数据

    个案按当前顺序被视为序列(个案号 = 行号),因此在“统计”模式中打开文件前,请确认各行已按时间排序。

  2. 02

    选择替换缺失值

    在“缺失值”组中选择“替换缺失值”(RMV),并勾选一个或多个“序列变量”。

  3. 03

    选择方法

    方法:序列平均值(SMEAN)、邻近点的平均值(MEAN)、邻近点的中位数(MEDIAN)、线性插值(LINT)或该点的线性趋势(TREND)。邻近点方法需设置“邻近点跨度(每侧)”,默认 2,或勾选“使用所有点”。

  4. 04

    命名新变量

    在“新变量名”下保留 SPSS 风格的默认名(源变量名加 _1)或自行输入;文件中已存在的名称会被拒绝。

  5. 05

    预览并下载

    点击“预览”查看结果变量和替换值,然后点击“下载含新变量的数据(CSV)”。源数据不会被更改。

计算示例

以下结果由 Crosstabs 引擎在构建本页时根据模拟数据实际计算得出,并非手工填写。

用示例数据试一试

数据

按个案顺序录入的 20 天网站访问量序列,第 1、4、9、10 和 16 天的值缺失。序列足够短,可以列出每一个替换值。

输入数据预览

输入序列
天visits
1.
2132
3128
4.
5141
6139
7150
8147
9.
10.
11158
12163
13160
14171
15168
16.
17175
18181
19178
20186
结果变量
创建函数已替换缺失值数第一个非缺失个案最后一个非缺失个案有效个案数
SMEAN(visits)512020
MEAN(visits,2)422019
LINT(visits)422019
TREND(visits)512020
替换值预览
个案visits序列平均值邻近点的平均值(跨度 2)线性插值该点的线性趋势
1.158.5——126.9
4.158.5135.0134.5136.0
9.158.5154.5150.7151.3
10.158.5154.5154.3154.4
16.158.5173.8171.5172.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 认可。