信息速览
一条人口曲线要回答的问题,横断面数据大多答不上来。同一户人家今年收入三万、明年收入四万,这中间发生了什么——是换了工作、添了孩子、老人病了、还是搬去了别的城市,只有反复访问同一批人才看得见。中国的全国性调查里,反复访问的设计并不稀缺,但把整个家庭作为追踪单元、并把家户里每一代人都纳入的,只有这一个。
中国家庭追踪调查(China Family Panel Studies, CFPS)由北京大学中国社会科学调查中心执行,2010 年完成全国基线,此后每两年追访一轮。它不挑人群:从新生儿到九十岁老人都在样本之内,成年人问收入与就业,十岁以上的孩子自答认知与心理,更小的孩子由家长代答。这种"全年龄"的设计让它同时被经济学、社会学、人口学、教育学与公共卫生五个圈子使用,而正是这种跨圈共用,造成了对它的大量误读。
它的边界同样清楚:二十五个省区市、不是全部省区;依靠家户完访来带动个人访问、不是独立个人样本;每两年一轮、不是连续记录;以及一条会直接影响今天做 AI 分析方式的硬规定——不得把数据上传到外部人工智能平台。一屏速览见下表。
| 维度 | 内容 |
|---|---|
| 全名 | China Family Panel Studies(中国家庭追踪调查) |
| 执行机构 | 北京大学中国社会科学调查中心(ISSS) |
| 资助 | 北京大学、国家自然科学基金 |
| 首次调查 | 2010 年全国基线 |
| 轮次 | 基线加七轮追访,共八轮全国调查(至 2024 年) |
| 节律 | 每两年一轮,奇数年做样本维护 |
| 覆盖 | 二十五个省区市,基线 162 个区县、635 个村居 |
| 基线规模 | 发放近两万户地址,完访一万四千余户 |
| 基线个人 | 界定基因成员五万七千余人,完成个人访问四万二千五百九十人 |
| 基线应答率 | 家庭层面 81.25%,个人层面 84.14% |
| 追踪单元 | 基因成员及其所在家庭,终身追踪 |
| 问卷类型 | 社区、家庭关系、家庭经济、个人自答、少儿家长代答 |
| 分析层级 | 个人、家庭、社区村居、区县四层 |
| 数据格式 | Stata 与 SAS 数据文件,附问卷与码本 PDF |
| 数据分级 | 公开数据实名下载;限制类数据单独申请 |
| 访问平台 | 官方数据平台与北大开放研究数据平台两套账号 |
| 许可性质 | 用户使用协议,非开放许可 |
§1 它要解决的具体麻烦
1.1 截面数据看不见的那半边
做中国社会与健康研究的人,手上往往有两类材料:一类是统计年鉴与普查,覆盖全、口径统一,但每一年的数字都来自不同的人,变化只能从总体均值上看出一个趋势,看不出是谁在变;另一类是小规模专项调查,问得深、问得细,但样本几百上千,做不了分省、分城乡、分年龄段的比较,也跟不了人。
CFPS 站在这两类之间。它用普查式的抽样方法抽出家庭户,再用追踪调查的方式反复回访同一批人,同时把问卷做得足够深——一个成年人的问卷可以问到他十四岁时家里的经济状况、他一生的婚姻与就业史、他的认知测试得分、他的自评健康与抑郁量表。要回答"早年家庭经济地位如何影响成年后的健康",需要三样东西同时存在:同一批人、跨越十几年的时间跨度、以及足够丰富的可观测变量。国内同时满足这三样的数据不多。
这也解释了它为什么被大量外行文献误用。使用门槛看起来很低——注册一个账号,下载几个 Stata 文件,就可以跑回归;但要跑对,得先理解它到底记录了什么、没记录什么。
1.2 三条常见的错误期待
第一条,期待它是"全中国人口的代表性抽样"。它抽了二十五个省区市,覆盖了绝大部分人口,但抽样框明确不含新疆、西藏、青海、内蒙古、宁夏与海南,也不含港澳台。西部人口稀疏地区与边疆地区在这个数据里没有代表性,用它的数字推算全国人均收入或全国慢病患病率,会把这几块区域的特殊结构吞掉。
第二条,期待它是"个人层面的独立样本"。它的抽样单元是家庭户,不是个人。一个家庭完访之后,家庭成员才逐个进入个人问卷;如果家庭当年的成员关系问卷没做完,这一户的所有个人都不会出现在当年的个人库里。这意味个人的"是否被访问"与家庭高度相关,把个人库当作个人随机抽样来分析,会低估标准误。
第三条,期待它"每一轮都问同样的问题"。追踪调查要保持问题稳定才能比较变化,但二十多年里中国社会变化太大,问卷必须跟着改。合并口径、增删模块、更换量表都发生过,其中几次改动会直接让跨轮比较失效,除非使用官方提供的可比变量。§4.3 的案例会具体展示这一类断层。
1.3 它能给到的与给不到的
| 你的需求 | 它给的 | 够不够 |
|---|---|---|
| 追踪同一批人的收入、就业、婚姻变化 | 每两年一轮的个人自答问卷,pid 跨轮不变 | 够,这是它最核心的能力 |
| 家庭结构、代际关系与分家过程 | 家庭关系库,含配偶、父母、子女的关系人 pid | 够,国内少有同类资源 |
| 早年家庭环境对成年结果的影响 | 十四岁时家庭与父母状况的回溯模块 | 可做,但为事后回溯,有回忆偏差 |
| 全年龄段健康与慢病 | 自评健康、医生诊断慢病、心理健康量表 | 部分够,无体格测量与生物样本 |
| 老年期的功能受限与照护 | 只有一般健康问题,无 ADL/IADL 专门量表 | 不够,应改用 CHARLS |
| 营养摄入与膳食结构 | 无膳食回顾,仅有食品支出 | 不够,应改用 CHNS |
| 抑郁的临床诊断 | CES-D 量表得分,非诊断 | 不够,只能做症状筛查 |
| 认知能力的标准化测评 | 识字测试与数学测试,Guttman 设计 | 可做,但仅面访自答者才有 |
| 精确的地理位置与地址 | 仅省级可识别,省级以下需申请 | 不够,空间分析的颗粒度很粗 |
| 全国每一个人口的无偏估计 | 二十五省区市,含过度抽样 | 需权重与口径说明后才能用 |
1.4 你的处境与它能帮到的事
| 你的处境 | 它能帮你什么 | 下一步该做什么 |
|---|---|---|
| 你要做代际流动或教育回报,手上只有单年截面 | 同一批人十余年的教育与收入记录,且家庭背景由父母问卷独立报告 | 先确定用哪一轮做主样本,再向前或向后串联同一 pid 的记录;务必读跨年库清理报告 |
| 你在做健康不平等,关心童年逆境对成年健康的影响 | 十四岁家庭状况模块加成年后的健康与心理量表 | 注意该模块是回溯性询问,需在方法节说明回忆偏差并做稳健性检验 |
| 你要研究人口迁移与家庭分离 | 外出成员的家庭代答记录、离家单元与原家庭的经济联系变量 | 先弄清楚你采用哪一种流动定义,官方文档给出至少三种界定方式 |
| 你要做少儿发展研究,关注学龄前与学龄期 | 少儿家长代答问卷,含认知、社会行为与教养方式 | 确认你要的年龄段在 2018 年问卷整合后的哪个部分,口径有变 |
| 你的团队要做问卷设计,需要参考成熟量表 | 全套问卷 PDF 与码本公开,含认知测试、人格、社会态度模块 | 引用时注明来源,按官方要求不得整份转载问卷 |
| 你在校核一篇用 CFPS 发表的论文 | 技术报告系列与跨年库清理报告可查口径 | 对照该文使用的轮次与变量,检查是否用了不可比的跨轮口径 |
| 你想把它接到大模型流水线里做自动标注 | 协议明确禁止上传外部 AI 平台 | 只能在本地环境做规则化处理,见 §5.5 |
1.5 一句话判断
它是中国唯一把"全年龄"和"全家庭"同时做到底的大型追踪调查,价值不在单轮样本有多大,而在同一批人身上积累了八轮可对齐的记录;代价是它的每一条边界都必须在使用前说清楚,否则结论会悄无声息地越界。
1.6 不适合谁:四条边界
不适合做全人群的疾病负担估计。 它的健康模块以自评与自报诊断为主,没有体格测量、没有血液样本、没有病历链接。想知道高血压患病率,不如用 CHARLS 或全国慢性病监测;想解释高血压为什么在某一代人身上更常见,它才有位置。
不适合做临床或流行病学的干预评估。 它不是临床试验,没有对照组、没有干预记录、没有随访终点定义。用它的数据模拟干预效果,只能做观察性关联,不能做因果效应的强推断。
不适合做精细地理分析。 省级以下地址在公开数据里被再编码,具体到市、县、乡镇、村居的名称与国标码需要单独申请并在机房内使用。想在县域层面做空间聚集分析,它的颗粒度不够,而且申请周期约三周。
不适合直接喂给云端 AI 工具。 协议第五条把这条写得非常明确。如果你的研究流程依赖云端大模型做文本清洗、变量推断或自动编码,要么改成本地模型,要么放弃这个数据源。
§2 数据构成与规格
2.1 五个库,一层套一层
CFPS 的数据不是一个大表,而是一组按观测层级分开的库。每轮调查先从家庭关系库开始,记录这户人家有哪些人、彼此什么关系;家庭关系库完成之后,才会派生家庭经济问卷与个人问卷。这个生成顺序决定了一个重要事实:家庭关系库没完成,后面所有库都不会有这户的任何人。
按 2020 与 2022 两轮的官方数据库介绍,公开数据至少包含四个库:
| 库名(中文) | 库名(英文缩写) | 观测单位 | 一行是谁 |
|---|---|---|---|
| 家庭关系库 | famconf | 家庭成员 | 一位被界定的家庭成员 |
| 家庭经济库 | famecon | 家庭户 | 一个家户 |
| 个人库 | adult(旧称)或 person | 个人 | 一位完成个人自答问卷的成员 |
| 少儿家长代答库 | child | 儿童 | 一位零至十五岁、由其家长代答的儿童 |
| 跨年个人核心变量库 | crossyearid | 个人 | 一位曾进入样本的个人,跨全部轮次一行 |
社区问卷是第五类采集工具,但公开数据中的社区库覆盖率不稳定,官方材料显示 2010 年与 2014 年有社区层数据,2012 年与 2016 年标为空缺。做社区层面的分析前,必须先确认目标轮次是否发布社区库。
2.2 字段与记录的完整字典
下表把每轮数据里最常被用到的关键变量按来源库归类。名字以 2020、2022 两轮为主,早期轮次的命名稍有差异。
| 变量名 | 所在库 | 含义 | 类型 | 注意事项 |
|---|---|---|---|---|
| pid | 家庭关系库、个人库 | 个人唯一识别码 | 字符串,九位 | 跨轮不变,前六位原属家户号 |
| fidXX | 家庭关系库、家庭经济库 | 第 XX 年的家户号 | 字符串 | XX 是年份后两位,如 fid20、fid22 |
| fid10 / fid12 / fid14 | 跨年库 | 个人在各轮所在家户 | 字符串 | 分家后同一人会有多个不同 fid |
| gene | 家庭关系库 | 是否基因成员 | 0/1 | 基因成员永久追踪 |
| corememberXX | 家庭关系库 | 当年是否核心成员 | 0/1 | 只当年有效,次年可能失效 |
| pid_s | 家庭关系库 | 配偶的 pid | 字符串 | 含 -8、77 等特殊值 |
| pid_f / pid_m | 家庭关系库 | 父亲、母亲的 pid | 字符串 | 同上 |
| pid_c1 至 pid_c10 | 家庭关系库 | 子女的 pid | 字符串 | 最多十个槽位 |
| inrosterXX | 跨年库 | 当年家户成员问卷是否完访 | 0/1 | 未完访则该户个人全部缺失 |
| indsurveyXX | 跨年库 | 当年属于哪一类个人库 | 多值编码 | 2018 年起编码体系变化 |
| selfrtpXX | 跨年库 | 是否本人自答 | 0/1 | 代答样本不是自答 |
| co_aXX_p | 跨年库 | 与经济单元的关系 | -8 起 | -8 表示不在当年关系库 |
| wordtestXX | 个人库 | 识字测试得分 | 0 至 34 | 仅面访自答者才有 |
| mathtestXX | 个人库 | 数学测试得分 | 0 至 24 | 同上 |
| wordtestXX_sc2 | 个人库 | 允许降级重测后的得分 | 0 至 34 | 2014 年起才有,与旧分不可比 |
| CESD 系列 | 个人库 | 抑郁量表总分 | 连续 | 2012 年二十题,2018 年八题 |
| CESD20sc | 个人库 | 等化后的二十题分数 | 连续 | 跨 2012 与 2018 才有 |
| rswt_nat / 权重系列 | 各库 | 全国代表性权重 | 连续 | 分全样本与再抽样两套 |
需要强调表中的后两列:pid 与 fidXX 是两个不同层级的键,混淆它们是最常见的连接错误。pid 前六位在基线时来自家户号,但一个人分家之后会有一个新的 fidXX,而 pid 不会变。用 pid 前六位当作家户识别,会把分家之后的家庭成员错误地归回原户。
2.3 一条记录的完整解剖
下面用 2022 年家庭关系库的一行做解剖,字段值取自官方清理报告中的变量说明与示例结构,仅示意结构用途。
pid = 100453521
fid22 = 100453 #-- 2022 年所在家户
fid20 = 100435 #-- 2020 年所在家户,与 2022 年不同
fid18 = 100453 #-- 2018 年所在家户
gene = 1 #-- 基因成员,永久追踪
coremember22 = 1 #-- 2022 年为核心成员
pid_f = 100435101 #-- 父亲
pid_m = -8 #-- 母亲信息未采集到
pid_s = 100453431 #-- 配偶
pid_c1 = 100453551 #-- 长女
pid_c2 = 77 #-- 存在子女但不在个人样本库
indsurvey22 = 4 #-- 只在个人库
selfrtp22 = 1 #-- 本人自答
wordtest22 = 22 #-- 识字测试,与 2010 年可比口径
mathtest22 = 11 #-- 数学测试
这一行里最值得注意的不是数值,而是 fid20 与 fid22 不一致。这个人 2020 年在 100435 号家户,2022 年出现在 100453 号。原因可能是分家、婚姻、搬迁,也可能是 2020 年那轮因为电访漏掉了原户而被并进了旁边一户。跨年追踪这类变动时,官方提供的跨年个人核心变量库是唯一一次能在一行里看到全部 fid 的地方,直接在不同年份的个人库里横向 merge 会丢样本。
2.4 各库在最近两轮的规模
官方 2020 年与 2022 年的数据库介绍报告给出了四大库的样本量与变量数,这是判断"这一轮能做什么"最直接的依据。
| 数据库 | 2020 样本量 | 2020 变量数 | 2022 样本量 | 2022 变量数 |
|---|---|---|---|---|
| 家庭关系库 | 51291 | 297 | 47328 | 298 |
| 家庭经济库 | 11620 | 327 | 10726 | 331 |
| 个人库 | 28529 | 1272 | 27001 | 1283 |
| 少儿家长代答库 | 6985 | 293 | 6228 | 311 |
这张表需要配三句解释。第一,家庭关系库的"样本量"是成员行数,不是家户数;2022 年这四万七千余行来自一万二千二百五十一户。第二,个人库的变量数在一千二百上下,是中国公开数据里最宽的个人层宽表之一,这也意味着做机器学习时特征维度高、缺失结构复杂。第三,家庭经济库观测数只有个人库四成左右,因为一户一份经济问卷,而一户可有多名成年人。
2.5 与同类资源的字段差异
| 对比项 | CFPS | CHARLS | CHNS |
|---|---|---|---|
| 目标人群 | 全年龄家庭成员 | 四十五岁及以上 | 固定省区的城乡居民 |
| 抽样单元 | 家庭户,三阶段概率规模成比例 | 县、村、户多阶段 | 固定省区固定县数的分层抽样 |
| 追踪规则 | 基因成员终身追踪 | 受访者及其配偶追踪 | 家庭户与原个体追踪 |
| 体格测量 | 无 | 血压、握力、步速等 | 身高体重、血压 |
| 生物样本 | 无 | 静脉血,含多项生化指标 | 部分轮次静脉血 |
| 膳食数据 | 无膳食回顾 | 有食物频率 | 三日回顾加家庭记账 |
| 认知测量 | 识字与数学测试 | 多量表组合 | 个别轮次含认知 |
| 心理健康 | CES-D,轮次间题数变化 | CES-D 十题 | 以自评与量表为主 |
| 数据访问 | 实名注册,分级共享 | 实名注册 | Dataverse 集合,部分需协议 |
| 地理颗粒度 | 省级公开,以下需申请 | 省级公开 | 社区层需协议 |
这张表的核心信息不是谁更好,而是三者不可互相替代。用 CFPS 估算中国老年人功能受限患病率会低估,因为它的老年样本是家庭抽样自然带来的,不是针对老年人设计的;用 CHARLS 研究青少年的教育获得则会缺掉整个童年段。选哪一个取决于你的研究问题落在哪一代人身上。
§3 它是谁的数据:一个中心的长期工程
3.1 执行者、资助者与数据所有权
CFPS 由中国家庭追踪调查项目办公室直接管理,办公室设在 ISSS。数据集的作者署名统一写作北京大学中国社会科学调查中心,联系邮箱是项目组服务邮箱,发布者与提交者同为项目办公室。资助方在元数据里登记为北京大学与国家自然科学基金。
这个结构带来一个实际后果:它不是一个可以商用授权的数据集。协议第六条限定只能用于个人学术或政策研究活动,不得用于任何盈利活动。企业想拿它做用户画像、 insurers 想拿它做精算,都在禁止之列。
3.2 五类问卷的分工
官方描述的五种主体问卷,各有各的回答人,这个分工决定了数据里每个字段的"报告者"是谁:
| 问卷 | 受访或回答者 | 观测层级 | 主要内容 |
|---|---|---|---|
| 社区问卷 | 熟悉情况的村居干部 | 村居 | 基础设施、人口构成、公共服务 |
| 家庭关系问卷 | 最了解家庭关系的成员 | 家庭 | 成员名册、关系、外出与代答 |
| 家庭经济问卷 | 最了解家庭经济状况的成员 | 家庭 | 收入、支出、资产、负债 |
| 个人自答问卷 | 十岁及以上本人 | 个人 | 教育、就业、健康、认知、态度 |
| 少儿家长代答问卷 | 零至十五岁儿童的家长 | 儿童 | 发育、健康、教育、教养 |
请注意家庭关系问卷与经济问卷的回答者是两个不同角色,可以不是同一个人。这在解读家庭层面变量时很重要:收入是"最懂经济的那个人"报告的,成员关系是"最懂家庭关系的那个人"报告的,二者对同一件事的判断可能不一致。
3.3 十岁这个门槛
个人自答问卷的年龄门槛是十岁,少儿家长代答覆盖零至十五岁,两者在十至十五岁重叠。2018 年之前,成人问卷针对十五岁以上,少儿问卷针对零至十五岁,边界在十五岁;2018 年整合之后,边界挪到了十岁,十六岁以下的部分由家长补充代答。
这个看似技术性的调整对做青少年研究的人影响很大。同一批在 2016 年是十四岁的孩子,在 2018 年是十六岁,他们从少儿问卷的自答部分转到了个人自答问卷,题目、模块、跳转逻辑都变了。§4.3 的案例会说明这条断线具体怎么处理。
3.4 谁被追踪:基因成员与核心成员
CFPS 的追踪规则是整个设计的骨架,官方用"基因成员"来指代需要终身追踪的人:
| 身份 | 界定方式 | 是否追踪 | 是否产生个人问卷 |
|---|---|---|---|
| 基因成员 | 2010 年基线界定的家庭成员,及其此后新生或领养子女 | 终身 | 是 |
| 核心成员 | 当年与基因成员同户的直系亲属(父母、配偶、子女) | 关系存续期间 | 是 |
| 非核心成员 | 当年家中既非基因也非核心的成员 | 否 | 否,仅他人代答 |
| 新进入样本的个人 | 因婚姻、出生、领养进入基因成员家庭 | 视关系而定 | 视身份而定 |
这套规则的意义在于:CFPS 追踪的不是"户",而是"人"。户会分、会合、会消失,但只要基因成员在,追踪就不会停。2022 年的家庭关系库中,基因成员占 83.0%,核心成员占 12.2%,非核心成员占 4.8%。这三个比例的稳定性说明,样本的骨架二十多年没散。
3.5 一个必须说清的机构细节
CHARLS 与 CFPS 都由 ISSS 参与,二者在 ISSS 网站上并列展示,共用同一批调查管理与质量控制体系,也因此常被并称为"中心的两大追踪调查"。但两者不是同一个项目:CFPS 的目标人群是全年龄家庭成员,CHARLS 聚焦四十五岁及以上;CFPS 不含生物样本,CHARLS 有多轮静脉血采集;CFPS 的追踪单元是基因成员,CHARLS 是受访者及其配偶。库内已有 CHARLS 词条,两者在本站的关系见 §6。
§4 它最独特的东西:同一批人被反复量了八次
4.1 纵向性不是"轮次多",而是"人不变"
很多调查做了很多轮,但每一轮都是新样本,那不叫追踪,叫重复横断面。CFPS 的纵向性来自三点:pid 跨轮不变、基因成员终身追踪、以及家户号随结构变化更新而不是重置。三点合起来,才使得"一个人从十岁跟到二十四岁"这种分析可行。
八轮的时间轴如下,早期几轮是官方多处材料交叉核对的,最近两轮取自 ISSS 年度报告与数据库介绍报告:
| 轮次 | 年份 | 家庭层面完成 | 个人层面完成 | 说明 |
|---|---|---|---|---|
| 基线 | 2010 | 14960 户 | 42590 人 | 成人三万三千余,少儿近九千 |
| 维护 | 2011 | 13130 户 | 8803 人 | 仅青少年与家庭层,非全样本 |
| 第二轮 | 2012 | 13459 户 | 44339 人 | 首次全样本追访 |
| 第三轮 | 2014 | 14237 户 | 45738 人 | 引入事件史日历 |
| 第四轮 | 2016 | 14810 户 | 约四万七千 | 家庭代答与个人代答扩展 |
| 第五轮 | 2018 | 约一万五千 | 约四万四千 | 问卷整合,应答率下行 |
| 第六轮 | 2020 | 约一万六千 | 约六万六千份问卷 | 疫情,电访为主 |
| 第七轮 | 2022 | 12967 户 | 55209 份问卷 | 跨轮应答 78%,电访占九成六 |
| 第八轮 | 2024 | 14155 户 | 63009 份问卷 | 回归面访为主,跨轮应答 80% |
表中 2011 年那一轮常被误解为一次完整追访。它不是。官方说明这一轮只访问了基线中十八岁及以下的青少年基因成员,以及基线完访的家庭,对成年基因成员、新生儿与新组成家庭都没有采信息。把 2011 年当作一个完整轮次做时间序列,会得到一条假的断点。
4.2 应答率的形状
应答率不是越高越好,也不是线性下降,它随调查模式变化:
| 轮次 | 家庭层面应答率 | 个人层面应答率 | 主要模式 |
|---|---|---|---|
| 2010 | 81.25% | 84.14% | 面访为主 |
| 2012 | 85.1% 跨轮追踪 | 80.6% 跨轮追踪 | 面访加少量电访 |
| 2014 | 89% 跨轮追踪 | 84% 跨轮追踪 | 面访加电访 |
| 2016 | 88% 跨轮追踪 | 83% 跨轮追踪 | 电访比例升到一成九 |
| 2018 | 86.6% 跨轮追踪,69.3% 截面 | 80.8% 跨轮,67.4% 截面 | 电访为主 |
| 2020 | 77% 跨轮追踪,62% 截面 | 65% 个人自答 | 疫情,电访主导 |
| 2022 | 78% 跨轮追踪 | 76% 问卷完访 | 电访占九成六 |
| 2024 | 80% 跨轮追踪 | 83% 问卷完访 | 回归面访为主 |
两组数字要分开看。"跨轮追踪率"的分母是上一轮完访的家庭,"截面应答率"的分母是当年全部合格样本。2018 年官方同时给出 86.6% 与 69.3%,正是这两个口径。引用时如果不说明分母,同行无法复现。
4.3 案例:一条抑郁量表的二十年断层
这是理解 CFPS 跨轮可比性问题最干净的一个例子。
2012 年的成人问卷用的是二十题版 CES-D。访员反馈题目太多、受访者接受度不高,项目组在 2016 年做了一个随机化设计:一部分样本用精简的八题版,另一部分仍用二十题版,目的是建立两套题目的等值关系。到 2018 年,全部样本改用八题版,并用 2016 年随机分配得到的对应关系,采用百分位等化方法生成了一个"可比的二十题总分",变量名 CESD20sc。
这条处理链有三层风险,逐层说明。
第一层是等值本身。百分位等化是心理测量学里的标准做法,前提是两套题目测的是同一个潜在构念、且在同一个总体里满足单调同质。CFPS 用 2016 年的随机样本建立映射,再用到 2018 年,中间隔了一轮,总体结构可能已变。
第二层是版本选择。官方明确建议:如果分析只用 2016 或 2018 年,用八题版总分;如果要和 2012 年并在一起,用 CESD20sc。这意味着做跨轮面板时,2012 年用原始二十题分、2016 与 2018 年用等化分,2010 年用哪一套,要看该轮是否采集了完整量表——官方材料显示 2010 年与 2018 年都用过八题版本,这说明 2010 年的数字其实是八题分,不能直接与 2012 年的二十题分并列。
第三层是缺失结构。量表题数变化之后,"完整作答"的定义也变了。八题版只要漏答一题,总分就可能是缺失;二十题版的缺失概率更高。跨轮合并时,缺失率在两个方向上都不同,直接 dropna 会让样本在不同轮次间不可比。
§4.3 的案例在 §5.4 与 §7.3 还会各出现一次,用来展示代码层面的处理与偏差层面的后果。
4.4 认知测试:两套分数的并存
教育研究者用得最多的认知变量是识字测试与数学测试。设计沿袭 Guttman 量表:按难度排序,受访者从与其教育水平匹配的起点开始答,连续答错三题即终止,得分取答对的最高题号。
2014 年起引入一个改动:如果受访者在高起点第一题就答错,允许降到更低一级起点重试。这提高了估计准确性,但改变了分数的含义。于是官方给出两套分数:
| 变量 | 含义 | 适用场景 |
|---|---|---|
| wordtestXX_sc2 | 按新规则计分,允许降级 | 只用 2014 年及以后 |
| wordtestXX | 假设起点固定时的分数 | 需要与 2010 年比较时 |
| mathtestXX_sc2 | 数学,新规则 | 同上 |
| mathtestXX | 数学,与 2010 年可比 | 同上 |
官方给出的相关性是:识字测试两套得分相关系数接近 1,数学测试超过 0.97。相关性高不代表可以互换,做跨 2010 年的分析必须用可比版本,这是官方在技术报告里写明的要求,不是建议。
4.5 另一条硬约束:认知测试只有面访自答者才有
官方技术报告明确说明,认知测试只在个人自答的面访模式下采集,接受电话访问的个人或只有代答数据的个人没有相关数据。这一条在 2020 与 2022 两轮尤其关键,因为这两轮电访占绝对多数。
这意味着如果你用 2020 年的认知分数做分析,你的样本实际上是一个"面访且自答"的子集,而不是当年全部完访个人。这个子集的构成随轮次变化:2016 年电访占比一成九,2020 与 2022 年跃升到九成以上,能提供认知分数的人相对变少,且更可能集中在不便使用电话的人群。任何跨轮比较认知水平的分析,都必须先核对各轮认知变量的非缺失比例与这部分的构成。
4.6 教育、收入与权重的三处口径
除了量表,还有三处口径变化反复出现在方法节里。
教育变量在 2018 年前后调整过编码层级,部分学历类别的映射变了。做受教育年限的构造,必须逐年对照码本,不能用一套映射套全部轮次。
收入模块在 2012 年之后增加了自产农产品价值、个体经营收入、农业雇工工资、奖助学金等来源,2014 年起结构稳定。这意味着 2010 年与 2012 年的家庭收入总额天然偏低,跨轮比较收入水平必须使用官方提供的可比口径,或者明确声明只比 2014 年之后。
权重是第三个坑。官方为 2010 年提供了家庭、成人、少儿三套数据在全国全样本与全国代表性两套口径下的权重,且每套权重又分为抽样设计权重、无应答调整权重、事后分层调整权重与截尾。用错一套,估计值就偏。后续轮次的权重变量名在每一轮不同,且肝年套用是常见错误。
§5 怎么拿到:从注册到可分析表
5.1 两个平台,两套账号
CFPS 的数据分布在两个平台上,账号不互通:
| 平台 | 地址 | 覆盖内容 | 账号 |
|---|---|---|---|
| CFPS 官方数据平台 | cfpsdata.pku.edu.cn | 最新轮次公开数据、限制数据申请 | 新注册或旧平台账号 |
| 北大开放研究数据平台 | opendata.pku.edu.cn | 2010 至 2022 年的历史版本与预调查 | 平台自身账号 |
官方在多个渠道提醒:北大开放平台用户与 CFPS 平台不互通。如果你只需要历史轮次,开放平台更方便,它有稳定的 DOI 与文件版本记录;如果你要最新轮次与限制数据,必须走 CFPS 官方平台。北大师生可以用校园卡账号直接登录官方平台,但仍需补充个人信息并等待审核。
5.2 注册与审核的实操
注册流程本身很简单,但有几个容易卡住的点:审核不是实时的,官方说一般较快但密集申请期会慢;注册时需要填写机构与使用目的;审核通过后才看得到公开数据集列表。官方还专门提示,如果一个平台处在维护期,可以改用另一个平台注册。
#-- 检查官方站点与数据平台是否在线,先确认跳转链路正常
curl -sI -o /dev/null -w "isss %{http_code}\n" "http://www.isss.pku.edu.cn/cfps/"
curl -sI -o /dev/null -w "cfpsdata %{http_code}\n" "https://cfpsdata.pku.edu.cn/"
curl -sI -o /dev/null -w "opendata %{http_code}\n" "https://opendata.pku.edu.cn/dataverse/CFPS"
这三条命令只做连通性判断。注意 ISSS 域名在过去曾整体更换过一次,官方公告里保留了新域名的说明,早期文献里的链接可能已失效。
5.3 从开放平台取元数据与文件清单
北大开放平台提供 Dataverse 标准接口,可以在不登录的情况下取到数据集元数据与文件清单。这对写方法节、核对版本号很有用。
#-- 取 CFPS 数据集的版本号、发布者与文件清单(不需登录,但文件本体需申请)
curl -s "https://opendata.pku.edu.cn/api/datasets/:persistentId/?persistentId=doi:10.18170/DVN/45LCSO" \
-o cfps_meta.json
python3 - <<'PY'
import json
d = json.load(open("cfps_meta.json"))
v = d["data"]["latestVersion"]
print("版本", v["versionNumber"], ".", v["versionMinorNumber"], "发布", v["releaseTime"])
print("文件数", len(v["files"]))
for f in v["files"]:
label = f.get("label", "")
if label.endswith(".rar"):
print(label)
PY
这段代码的要点是:label 字段才是人类可读的文件名,dataFile.filename 是存储层文件名,两者在早期版本里不一定一致。官方数据集中确有文件名重复后缀的情况,比如某年中文 Stata 包的名字以 .rar.rar 结尾,按扩展名筛选时要容忍这一点。
5.4 把家庭关系库与个人库按 pid 接起来
拿到数据后第一个动作通常是连接。下面是连接家庭关系库与个人库的最小骨架,使用 pandas,逻辑对 2018 年之后的结构适用。
#-- 家庭关系库一行一个成员,个人库一行一个完访个人:按 pid 左连
import pandas as pd
famconf = pd.read_stata("cfps2022famconf.dta", convert_categoricals=False)
person = pd.read_stata("cfps2022person.dta", convert_categoricals=False)
print("关系库行数", len(famconf), "个人数", famconf["pid"].nunique())
print("个人库行数", len(person))
#-- 关系库成员数应大于个人库:只有完访者才进个人库
merged = famconf.merge(person, on="pid", how="left", suffixes=("", "_p"), indicator=True)
print(merged["_merge"].value_counts())
#-- 只有基因成员或核心成员才应该产生个人问卷
print(pd.crosstab(merged["gene"], merged["_merge"]))
运行结果会揭示一个常被忽略的事实:关系库里有一部分成员在个人库里找不到,这不是数据错误,而是两种情况——他们不是基因成员或核心成员,或者他们因为是年未完访而没有进个人库。§2.2 的字典里 gene 与 coremember22 两个变量就是用来区分这两种情况的。
连接家庭经济库时不能按 pid,必须按 fidXX,因为家庭经济库一行是一个家户。这是一对多连接:一个家庭有多个个人,合并后个人行数不变但家庭变量被复制。
#-- 家庭经济库一行一户,按 fid22 一对多连接:结果行数应等于个人库行数
famecon = pd.read_stata("cfps2022famecon.dta", convert_categoricals=False)
before = len(person)
merged2 = person.merge(famecon, on="fid22", how="left", indicator=True)
print("合并前", before, "合并后", len(merged2))
print(merged2["_merge"].value_counts())
如果合并后行数变多,说明家庭经济库里同一 fid22 有重复记录,这在早期版本的清理瑕疵里出现过;官方在新版本里通常会修正,用老版本时要自己检查。
5.5 跨年追踪:用跨年库而不是逐年拼
跨年的正确做法是用官方发布的跨年个人核心变量库。它把所有曾进入样本的个人放在一行里,横向排列各轮的 fid、访问状态与核心变量。
#-- 跨年库一行一个个人,列名带年份后缀:看一个人的全部轮次轨迹
import pandas as pd
cy = pd.read_stata("cfps2022crossyearid.dta", convert_categoricals=False)
one = cy[cy["pid"] == "100453521"]
cols = [c for c in cy.columns if c.startswith(("fid", "inroster", "indsurvey", "selfrtp", "co_a"))]
print(one[["pid"] + cols].T)
输出会把这个人从进入样本到 2022 年的全部状态排成一列,包括哪一轮在家、哪一轮外出、哪一轮未完访。官方清理报告里说明,跨年库的取值可能与已发布的单轮库有少量差异,因为跨年一致性核查会修正一部分明显矛盾的观测;如果两者冲突,官方建议以最新版本的跨年库为准,并在论文里说明版本。
5.6 在禁止上传的前提下做自动化处理
协议第五条禁止把数据或其衍生集上传到外部人工智能平台。这不等于不能用程序处理数据,而是处理必须在本地完成。下面这条原则可以写进团队规范:
#-- 本地数据处理守则:数据不出机器,模型不出内网
#-- 1 原始与衍生数据只放在机构内网的加密盘,不上个人网盘
#-- 2 需要大模型辅助时,用本地部署的开源模型,输入前先做去标识化
#-- 3 任何外发材料只含聚合统计量,不含 pid、fid 与个体行
#-- 4 把这份守则与 CFPS 用户协议一起存档,供伦理审查与合著者签阅
echo "checklist written"
需要提醒的是,去标识化不等于安全。CFPS 的 pid 是九位结构码、前六位带家户信息,即使删掉 pid,只要保留足够多的家庭特征组合,仍可能通过外部信息重新识别到具体家庭。官方对限制数据的管控正是基于这一点,所以不要在"反正已经删了姓名"的心态上放松。
§6 与库内条目的关系
6.1 关系图谱
库里已经有一批中国调查类资源,与 CFPS 最容易混的是三家。下面先给一张定位表,再逐条说区隔:
| 库内条目 | 定位 | 与 CFPS 的关系 |
|---|---|---|
| charls | 四十五岁及以上老龄健康与养老全国追踪 | 同中心参与,人群互补,变量域重叠但测量深度不同 |
| chns | 固定省区的营养与健康长期追踪 | 时间跨度更长,膳食与生化更深,人群不重叠 |
| cfps(本篇) | 全年龄家庭与个人追踪 | 唯一以家庭为追踪单元、覆盖全部年龄段的大型调查 |
从检索角度看,这三家的词条常被同一批使用者连着看,平台的相关推荐应按"人群互补"而不是"相似度"来做,否则会把三个不可拼接的数据源推成一套可拼接的数据源。
6.2 逐条区隔:CFPS 与 CHARLS
这是最容易混的一对,因为二者都由 ISSS 参与、都在北大、都在 ISSS 网站并列展示,且都叫"中国某某追踪调查"。
| 维度 | CFPS | CHARLS |
|---|---|---|
| 目标人群 | 全年龄家庭成员 | 四十五岁及以上中老年人及其配偶 |
| 基线 | 2010 | 2011 至 2012 |
| 抽样框 | 二十五省区市,含五个大省过度抽样 | 二十八省区、一百五十个县、四百五十个村居 |
| 追踪单元 | 基因成员终身追踪 | 受访者及其配偶追踪 |
| 体格测量 | 无 | 血压、握力、步速、坐立等 |
| 生物样本 | 无 | 静脉血,含血常规、炎症、血糖血脂等 |
| 健康测量 | 自评、慢病自报、CES-D | 功能量表、慢病、认知多量表、抑郁 |
| 养老与退休 | 有就业与养老金信息,非专向 | 专向模块,含退休、养老金、代际转移 |
| 典型用途 | 代际流动、教育回报、家庭结构 | 老龄化、失能、慢病、养老保障 |
| 公开规模 | 个人库约两万八千行(2020) | 基线一万七千余人 |
一句话区分:想知道"一个人从童年到中年发生了什么",用 CFPS;想知道"一个六十岁的人能不能自己洗澡、血糖多少",用 CHARLS。两者的老年样本不可互换,CHARLS 的样本是为老年人设计的,CFPS 的老年样本是家庭抽样自然带出来的。
6.3 逐条区隔:CFPS 与 CHNS
| 维度 | CFPS | CHNS |
|---|---|---|
| 起始年份 | 2010 | 1989 |
| 覆盖范围 | 二十五省区市 | 十五个省区,固定县数 |
| 抽样逻辑 | 全国代表性设计,按人口规模成比例 | 按收入分层固定抽县 |
| 节律 | 每两年 | 不定期,多轮 |
| 膳食 | 无 | 三日回顾加家庭称重记账 |
| 生化 | 无 | 部分轮次 |
| 家庭结构 | 家庭关系库,关系人 pid 完整 | 有家庭成员表,但结构较简 |
| 追踪难度 | 基因成员终身 | 家庭户与个体,迁移流失较明显 |
| 典型用途 | 社会分层、教育、家庭 | 营养转型、慢病、膳食与收入关系 |
两者的时间维度完全不同:CHNS 从八十年代末开始,能看到改革开放之后的营养转型全过程;CFPS 从 2010 年开始,能看到近十余年的社会变迁。如果研究问题是"膳食结构变化如何影响慢病",CHNS 是唯一选择;如果是"家庭结构变化如何影响子女教育",CFPS 更合适。
6.4 为什么不能把三家拼在一起
一个常见的错误想法是:既然三家都覆盖中国,能不能把它们的样本合并,扩大样本量。不能,理由有三层。
第一层是抽样框不同。三家的省区、县、村居都不同,合并之后的样本既不是任何一家的设计样本,也不是一个新的概率样本,权重无从计算。
第二层是变量定义不同。同样是"收入",CFPS 问的是家庭总收入与分项,CHNS 问的是家庭收入与个体收入且分项更细,CHARLS 问的是家庭转移支付与个人收入。合并之后的"收入"是一个语义混杂的变量。
第三层是测量时机不同。CFPS 是隔年、CHNS 是不定期、CHARLS 是隔两到三年,同一年份的三家数据对应的其实不是同一个时点的社会状态。
正确做法是做交叉验证,而不是合并。用 CFPS 估计的一个趋势,在 CHARLS 的年龄匹配样本上看方向是否一致,在 CHNS 的早期年份上看是否能接上,这是合理的外部验证,不是样本拼接。
§7 质量评估与局限性
7.0 阅读本节前的一个前置校正
先纠正一个常见误判:把"非全国概率样本"读成"数据质量差"。这两件事不是一回事。抽样框决定的是推断范围,数据质量决定的是测量可靠程度。CFPS 排除了西部若干省区,意味着你不能把它的数字外推到全国每一个人,但这不意味着它测到的东西不准。
第二个需要校正的误判是把"应答率下降"读成"数据变差"。2020 年家庭层面截面应答率降到 62%,主要原因是疫情期间电访为主、部分家庭搬离原址且无可联系的电话。应答率下降带来的是选择性缺失——更可能失联的家庭往往更年轻、更流动——而不是测量误差增大。官方为此提供了逐轮更新的无应答调整权重,用对权重比担心应答率更有意义。
第三个误判是把"官方的数字之间不一致"读成"官方错了"。官方材料里同一件事确实存在多个口径:人口覆盖率有百分之九十五与九十四点五两种写法,2012 年的个人完访数在不同文献里有四万四千三百三十九与四万二千九百七十两种,2016 年的个人数有约四万七千与四万一千七百六十一两种。这些差异来自统计时点、是否含代答、以及不同版本清理报告的修订。这种情况应并列两套口径并注明差额官方未说明,不要挑一个当正确值。
7.1 五维评分
按 DAIMS 的常用维度打分,每项一至五分,分数针对"作为中国社会与健康变化研究数据"这个用途。
| 维度 | 分数 | 理由 |
|---|---|---|
| 数据规模 | 4 | 基线一万四千余户、四万二千余人,八轮累计样本更宽 |
| 测量质量 | 4 | 问卷设计成熟,质量控制有电话、实地、录音三层核查 |
| 时间覆盖 | 5 | 八轮十六年,个体编号全程可对齐,国内罕见 |
| 文档完整 | 5 | 用户手册、技术报告、码本、清理报告体系完整 |
| 可获取性 | 3 | 免费但须实名,分级共享,限制数据申请周期长 |
合计二十一分。这个结构的含义是:它最强的两项是时间覆盖与文档,最弱的是获取门槛。一个团队要用好它,一半的工作量不在分析,而在读文档。
7.2 测量质量的两层
第一层是问卷层面。CFPS 的问卷设计参考了美国收入动态追踪调查、健康与退休调查以及青年追踪调查的成熟模块,认知测试、人格量表、社会态度都用了经过验证的工具。质量控制手段在官方元数据里写得很具体:电话核查、实地核查、录音核查、访谈过程回放、统计分析。
第二层是清理层面。官方对原始数据做了逻辑一致性核查、极值核查与文字信息再编码。文字信息再编码这一项尤其重要:大量开放题与"其他请注明"的答案被人工编码成标准类别,这部分的工作质量直接决定了类别变量的可用性,而它恰恰是外部使用者最难评估的部分。
| 环节 | 质量控制手段 | 外部使用者能否复核 |
|---|---|---|
| 访问过程 | 电话、实地、录音三重核查 | 不能,无原始录音 |
| 数据录入 | 计算机辅助面访,跳转逻辑内置 | 部分,可看问卷逻辑 |
| 极值处理 | 极值核查与逻辑一致性核查 | 部分,可看清理报告 |
| 开放题编码 | 文字信息再编码 | 不能,编码本不完全公开 |
| 权重构造 | 抽样设计、无应答、事后分层、截尾 | 部分,方法有公开文献 |
7.3 已知的、可枚举的偏差
| 偏差 | 表现 | 影响 |
|---|---|---|
| 覆盖偏差 | 不含新疆、西藏、青海、内蒙古、宁夏、海南 | 西部与边疆人口被系统性排除 |
| 过度抽样偏差 | 五个大省各抽一千六百户 | 不分权会放大这五省的代表性 |
| 追踪脱落 | 家庭层面跨轮追踪率从 89% 降到 78% | 流动家庭与年轻家庭更易流失 |
| 结构依赖性缺失 | 家户未完访则全家个人缺失 | 个人缺失非随机 |
| 认知测试的选择性 | 仅面访自答者才有认知分 | 2020、2022 年样本高度选择性 |
| 量表口径变动 | CES-D 二十题变八题 | 跨 2012 与 2018 需用等化分 |
| 收入口径变动 | 2012 年起新增多项收入来源 | 2010、2012 收入偏低 |
| 回溯模块偏误 | 十四岁家庭状况为事后回忆 | 回忆偏差随年龄增大 |
| 代答与自答混合 | 部分个人由他人代答 | 敏感题在代答中系统性少报 |
2018 年之后,官方为了维持追踪率,扩展了家庭代答与个人代答的使用范围。代答问卷只采集最基本的个人信息,与自答问卷相比内容大幅削减。这意味着"存在个人数据"不等于"存在完整的个人数据",用变量覆盖度筛选样本时,会把代答者当成高缺失样本丢掉,从而系统性排除那些难以自答的人——往往正是健康状况较差、居住较偏远的人。§4.3 的案例在这一点上给出了同样的提示:量表的版本与缺失结构是绑在一起的。
7.4 外部验证矩阵
| 验证角色 | 做法 | 讲得通的地方 | 风险 |
|---|---|---|---|
| 与普查比对 | 年龄性别结构与 2010 年人口普查对照 | 官方报告称基线结构与普查接近 | 抽样框不含若干省区,结构比对只在框内成立 |
| 与其他追踪调查比对 | 同龄段收入与健康与 CHARLS 比较 | 量级与趋势方向大体一致 | 抽样与测量不同,差值无法归因 |
| 与统计年鉴比对 | 家庭收入与分省统计对照 | 分项构造有官方文档 | 口径差异大,自产食物与补贴难对齐 |
| 与内部跨轮比对 | 用同一 pid 在前一轮的表现预测后一轮 | 追踪设计支持这种检验 | 脱落者与留存者不同,需加权 |
| 与文献结论比对 | 同一主题在不同轮次重复发表 | 可行,公开文献量大 | 二次加工引入了各自的处理选择 |
第二行需要多说一句。用 CHARLS 验证 CFPS 的老年健康结论时,两边的年龄段要匹配:CHARLS 的四十五岁以上样本不能直接与 CFPS 的全体样本比,必须先从 CFPS 里抽出四十五岁以上子集并重新加权,否则差异来自年龄结构而不是测量。
7.5 它为何能持续:因为它追踪的是人,不是户
CFPS 能持续八轮,靠的不是不断加大样本,而是把追踪单元定义在"人"上。基因成员一旦界定,无论他搬到哪里、是否成家、是否与原生家庭断了经济联系,都会被继续找到。户会分、会消失、会重组,但人不会凭空消失,除非去世。这让每一轮的追访都有一个稳定的锚点。
这个机制的代价是样本会"扩散":一个人分家之后,他所在的新户要单独访问,访员要跑的地方越来越多,面访成本上升。官方的应对是把电访比例逐步提高,2016 年电访占一成九,2020 与 2022 年跃升到九成以上,2024 年又回归面访为主。这不是技术退化,而是成本与覆盖之间的反复权衡。
反过来,这也解释了它为什么不做生物样本、不做体格测量。上门采血要额外的医疗队、冷链与伦理审批,样本扩散之后,在几百个县里同时铺开这套体系,成本会远超问卷访问。它把资源押在了"广度与长度"上,而不是"测量的物理深度"上。
§8 生态位与历史
8.1 历史沿革
CFPS 的设计工作始于 2006 年前后。2007 年在北京、河北、上海做了小规模测试性调查,规模仅百余户,目的是打磨问卷工具。2008 年在北京、上海、广东三地做了两千四百户的探索性调查,2009 年在这三地展开追踪,测试计算机辅助面访技术的稳定性、调查进程的实时管理、以及追踪策略是否可行。
2010 年完成全国基线。此后每两年一轮追访,奇数年做样本维护:2011 年维护、2013 年维护、2015 年分级维护、2023 年前后也在做维护。2025 年官方启动了新一轮样本维护调查。
| 阶段 | 年份 | 主要动作 |
|---|---|---|
| 工具准备 | 2006 至 2007 | 问卷设计,北京河北上海小规模测试 |
| 探索 | 2008 至 2009 | 京沪粤两千四百户,追踪与 CAPI 测试 |
| 全国基线 | 2010 | 二十五省区市,一万四千余户 |
| 早期追访 | 2011 至 2016 | 三轮全样本追访,问卷与方法逐步定型 |
| 方法调整期 | 2018 至 2020 | 问卷整合,代答扩展,疫情转电访 |
| 稳定期 | 2022 至今 | 电访与面访交替,数据按轮发布 |
8.2 与全国普查、专项调查的分工
全国人口普查每隔十年做一次,覆盖全部人口,但只有基本人口特征,没有收入、健康、心理、教育史;各类专项调查问得深,但样本小、不可追踪。CFPS 占的是"中尺度、长时段、多维"这个位置:样本量足够做分省分组,时间足够看变化,维度足够做多变量建模。
这个位置不是它自己选的,而是被制度空间挤出来的。全国普查由国家统计局做,微观数据开放程度有限;专项调查大多是部委或课题组一次性项目;长期追踪调查需要稳定资助与专业调查队伍,只有少数机构具备条件。
8.3 生态位:全年龄段的唯一性
| 生态位 | 代表资源 | 覆盖人群 | 主要强项 |
|---|---|---|---|
| 全年龄家庭追踪 | CFPS | 全部家庭成员 | 家庭结构与代际 |
| 中老年健康追踪 | CHARLS | 四十五岁及以上 | 健康测量与生化 |
| 营养与健康追踪 | CHNS | 固定省区居民 | 膳食与长期趋势 |
| 家庭金融 | CHFS | 全国家庭 | 资产与负债 |
| 综合社会调查 | CGSS | 十八岁以上个人 | 社会态度,多为一轮一轮的重复横断 |
| 老龄健康长寿 | CLHLS | 高龄老人 | 极端老龄与长寿因素 |
这张表里唯一做"全年龄"且"追踪"的,是 CFPS。这决定了它的不可替代性,也决定了它的样本设计必须照顾到所有人的需要,因而在任何一个专门方向上都不如对手深。
8.4 数据发布节奏与版本管理
CFPS 的发布节奏是"调查年之后的两三年内分批发布"。以 2022 年为例,调查在 2022 年完成,家庭经济库、家庭关系库、个人库与少儿家长代答库四个公开数据集在之后陆续发布,同时发布调查问卷与技术报告。跨年个人核心变量库通常更晚,因为它要整合多轮数据并做一致性核查。
截至撰写时,北大开放平台上的 CFPS 数据集版本号为 45,最后更新于 2026 年 9 月。这个版本号说明一件事:数据集在不断修订,早期下载的包与现在的包可能不一致。写论文时应当记录下载日期与文件版本,必要时在附录里列出所用文件的校验值。
§9 使用指引
9.1 三种角色的路径
| 角色 | 最关心的事 | 最短路径 |
|---|---|---|
| 刚接触数据的博士生 | 能不能做、怎么做第一个分析 | 先读用户手册的样本与问卷章节,再复现一篇已发表论文的描述统计 |
| 做纵向建模的研究者 | 跨轮变量是否可比 | 先读跨年个人核心变量库清理报告,锁定可比变量清单再动手 |
| 做数据工程或特征工程的团队 | 库结构、键、缺失结构 | 先按 §2.2 的字典建实体关系图,再写连接与校验脚本 |
三类角色的共同前置动作是读文档,而不是下载数据。CFPS 的文档体系足以独立支撑一次完整的研究设计,先读文档能省掉后面大量返工。
9.2 一条最短的可用流程
下面是能跑通的最小流程,从元数据到一张可信的描述统计表,不涉及下载受限数据。
#-- 第一步 取元数据,确认版本与文件清单
curl -s "https://opendata.pku.edu.cn/api/datasets/:persistentId/?persistentId=doi:10.18170/DVN/45LCSO" -o meta.json
#-- 第二步 从元数据里抽出四个库对应的中文包名,规划下载
python3 - <<'PY'
import json
m = json.load(open("meta.json"))["data"]["latestVersion"]
picks = [f["label"] for f in m["files"]
if f.get("label", "").endswith(".rar") and "2022" in f.get("label", "")]
for p in picks:
print(p)
PY
#-- 第三步 本地读入,只保留分析所需列,避免一次载入千余变量
import pandas as pd
use = ["pid", "fid22", "gene", "coremember22", "gender", "birthy", "edu2022", "qea0"]
person = pd.read_stata("cfps2022person.dta", columns=use, convert_categoricals=False)
#-- 第四步 按官方权重变量做加权估计,权重名以当年码本为准
w = "rswt_natcs22"
print(person.groupby("gender")[w].sum() / person[w].sum())
#-- 第五步 校验:同一 pid 不应重复;fid22 应能在家庭经济库里找到
dup = person["pid"].duplicated().sum()
print("重复 pid", dup)
这段流程里最容易出错的是第四步的权重名。每一轮的权重重命名,且分全国全样本与再抽样子样本两套,用错名字 pandas 会直接报列不存在,比用错权重值反而安全——后者不会报错,只会悄悄给出有偏的数。
9.3 引用方式
官方给出的数据来源标注格式是:本论文(书)使用数据全部(部分)来自北京大学资助、北京大学中国社会科学调查中心执行的中国家庭追踪调查。正式的引文建议同时给出数据集 DOI 与访问日期,因为数据集在持续修订。
数据集层面的引用标识是 doi:10.18170/DVN/45LCSO,作者署名为北京大学中国社会科学调查中心,年份写 2015(首次提交),版本写实际使用的版本号。研究论文的方法节还应说明所用轮次、所用权重、以及是否使用了限制数据。
§10 AI 使用声明
| 项目 | 声明 |
|---|---|
| 文本生成 | 本文由 AI 辅助撰写,结构与事实由编辑核对 |
| 数字来源 | 规模与结构数字取自 ISSS 官网、年度报告、数据库介绍报告与北大开放平台元数据 |
| 页面核验 | 北大开放平台数据集页与 CFPS 数据子集合经直接访问确认,ISSS 主站多次访问失败 |
| 未覆盖 | 2024 年公开数据的变量数未取得官方口径,各轮社区库覆盖情况以官方材料为准 |
| 论文信息 | 仅参考公开发表的设计描述与摘要,未逐篇通读全文 |
| 图像 | 无配图;封面为生成式提示词,不含真实数据 |
| 使用限制 | 本文不得被用于推断个体信息;数据本身的使用须遵守官方协议 |
| 免责 | 本文不构成研究设计建议;跨轮口径以官方最新技术报告为准 |
常见误读(避坑清单)
| 说法 | 实际 | 证据 |
|---|---|---|
| CFPS 是全国概率样本,能推断全国 | 官方称全国代表性样本,抽样框不含若干省区,且有五省过度抽样 | 官方元数据的总体人群字段 |
| 2011 年是一个完整轮次 | 2011 年只访问青少年与家庭层,成年人与新生儿未采 | 官方项目介绍的 2011 年说明 |
| 家庭关系库里的人都有个人问卷 | 只有当其为基因或核心成员且当年完访才有 | 2022 数据库介绍报告 |
| 成人库与少儿库一直都在 | 2018 年起整合为个人库与少儿家长代答库 | 官方 2018 数据更新公告 |
| 抑郁分数可以直接跨轮比较 | 2012 年二十题,2018 年八题,跨轮需用等化分 | 官方技术报告的量表说明 |
| 认知分数人人都有 | 只有面访自答者才有,电访与代答者没有 | 官方技术报告 |
| 可以把数据上传给大模型分析 | 协议第五条明确禁止上传与 API 传输 | 官方用户使用协议 |
| 能把子集发到期刊网站做数据共享 | 协议禁止在第三方平台发布全部或部分数据 | 官方用户使用协议 |
| 两个平台账号可以通用 | 官方明确两平台账号不互通 | CFPS 数据平台申请指南 |
| 限制数据申请了就能远程下载 | 机房类限制数据必须到北大现场使用,无远程 | 官方限制数据申请指南 |
FAQ
Q1:CFPS 和 CHARLS 是不是同一个团队做的,能不能合并?
两者都由 ISSS 参与,但项目、样本、变量域都不同。CFPS 是全年龄家庭追踪,CHARLS 是四十五岁以上健康与养老追踪,抽样框与追踪单元都不一样。合并没有统计基础,交叉验证才是合理用法。
Q2:为什么我下载的文件名里带 ecfps 前缀?
带 e 前缀的文件通常是英文版,不带的是中文版。两者变量值一致,标签语言不同。数据集的英文元数据里也有对应的英文题名与描述字段,做国际发表时用英文版更方便核对变量标签。
Q3:个人库里的观测为什么比家庭关系库少很多?
因为只有基因成员或核心成员才会产生个人问卷,而且只有当年完访的才进入个人库。2022 年家庭关系库四万七千余行,个人库两万七千行,差额来自未纳入访问范围与未完访两部分。
Q4:为什么同一家户在不同年份的 fid 不一样?
分家、婚姻、搬迁都会导致家户重组,重组后会产生新的家户号。pid 不变,fidXX 变,这是设计如此。跨年追踪必须用跨年库,而不是逐年按 fid 连接。
Q5:社区数据能用来做村居层面的分析吗?
要按轮次确认。官方材料显示 2010 与 2014 年有社区层数据,2012 与 2016 年标为空缺。做社区层面分析前先核对目标轮次的社区库是否存在、变量是否齐全。
Q6:能把 CFPS 数据放到云端 Notebook 里跑吗?
如果是你自己或机构控制的云环境、且数据不出机构边界,需与项目组确认;如果要把数据传给第三方 AI 服务(包括生成式 AI 与云端数据分析工具),协议第五条明确禁止。稳妥做法是本地或机构内网环境。
Q7:我想做县域层面的分析,怎么办?
公开数据只到省级。县域名称与国标码属于限制数据,需要单独申请并在北大机房内使用,审核周期约三周。官方明确禁止基于公开或限制数据反推省级以下地址。
Q8:为什么要用两套权重?
因为五个大省被过度抽样。全国全样本权重保留大省的可比性,再抽样子样本权重把这五省降回其人口比例。你的目标总体如果是全国,用再抽样权重;如果要分省比较,用全样本权重。
Q9:2024 年数据什么时候能下载?
调查已在 2024 年 7 月至 12 月完成,官方在 2024 年度报告里说明了调查执行情况。按以往节奏,数据会在之后两三年内分批发布,具体时间以官方数据平台公告为准。本篇的规模数字以已发布轮次为准。
Q10:问卷能在论文里转载吗?
不能整份转载。官方说明摘选部分题目作为示例并注明出处可以,但不要把整份问卷放进论文或书里。完整问卷可以直接给出项目网站地址。
Q11:某个变量在某轮缺失特别多,是数据问题吗?
先查这是"真缺失"还是"不适用"。CFPS 用负数编码区分不适用、拒答、不知道,直接 dropna 会把不适用当成缺失。另外要查跳转逻辑:很多变量只在特定模块的进入条件下才问,没进入的人天然为空。
Q12:能不能用 CFPS 做因果推断?
可以,但要做成观察性因果设计。它没有随机化、没有对照、没有干预记录。常用做法是固定效应面板、工具变量、或在特定子样本上做双重差分,每一种都需要在方法节说明识别假设,并用其他数据做稳健性检验。
术语表
| 术语 | 含义 |
|---|---|
| 基因成员 | 2010 年基线界定的家庭成员及其后续新生或领养子女,终身追踪 |
| 核心成员 | 当年与基因成员同户的直系亲属,关系存续期间访问 |
| 非核心成员 | 当年家中既非基因也非核心的成员,仅他人代答 |
| pid | 个人唯一识别码,九位,跨轮不变 |
| fidXX | 第 XX 年的家户号,随分家与重组更新 |
| 家户 | 同灶吃饭与经济共同体的居住单元 |
| 离家单元 | 从原家庭外出居住的成员形成的居住单位,由原家庭代答基本信息 |
| 个人代答 | 由同户他人对无能力自答者代答缩简问卷 |
| 跨年个人核心变量库 | 曾入样本的个人一人一行,横向排各轮状态 |
| 家庭关系库 | 一成员一行,记本人与关系人信息 |
| 家庭经济库 | 一家户一行,记收入支出资产 |
| 权重三件套 | 抽样概率倒数、无应答倾向调整、按普查结构事后分层,极端值截尾 |
| 概率规模成比例抽样 | 按单位规模决定入样概率,配合隐式分层使用 |
| 三级抽样单元 | 区县、村居、家庭户依次为初、二、末级 |
| 事件史日历 | 以日历形式辅助受访者回忆事件起止时间 |
| CES-D | 流行病学研究中心抑郁量表,用过二十题与八题两版,靠百分位等化并轨 |
| 识字测试 | 按难度递增呈现汉字,以最高答对位次计分 |
| Guttman 量表 | 题目按难度排序,答对难题即假定答对易题 |
| 限制类数据 | 地址、方言、指定模块等须申请的数据,只能到指定机房使用,不提供远程 |
| DAIMS | 数据与信息管理评估框架,本文评分沿用其维度 |
附录 A:核心数字核对表
| 项 | 值 | 来源 | 来源层级 |
|---|---|---|---|
| 基线发放地址 | 19986 户 | 官方项目介绍 | 官方页面 |
| 基线完访家庭 | 14960 户 | 官方项目介绍 | 官方页面 |
| 基线界定基因成员 | 57155 人 | 官方项目介绍 | 官方页面 |
| 基线个人完访 | 42590 人 | 官方项目介绍 | 官方页面 |
| 基线成人与少儿 | 33600 人 / 8990 人 | 官方项目介绍 | 官方页面 |
| 基线区县与村居 | 162 个 / 635 个 | 官方项目介绍 | 官方页面 |
| 家庭层面应答率 | 81.25% | 北大开放平台元数据 | 官方页面 |
| 个人层面应答率 | 84.14% | 北大开放平台元数据 | 官方页面 |
| 覆盖省区数 | 25 个 | 官方元数据总体人群 | 官方页面 |
| 人口覆盖率 | 95% 或 94.5% | 官方元数据与第三方平台 | 两套口径 |
| 2020 家庭关系库 | 51291 行 / 297 变量 | 2020 数据库介绍报告 | 官方文档 |
| 2020 个人库 | 28529 行 / 1272 变量 | 2020 数据库介绍报告 | 官方文档 |
| 2022 家庭关系库 | 47328 行 / 298 变量 | 2022 数据库介绍报告 | 官方文档 |
| 2022 个人库 | 27001 行 / 1283 变量 | 2022 数据库介绍报告 | 官方文档 |
| 2022 完访家庭 | 12967 户 | ISSS 年度报告 | 官方文档 |
| 2022 问卷份数 | 55209 份 | ISSS 年度报告 | 官方文档 |
| 2024 完访家庭 | 14155 户 | ISSS 年度报告 | 官方文档 |
| 2024 问卷份数 | 63009 份 | ISSS 年度报告 | 官方文档 |
| 问卷类型数 | 5 类 | 官方项目介绍 | 官方页面 |
| 数据集 DOI | 10.18170/DVN/45LCSO | 北大开放平台 | 官方页面 |
附录 B:数字的来源分层
| 层级 | 内容 | 本文处理方式 |
|---|---|---|
| 官方页面 | 项目介绍页、北大开放平台元数据、限制数据申请指南、用户使用协议 | 直接引用,作为首选依据 |
| 官方文档 | 年度报告、数据库介绍报告、跨年库清理报告、技术报告 | 引用时注明文件性质,区分报告年份 |
| 官方转述 | 官方公众号推送、讲座纪要 | 仅在无其他来源时使用,并标为转述 |
| 论文摘要 | 期刊论文方法节中的样本量描述 | 用于交叉核对,不单独作为数字来源 |
| 未核实 | 2024 年各库变量数、各轮社区库覆盖细节 | 明确标注未取得 |
附录 C:完整参考文献
| 编号 | 文献或资源 | 性质 |
|---|---|---|
| 1 | 北京大学中国社会科学调查中心,中国家庭追踪调查项目主页 | 官方页面 |
| 2 | CFPS 数据平台,公开数据申请指南 | 官方页面 |
| 3 | CFPS 用户使用协议 | 官方页面 |
| 4 | CFPS 限制数据申请指南(中文版与英文版) | 官方页面 |
| 5 | 北京大学开放研究数据平台,China Family Panel Studies 数据集元数据 | 官方页面 |
| 6 | ISSS,2024 年度报告 | 官方文档 |
| 7 | CFPS 项目组,2020 年数据库介绍及数据清理报告 | 官方文档 |
| 8 | CFPS 项目组,2022 年数据库介绍及数据清理报告 | 官方文档 |
| 9 | CFPS 项目组,跨年个人核心变量库清理报告 2010 至 2022 | 官方文档 |
| 10 | CFPS 项目组,2018 年数据库技术报告(量表部分) | 官方文档 |
| 11 | CFPS 项目组,2020 年用户手册 | 官方文档 |
| 12 | CFPS 数据更新公告,2018 年数据更新 | 官方页面 |
| 13 | Xie Y, Hu J. An Introduction to the China Family Panel Studies. Chinese Sociological Review, 2014 | 期刊论文 |
| 14 | Xie Y, Lu P. The sampling design of the China Family Panel Studies. Chinese Journal of Sociology, 2015 | 期刊论文 |
| 15 | 谢宇、胡婧炜、张春泥,中国家庭追踪调查:理念与实践,社会,2014 | 期刊论文 |
附录 D:任务代码
下面是一段完整的本地校验脚本,用于在下载之后检查三个最常见的问题:pid 重复、fid 漂移、基因成员身份缺失。它在本地运行,不上传任何数据。
#-- 下载后自检:三件事,pid 唯一、fid 可回溯、gene 无缺失
import pandas as pd
def audit(path_person, path_famconf):
p = pd.read_stata(path_person, convert_categoricals=False)
f = pd.read_stata(path_famconf, convert_categoricals=False)
report = {}
report["person_rows"] = len(p)
report["person_unique_pid"] = p["pid"].nunique()
report["person_dup_pid"] = int(p["pid"].duplicated().sum())
fset = set(f["pid"].astype(str))
pset = set(p["pid"].astype(str))
report["pid_not_in_famconf"] = len(pset - fset)
report["gene_missing"] = int(f["gene"].isna().sum()) if "gene" in f else "no_column"
fid_cols = [c for c in p.columns if c.startswith("fid")]
report["fid_cols_found"] = fid_cols
return report
res = audit("cfps2022person.dta", "cfps2022famconf.dta")
for k, v in res.items():
print(k, v)
输出里 person_dup_pid 应当是 0;如果不是,说明合并时引入了一对多关系,或者拿到了混合版本的包。pid_not_in_famconf 应当为 0 或者极小,如果很大,说明家庭关系库与个人库来自不同版本,需要重新下载同一批次的包。
附录 E:如果只记五件事
| 序号 | 要点 |
|---|---|
| 1 | 它是全年龄家庭追踪,不是养老保险专项,也不是营养调查 |
| 2 | 追踪单元是基因成员,pid 跨轮不变,fid 会变 |
| 3 | 八轮十六年,轮次口径与变量口径都改动过,跨轮比较先查可比变量 |
| 4 | 免费但须实名注册,分级共享,省级以下地址要单独申请 |
| 5 | 协议禁止把数据传给外部 AI 平台,本地处理是底线 |
编辑说明
本篇的规模与结构数字以官方页面与官方文档为主要依据,写作过程中直接访问了北京大学开放研究数据平台的 CFPS 数据子集合与数据集元数据接口,取得版本号、文件清单与完整的社会科学元数据字段。ISSS 主站在写作环境中多次连接失败,项目介绍、年度报告与技术报告的正文内容通过检索结果中的官方原文片段与摘要取得,未能逐页打开原文 PDF。凡属此类,正文与附录 A 均标注为官方文档并说明取得方式。
人口覆盖率存在百分之九十五与百分之九十四点五两套写法,本文并列呈现,未做取舍。2012 年、2016 年的个人层面完访数在不同官方材料与转述文献中存在差异,本文在正文中采用数据库介绍报告与年度报告的口径,并在 7.0 节说明差额构成官方未逐项说明。2024 年各库的变量数未取得官方统计,故未填入第 2.4 节的表格。
本文不做任何原始数据的二次统计。规模、结构、边界三类数字全部来自官方口径,未自行计算占比、分位数、缺失率或频次分布。若使用者需要这些量,应在依规申请数据后自行计算,并注意 §2.2 的缺失码与跳转逻辑。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- sage-survey — 共享标签:公共卫生与流行病学 / 调查数据 / 队列研究 / 卫生服务研究
- lasi — 共享标签:公共卫生与流行病学 / 调查数据 / 队列研究 / 卫生服务研究
- chns — 共享标签:公共卫生与流行病学 / 调查数据 / 队列研究
- elsa — 共享标签:公共卫生与流行病学 / 调查数据 / 队列研究
- hunt-study — 共享标签:公共卫生与流行病学 / 调查数据 / 队列研究
- nsduh — 共享标签:公共卫生与流行病学 / 调查数据 / 卫生服务研究
- namcs — 共享标签:公共卫生与流行病学 / 调查数据 / 卫生服务研究
- mexico-ensanut — 共享标签:公共卫生与流行病学 / 调查数据 / 卫生服务研究
- indonesia-riskisdas — 共享标签:公共卫生与流行病学 / 调查数据 / 卫生服务研究
- brazil-pns — 共享标签:公共卫生与流行病学 / 调查数据 / 卫生服务研究
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

