1. 从零上手:你的第一份CEPS数据长什么样?
如果你刚拿到那份传说中的CEPS数据压缩包,解压后看到一堆以.dta结尾的文件,是不是有点懵?别慌,我第一次打开的时候也这样,感觉像面对一座宝山,却不知道从哪块金子开始挖。这份数据,说白了,就是中国教育追踪调查在2012到2015年间,对全国上万名初中生、他们的家长、老师以及学校领导进行“追踪式”访问后,整理出来的原始记录。它的核心价值在于“追踪”二字——不是只看某个学生某一年的情况,而是跟着他/她从初一(七年级)或初三(九年级)开始,连续几年观察变化,这就能让我们看到很多静态数据看不到的“故事”,比如一个学生成绩的起伏跟家庭变故有没有关系,或者换了班主任对他的学习态度影响有多大。
数据文件通常按调查对象和年份分开。比如,你可能会看到student_2014.dta、parent_2014.dta、teacher_2014.dta和school_2014.dta这样一组文件,这对应的是2014年(基线调查)的学生、家长、教师和学校数据。2015年的追踪数据也会有类似的一套。每个.dta文件都可以直接用Stata软件打开,如果你用R或者Python,也有相应的包(比如R的haven, Python的pandas的read_stata函数)可以轻松读取。我个人的习惯是先用Stata快速浏览一下变量标签和值标签,因为CEPS数据在这方面做得非常规范,变量名虽然可能是简写,但都有完整的中文标签说明,这能省去你大量查字典的时间。
打开一个学生数据文件,你会看到每一行代表一个学生,每一列就是一个变量。变量多到你眼花缭乱,从最基础的学号、性别、出生年月,到家庭情况(父母教育程度、职业、家庭收入)、在校情况(班级、是否班干部、与老师同学关系),再到详细的学习行为(每天作业时间、课外辅导情况、学习态度量表得分)和心理健康(抑郁焦虑量表得分)等等。我建议你第一步别急着分析,先花半天时间,用Stata的describe命令或者codebook命令,把几个核心数据文件的主要变量清单和描述统计(比如summarize)跑一遍,心里有个全景地图。你会发现,有些变量是追踪的核心,比如学生的唯一IDids,这是连接不同年份、不同表格(学生表和家长表)的关键钥匙,一定要先搞清楚它的命名规则。
2. 数据清洗实战:把“脏数据”变成“金数据”
拿到原始数据直接跑回归,那是新手最容易踩的坑,结果往往莫名其妙。CEPS数据质量已经很高了,但依然需要经过清洗才能用于严谨的研究。数据清洗不是枯燥的体力活,而是理解数据、构建可靠分析基础的关键一步。我自己就曾因为忽略了一个缺失值编码,导致整个家庭社会经济地位指标算错,白忙活了好几天。
2.1 处理缺失值:不是简单删除那么简单
CEPS数据中的缺失值通常有明确的编码,比如用-8(“不适用”)、-9(“不知道”)、-7(“拒绝回答”)等表示。第一步就是用mvdecode命令(Stata)或类似函数,把这些特定数值转换成Stata能识别的缺失值标记(.)。这里有个细节要注意:-8(不适用)和-9(不知道)在分析时处理方式可能不同。比如,问父亲月收入,如果学生来自单亲家庭,父亲信息可能编码为-8(不适用),这属于结构性缺失,在分析父亲收入影响时,这类样本可能需要排除或单独处理。而如果是-9(不知道),则可能意味着信息缺失是随机的。
处理完编码,就要决定怎么对待缺失值。全样本删除是最简单粗暴的,但容易损失大量信息,特别是当你的研究涉及多个变量时,可能最后没剩几个样本了。我常用的策略是分情况处理:对于关键自变量(如父母教育程度),如果缺失比例不高(比如<5%),可以考虑用均值、中位数或众数进行单一插补,或者用其他相关变量进行预测(如用父母职业预测其教育水平)。对于因变量(如考试成绩),缺失通常意味着更严重的问题(如缺考),需要仔细核查原因,有时直接删除样本是更稳妥的选择。记住,一定要在论文方法部分清晰说明你对缺失值的处理方式。
2.2 变量重构与生成:打造你的研究武器
原始数据给的常常是“原材料”,我们需要根据研究问题自己“加工”出关键变量。这是最能体现研究者功力的地方。举个例子,CEPS数据里有详细的家庭藏书量、父母教育年限、父母职业和家庭收入等信息,但很少有现成的“家庭社会经济地位(SES)指数”。你需要自己构建。常见的方法是主成分分析法(PCA),把上述几个反映经济、文化和社会资本的变量合成一个综合指标。在Stata里,你可以用pca命令先跑一下,看看哪个变量载荷高,然后生成第一个主成分作为SES得分。记得要对生成的指数进行标准化(比如化为均值为0、标准差为1),这样不同研究之间才有点可比性。
再比如,你想研究“课外补习时间”对成绩的影响。原始数据可能分别问了“每周参加语文补习小时数”、“数学补习小时数”等等。你需要把这些加总,生成一个新变量tutoring_hours。但这里又有个坑:有些学生可能所有科目都没补习,这个新变量的值就是0,这没问题;但有些学生可能缺失了某一科的信息,加总后也会变成缺失。这时候你需要用rowmiss()或rownonmiss()函数先判断一下,如果所有相关变量都缺失,则新变量为缺失;如果只是部分缺失,可以考虑将缺失视为0(假设没报告就是没补习),但这需要你在研究中做出合理说明。
2.3 数据合并:连接学生、家长与学校的桥梁
CEPS数据的魅力在于多层次,但挑战也在于此。学生数据、家长数据、教师数据、学校数据是分开的,你需要根据ID把它们精准地“拼”起来。最常用的是merge命令。比如,你想把家长信息(特别是父母教育、收入)合并到学生记录里。
* 假设学生数据为 student.dta,家长数据为 parent.dta,共有关键变量 `ids` use student.dta, clear merge 1:1 ids using parent.dta运行后,Stata会生成一个_merge变量,取值1、2、3分别表示“仅主数据有”、“仅用数据有”、“两者匹配”。你必须仔细检查_merge==2的样本,为什么有些家长数据没有对应的学生?是ID编码错误,还是抽样设计如此?同样,检查_merge==1的样本,为什么有些学生没有家长数据?是家长拒访吗?这会不会带来样本选择偏差?处理完这些问题,通常我们会只保留_merge==3的成功匹配样本。合并学校数据时,因为是多个学生属于同一所学校,所以要用merge m:1 schoolid(多对一合并)。层层合并后,你就得到了一份包含个体、家庭、学校三层信息的“丰满”数据集。
3. 变量选择与测量:问对问题,选准指标
变量选得好,研究就成功了一半。CEPS变量虽多,但不能“捡到篮子里都是菜”。你需要根据理论框架,精心挑选那些最能代表你核心概念的指标。
因变量(结果变量)的选择:CEPS最常用的因变量是标准化考试成绩(如cog3认知能力测试分数)和主科(语数外)成绩。这里要注意,原始成绩可能因学校、地区、试卷难度而异,CEPS通常会提供经过一定标准化处理的值。我建议直接使用数据中提供的标准化分数,或者自己再做一次校内标准化(比如计算学生在年级内的Z分数),以消除学校间的绝对差异,更公平地比较学生相对表现。除了成绩,学生的教育期望(想读到什么学历)、心理健康得分、问题行为(如打架、逃课)等都是非常有价值的结果变量,能拓展教育研究的边界。
核心自变量的构建:这是体现研究深度的关键。比如研究“家庭资本”:
- 经济资本:不要只看“家庭年收入”这个单一指标。可以结合“是否有独立书房”、“家庭藏书量”、“是否拥有电脑/互联网”等物质资源变量,甚至可以用“是否上过付费兴趣班”作为教育投资的代理变量。
- 文化资本:CEPS有丰富的测量。比如“父母与孩子讨论学校事务的频率”、“参观博物馆/科技馆的次数”、“家庭文化氛围量表”(可能由“家里有多少本书”、“父母是否读书”等题项合成)。这些软性的文化互动往往比硬性的经济指标影响更微妙。
- 社会资本:可以考察“父母与老师联系的频率”、“父母是否认识孩子同学的家长”、“家庭社会网络规模”等。这些变量反映了家庭从外部获取资源和支持的能力。
控制变量的重要性:为了尽可能干净地识别核心自变量的“净效应”,你必须加入一系列控制变量。个人层面:性别、年龄、民族、户口类型(城乡)、是否独生子女、基线认知能力(非常重要,控制先天禀赋)。家庭层面:家庭结构(是否单亲)、监护人身份等。学校层面:学校类型(公立/民办)、学校平均SES、班级规模等。控制得越充分,你的结论就越可信。
4. 统计分析方法指南:从描述到因果推断
有了干净的数据和明确的变量,接下来就是选择分析“武器”。CEPS的追踪设计为我们提供了比横截面数据更强大的分析方法。
4.1 基础分析:描述与关联
万事开头,先用描述性统计(tabulate,summarize)给你的样本画个像:学生平均成绩多少?家庭SES的分布如何?城乡学生比例怎样?接着可以做双变量关联分析,比如用独立样本T检验看男女生的成绩是否有显著差异,用方差分析(ANOVA)看不同家庭收入组的学生成绩均值是否不同。用相关系数矩阵看看你关心的主要变量之间两两相关性如何。这些初步分析能帮你形成直觉,发现一些初步模式。
4.2 多元回归模型:控制混杂因素
这是最常用的核心方法。普通最小二乘法(OLS)回归是你的基本功。模型基本形式如下:
regress math_score SES gender han hukou cog3_baseline i.school_type, robust这里math_score是因变量(数学成绩),SES是核心自变量(家庭社会经济地位),后面跟着一系列控制变量。i.school_type表示把学校类型当作虚拟变量纳入。robust选项使用了稳健标准误,可以缓解可能的异方差问题。解读结果时,不仅要看系数是否显著(p值),更要关注系数的大小(比如SES提高一个标准差,数学成绩能提高多少分?),这代表了实际影响力度。
4.3 追踪数据的威力:固定效应模型
这是利用CEPS追踪数据优势的王牌方法。如果你有同一个学生两年或以上的数据,就可以使用个体固定效应模型。它的妙处在于,可以控制掉所有不随时间变化的个体特征(比如天生的能力、稳定的家庭文化氛围、父母不变的基因影响等),哪怕这些特征没有被观测或测量。这大大缓解了遗漏变量偏差,让我们对时间变化变量的因果推断更有信心。
比如,你想研究“父母监督作业时间的变化”是否影响“学生成绩的变化”。有些学生父母一直监督很严,有些一直很松,这种固有差异可能和家庭其他稳定特征相关。固定效应模型通过关注同一个学生从一年到下一年的变化,来剥离这些稳定因素的影响。
* 假设数据是长格式(long format),每个学生有多行记录,有年份变量`year` xtset ids year // 声明面板数据 xtreg math_score homework_supervision i.year, fe robustfe选项表示固定效应模型。你会发现,像性别、民族这些不随时间变的变量自动被模型“吸收”了,因为它们在个体内部没有变异。固定效应模型估计出的homework_supervision系数,可以更干净地解释为:对于同一个学生,当其父母监督作业的时间增加时,他的数学成绩会如何变化。
4.4 多层线性模型(HLM):尊重数据的嵌套结构
CEPS数据本质上是嵌套的:学生嵌套于班级,班级嵌套于学校。传统回归假设所有观测独立,这显然不符合实际——同一个学校的学生共享相似的师资、校风、资源。忽略这种嵌套结构,会低估标准误,导致容易做出“显著”的错误推断。多层线性模型(又称分层模型或随机效应模型)正是为此而生。
比如,一个经典的两层模型:
- 层一(学生个体层):
数学成绩_ij = β0j + β1j*(学生SES_ij) + β2*(性别_ij) + ... + e_ij - 层二(学校层):
β0j = γ00 + γ01*(学校平均SES_j) + γ02*(学校资源_j) + u0jβ1j = γ10 + γ11*(学校平均SES_j) + u1j
这个模型允许截距β0j(即学校的平均成绩)和斜率β1j(即学生SES对成绩的影响程度)随学校不同而随机变化。γ01可以解释学校层面的变量(如学校平均SES)如何影响学校的平均成绩。γ11则是一个跨层交互项,它回答了“学校环境是否会调节家庭背景对个人成绩的影响?”这一重要问题。在Stata中,可以使用mixed或xtmixed命令来拟合这类模型。
5. 研究案例拆解:看别人怎么做,想自己怎么做
光讲方法有点抽象,我们结合两个(虚构但典型的)研究案例,看看如何将上述流程串起来。
案例一:家庭数字鸿沟如何影响初中生学业成绩?——基于CEPS追踪数据的分析
- 研究问题:家庭数字接入(如电脑、互联网)和数字使用技能(父母、学生)如何影响学生成绩?这种影响在不同城乡、不同家庭背景中是否存在差异?
- 变量操作化:
- 因变量:标准化语文、数学、英语成绩的平均值(或分别分析)。
- 核心自变量:
- 数字接入:虚拟变量(家中是否有电脑、是否能上网)。
- 父母数字技能:根据“父母是否会用电脑帮助孩子学习”、“父母是否限制孩子上网”等题项构建量表。
- 学生数字使用:分为“教育性使用”(用电脑查学习资料)和“娱乐性使用”(玩游戏、社交)时长,分别构建变量。
- 控制变量:学生性别、年龄、户口、基线认知能力、家庭SES(传统维度)、父母教育、学校固定效应等。
- 分析方法:
- 描述性统计,展示城乡、不同SES家庭在数字接入和使用上的差异。
- 使用OLS回归,初步检验数字变量对成绩的影响。
- 关键分析:使用个体固定效应模型,控制不随时间变的个体和家庭特征,更干净地识别数字接入或使用模式变化带来的影响。
- 进行异质性分析:在模型中加入交互项(如
数字接入*城乡、数字接入*家庭SES),看影响是否对农村学生或低SES学生更大。
- 可能发现与解读:或许你会发现,单纯的“有电脑”对成绩影响不显著甚至为负(如果主要用于娱乐),但“教育性使用”时间则有显著正向影响。而且,数字接入对农村学生成绩的提升效应明显大于城市学生,这体现了数字资源的“补偿效应”。固定效应模型的结果能更强地支持“增加教育性数字使用能导致成绩提升”这一因果推断。
案例二:学校氛围对青少年心理健康的影响:同伴关系的中介作用
- 研究问题:积极的学校氛围(如师生关系、同学关系、秩序与安全)是否能降低青少年的抑郁焦虑水平?如果能,其中有多少作用是通过改善学生感知的同伴关系来实现的?
- 变量操作化:
- 因变量:心理健康量表得分(分值越高可能抑郁焦虑水平越高,注意方向)。
- 核心自变量:学校氛围综合指数(由多个关于师生关系、同学关系、公平感、安全感的题项通过因子分析合成)。
- 中介变量:学生自评的同伴关系质量(“我在班上有很多朋友”、“同学对我很友好”等题项均值)。
- 控制变量:个体、家庭、学校层面的一系列变量,特别是基线心理健康水平(如果有多期数据)。
- 分析方法:
- 相关分析,初步确认学校氛围、同伴关系、心理健康两两相关。
- 使用多层线性模型(HLM),因为学生嵌套于学校。先建立空模型,计算组内相关系数(ICC),看心理健康差异有多大比例是源于学校间的差异。
- 进行中介效应检验。可以使用结构方程模型(SEM)框架,也可以采用逐步回归法(Baron & Kenny步骤)或更现代的Bootstrap法直接检验中介效应
a*b的显著性。在多层数据中,需要区分层-2(学校氛围)对层-1(同伴关系、心理健康)的影响,可能涉及跨层中介分析,可以使用如Mplus或R的lavaan包进行多水平SEM分析。
- 可能发现与解读:空模型可能显示心理健康有相当比例的学校间差异(比如ICC=10%)。HLM分析可能发现学校氛围指数显著负向预测学生抑郁水平。中介分析可能揭示,学校氛围对心理健康的积极影响,有大约30%-50%是通过提升学生感知的同伴关系质量实现的。这为学校干预提供了精准靶点:营造包容、支持的学校整体环境,能有效促进学生间的良性互动,从而最终守护他们的心理健康。
做CEPS研究,就像玩一个复杂的、但规则清晰的拼图游戏。数据清洗和准备是打好地基,变量选择和测量是找到对的拼图块,统计方法则是正确的拼接手法。这个过程充满挑战,但当你的分析结果清晰地揭示出教育世界中的某个规律或机制时,那种成就感是无与伦比的。我自己的经验是,多读利用CEPS发表的优秀论文,看他们如何定义变量、设计模型、解释结果,然后自己动手复现一遍,这是最快的学习路径。CEPS这座富矿,值得你花时间去深入挖掘,它一定能回报你高质量的研究发现。