CGSS数据清理:查看缺失有技巧
对于调查数据来说,缺失值是司空见惯的。产生缺失值的原因多种多样,被访者不知道、被访者拒绝回答、题目本身不适用于被访者、访问员失误漏问等都有可能造成数据的缺失。每种缺失都会对统计分析产生不同的影响,数据清洗时需要对每种缺失值采用不同的处理方式。因此,我们在拿到一个调查数据时,首先应该看一下数据的缺失情况。那么,Stata中有哪些命令可以快速查看数据的缺失值呢?我们以CGSS2013的数据为例,为大家简单介绍几个与查看缺失值相关的命令。
命令1:misstable
命令misstable可以快速查看变量的缺失值,它会以表格的形式呈现数据缺失的样本量,该命令的语法结构为:
misstable summarize [varlist][if][in][,summarize_options]
运行命令misstable和选项all可以直接输出指定变量串中所有变量的缺失情况。如果变量本身没有缺失值,表格结果显示为空;由于misstable只能识别数值型变量的缺失值,无法识别字符型变量的缺失值,所以,对于字符型变量来说,表格结果显示为“(string variable)”。如下图所示:
命令2:nmissing
nmissing是第三方用户写的命令,该命令的语法结构为:
nmissing [varlist] [if exp] [in range] [,min(#) obs piasm trim]
运行命令nmissing不仅可以给出指定变量串中的数值型变量的缺失值的个数,还可以给出字符型变量的缺失值的个数。如下图所示:
选项min(#)可以显示缺失值个数超过#的变量及其缺失值情况。例如,如果我们想看一下这6个变量dataversion weight a1102 a1202 a1402a1103中有没有变量的缺失值的个数大于1000,运行命令及结果如下图所示:
命令nmissing它不仅可以查看变量的缺失情况,还可以查看观测的缺失情况。运行命令nmissing和选项obs就可以看到每条观测值的缺失值的个数。例如,我们想看一下所有的观测值在这6个变量dataversion weight a1102 a1202 a1402a1103的缺失情况,运行命令后,在这6个变量中有缺失值的观测会在结果窗口中显示出来,缺失值的个数也会一同显示。运行命令及结果如下图所示:
我们还可以通过另一种方法查看观测的缺失情况-命令egen,rowmiss(varlist)。运行命令及结果如下图所示:
命令3:mdesc
命令mdesc也是一个查看变量缺失情况的第三方命令,它的语法结构为:
mdesc varlist [if] [in] [, abbreviate(#)any all none]
该命令可以识别数值型变量和字符型变量,它不仅可以查看变量缺失值的样本量,还可以看其分布。例如,我们运行命令看一下这6个变量dataversion weight a1102 a1202 a1402a1103的缺失情况,运行命令及结果如下图所示:
命令mdesc一共有4个选项,其中,选项any、all和none可以限定不同条件查看观测在指定变量串中的缺失情况。我们还是以这6个变量dataversion weight a1102 a1202 a1402a1103为例,运行命令及结果如下图所示:
根据上图可知,在这6个变量中,共有2732条观测至少有1个缺失值,有8706个观测没有缺失值,没有观测全部都是缺失值。
值得注意的是,以上三个命令misstable、nmissing和mdesc只统计Stata的系统缺失值。Stata有28个系统缺失值,其中,数值型变量的缺失值有27个,它们分别是“.”和“.a”“.b”“.c”…“.z”,字符型变量的缺失值只有1个“”(空)。而CGSS数据的缺失值是-1“不适用”、-2“不知道”、-3“拒绝回答”。因此,在使用CGSS数据时,我们可以首先使用命令mvencode、mvdecode或者recode将CGSS数据定义的缺失值改为Stata识别的系统缺失值,然后再查看CGSS数据的缺失情况。
以上命令是我们在CGSS数据管理工作中学到的小命令,在这里分享给大家。