SPSS数据清洗小记

从大三开始到毕业三个月的现在,我一直处于实习或者试用的状态,辗转多个公司,终于选了最小的那一个,也就是我现在供职的企业,一家刚刚起步的咨询公司,专注于移动互联网相关的行业。

在这段迷茫的时间里,博客很少更新。一方面是因为飘泊不定,另一方面总是想憋一篇长文出来,但事实上我写博客也跟便秘一个样子,生憋基本只能把屎烂在肚子里。思前想后,偶有所得时记录一下更有意义,并且可以历久弥新。

今天的所得是数据分析中清洗数据的一些小零碎,算不得经验,行家看起来肯定会嗤之以鼻,但对于我,一个数据菜鸟,却是一笔宝贵的财富。

数据清洗有两个层面:一是变量层面,一是Case层面(能有这样的想法,多半是由于SPSS的设计,它有一个Variable视图和一个Data视图),以变量为核心,再进一步检查Case。

1.变量层面

(1)针对每一个变量,检查它的Type

许多网络问卷回收的数据会把数值型的变量做成字符串型,字符串不能计算,要改回来。

(2)检查变量的Measure

变量包含的信息从高到底排列依次是定距(Scale)、定序(Ordinal)、定类(Nominal),能定距则定距,不能的话再退而求其次,变量的层次越高,能使用的分析方法也就越多。比如年龄变量一定要定距、满意度打分要定距、收入层次和文化程度可以定序。

北大刘德寰老师在传播学研究方法课上,曾提出16个重要变量,各自的变量层级可以是(个人理解):文化程度(定序)、收入与消费(定序居多,定距更好)、职业(定类)、年龄(定距,必须定距)、性别(定类)、婚姻状况(定类)、少年时期家庭居住地(定类,也可以是定序,按一线二线城市分)、家庭规模(定序,最好定距)、家庭体制内外(定类)、家庭生命周期(定类)、工作周期(定序、定类)、是否独生子女(定类)、是否知青(定类)、是否上网(定类)、居住环境(定类)、自以为的社会阶层(定序)。

(3)检查变量的Label

标签是对一个变量的解释,原始变量可以是题目,生成变量需要解释。如果一个标签特别长的话,在分析(如跑Frequency)时会看不到题号,这个时候可以在标签开头加上题号,方便辨认。比如下图中第一题可以改成[A1]请问您现在居住的城市是。

(4)检查变量Missing(缺失值)设定

比如问卷中“不知道”设置成了99,那么,99应该列入Missing。当然一个值是否是Missing,要根据具体分析目的确定。还有一种情况,有些Missing要改成合理的值。如果一个选项,有些人选了,有些人没选,那Missing最好改成0,这样分析百分比的时候得到的才是总体情况,而不是选了该选项的群体的情况。

(5)检查变量Values设定

比如性别题,1代表男,2代表女,3代表中间(开玩笑),就必须在Values里写清。这样做一些分析(比如跑Crosstabs)时就会自动列出男女而不是1、2。

(6)还有一个比较重要的是,检查Decimals(小数点位数)

一般是0,免得多出许多不必要的小数位,比如45岁变成了45.000岁,有时可以大一点。

说了这么多,其实你已经发现了,就是把Variables视图里的每一列都看一遍。

2.Case层面

接下来需要分析每一道题。

(1)极端值

首先对所有变量跑一遍Frequency,看看所有Case的集中趋势和离散趋势,看看极端值是否合理,是否需要修改。比如问卷中有两道题问年龄,前一道在问卷的开头,问您是哪个年龄段,后面一道在最后,问具体年龄。我们发现,前一道题选了”20—29岁“,后一题却写了56,那应该有问题。看看是故意填错的,还是无心之过,以此来决定是修改继续用还是直接删除这个Case。

(2)逻辑

问卷中会有一些跳转,如果选了A,则跳到第10题,中间的题不必答。但实际调查中可能会疏忽或由于系统故障导致一些不该答而答了或者该答而未答的问题,所以需要仔细检查逻辑。

(3)配额

样本不是越多越好,比如你需要照顾比例的时候。收了3000样本,其中2000男,1000女,而你要做很多男女对比分析,那恐怕你需要删掉1000男。SPSS在Select Cases命令中提供了随机筛选的功能,可以帮助实现随机删除。

我在数据清洗的过程中,还遇到一些问题,比如要根据变量和问卷编号定位一个数,在SPSS中无法快速定位,不知道该怎样解决,求高手支招!

写于第二次清洗数据之后,考虑不周,欢迎交流。

阅读 176