ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

CHARLS数据库申请下载与清洗完整指南:注册审核到Stata读取避坑

CHARLS数据库申请下载与清洗完整指南:注册审核到Stata读取避坑 做CHARLS数据库的申请和下载这件事我在2023年整整折腾了三次才彻底跑通。第一次卡在注册审核第二次完全没搞明白新版官网的模块入口第三次下载完数据又栽在Stata读取中文标签乱码上。后来帮课题组两个师弟师妹走流程发现他们踩的坑几乎和我一模一样。这让我意识到CHARLS官方虽然给了很清晰的Guide文件但很多细节不实际操作根本不知道。这篇东西就按“注册—审核—下载—打开—清洗”的顺序把我在最新版官网上跑通的完整流程、以及每个环节容易翻车的地方全部写出来希望对第一次接触CHARLS数据库的人有用。1. CHARLS数据库是什么为什么值得花时间搞到它先花点篇幅把CHARLS到底是什么讲清楚因为很多新手其实对自己要下载的数据集缺乏全局概念导致后面下载时不知道自己该选哪些文件。CHARLS全称是China Health and Retirement Longitudinal Study中文名是“中国健康与养老追踪调查”由北京大学国家发展研究院主导是一项针对中国45岁及以上中老年人的代表性微观追踪调查。它从2011年开展基线调查覆盖了全国大约150个县区、450个社区村最终形成了约1万户家庭、1.7万名受访者的样本规模。之后每两到三年追踪一次目前已经公开了2011年基线、2013年、2015年、2018年四轮常规追踪数据外加2014年的生命历程调查专项、2020年的疫情专项数据。对做老龄化、健康经济学、劳动经济学、社会保障、流行病学等方向的人来说这几乎是国内最权威的公开微观数据源之一。很多人会拿CHARLS和CGSS、CFPS这些数据库做对比。简单说CGSS侧重社会态度和分层CFPS侧重家庭动态和少儿CHARLS则高度聚焦中老年群体的健康、医疗、退休、收入、家庭转移和养老保障。它的问题模块包括了人口背景、健康状况与功能、医疗保健与保险、工作退休与养老金、收入支出与资产、住房、家庭结构、社会支持等还采集了血液样本的生物学测量数据。这意味着你可以同时把自报健康、客观测量指标握力、步速、肺功能和实验室检测指标血红蛋白、C反应蛋白等放在一个模型里这种数据深度在国内问卷里非常少见。但我也要说句实在话CHARLS并不适合所有研究问题。它的抽样框是家庭和个人不是企业也不是医院如果你想研究企业行为或临床患者队列CHARLS帮不上忙。另外它每轮追踪都有样本流失跨年做面板数据时需要用官方提供的跨年权重和ID映射文件新手容易在这个地方出错。我的建议是下载前先想清楚两个问题你的研究问题是否以中老年人群为分析单位你是否需要追踪面板结构如果两个答案都是肯定的CHARLS值得投入时间。如果只是想用一份截面数据做毕业设计其实2018年的数据也够用不必一口气把所有年份都下载下来。2. 注册这关卡住大量新人的审核细节CHARLS没有完全开放“游客直接下载”官网要求先注册账号、提交研究计划等管理员审核通过后才能下载数据。这个流程本身是为了保证数据被合理使用但实际操作里很多人第一次申请就翻车了。2.1 新版官网的入口逻辑别在旧页面里打转2023年之后CHARLS官网改版过一次老用户如果还拿着以前收藏的旧链接经常会跳到不存在的页面。搜索“CHARLS”时也会看到一些非官方镜像站建议一律不要用认准北京大学CHARLS项目官网。进入官网后点击页面顶部“数据”相关导航就能看到新版的用户登录和注册入口。新版的账号体系是独立的哪怕你以前在老系统里注册过也需要先检查能否正常登录。我们课题组的情况是老账号部分字段在新版系统里没有同步直接登录后看不到下载权限后来重新提交了一次研究计划才恢复。所以如果你是老用户遇到登录成功但无法下载的情况不要怀疑自己先重新走一遍申请通道。2.2 注册信息和研究计划的填写技巧注册时需要填姓名、机构、邮箱、研究课题、研究用途、研究描述等。这里有几个直接影响审核通过率的点邮箱尽量使用学校或科研机构邮箱。不是说QQ邮箱和163不行但机构邮箱会大幅降低被要求补充材料的概率。CHARLS团队每天会收到大量申请.edu.cn域名本身能提高信任度。研究课题和计划不要写得太模糊。比如只写“研究老龄化”或“使用CHARLS数据做毕业论文”这种话被退回的几率很高。更稳的写法是“利用CHARLS 2011-2018年追踪数据分析中国中老年人慢性病共病模式对医疗服务利用的影响”一句话包含研究对象、数据范围、研究变量和预期目标。研究描述里的“计划使用变量”不要空着。你可以先下载一份问卷或Codebook看看大概结构比如填上“拟使用人口背景、健康状况与功能、医疗保健与保险、工作退休与养老金模块中的主要变量”这比写“所有变量”显得更可信。用途选“学术研究”或“毕业论文”通常比“课程作业”容易通过。如果你是替导师或团队申请可以在研究描述里注明所在课题组的研究方向和相关成果。我见过一个比较极端的被拒案例申请者把官方网站的介绍段落整段复制进研究描述结果被打回要求补充“与研究问题的关联”。其实CHARLS团队希望看到的不是华丽的描述而是你确实知道这份数据里有什么、准备怎么用。2.3 审核周期、邮件通知与状态查询审核周期通常在工作日1到3天内完成快的时候当天就能通过慢的时候可能跨一个周末。我自己的经历是第一次周三下午提交周五上午收到通过邮件第二次帮师弟提交遇到节假日等了5天才过。审核结果会发到注册邮箱通过后会给出数据下载入口或直接激活账号的下载权限。如果你提交后超过5个工作日没收到回复可以到官网“联系我们”页面找官方邮箱询问但邮件里要写清楚注册邮箱和研究课题方便对方定位。官方没有公开的电话客服所以邮件是唯一靠谱渠道。还有个细节注册时填写的“项目名称”一旦提交后续在论文致谢或数据引用里最好保持一致。因为有些期刊会要求你说明数据版本和申请编号这时候如果项目名称和论文内容对不上解释起来很麻烦。我建议从一开始就把研究课题写规范以后省事。3. 下载实操选版本、找文件、防断连审核通过之后下载环节也不是无脑点“下载全部”。CHARLS的数据文件非常多选错版本或漏掉跨年ID映射文件都会给后续分析埋雷。3.1 数据版本怎么选2018 v3.0、2020疫情专项与跨年ID截止2023年底最常用的数据集是2018年追踪调查数据官方发布的是v3.0版本。这个版本之所以值得推荐是因为它重新整理了变量命名和标签跨年可比性明显比更早的版本稳定。如果你的研究需要最“新鲜”的信息比如疫情前后的健康行为变化可以同时下载2020年疫情专项数据但如果只是想建立常规面板2011、2013、2015、2018四轮就够了。这里要给一个非常重要的提醒除了每轮的问卷数据CHARLS还提供跨年样本ID映射文件用于把不同轮次的同一批受访者对应起来。很多人第一次下载时只看主题数据漏掉了这个文件到后面做面板数据时发现2013年的个体ID和2018年的对不上又得重新回官网找非常浪费时间。下载前先看页面上的文件列表说明确认包含ID mapping相关的文件再下载。3.2 下载页面的文件清单与命名规律进入数据下载页面后你会看到按年份和模块组织的文件。以2018年为例通常包含文件类别说明Household数据家庭层面变量如家庭收入、支出、资产、住房等Individual数据个人层面变量如健康、医疗、工作、退休、养老金等Biomarker数据生物学测量数据包括握力、步速、血液检测指标等Codebook/问卷变量代码簿和问卷原文分析时必须对照使用ID映射文件跨年个体ID对应关系面板数据必需文件名一般会包含年份和模块缩写比如“2018_Household”之类的结构。我下载时的习惯是每个年份建一个单独文件夹zip包保持原始文件名解压后不要重命名原始dta文件因为后续很多语法脚本会引用官方文件的默认名。3.3 大文件下载防中断、格式转换与文件校验CHARLS的数据压缩包并不小个别包含生物标记数据和跨年文件的zip包能到几百MB甚至上GB。用浏览器直接下载是最稳妥的不建议用某些多线程下载工具服务器端有并发限制强行多线程反而容易触发断连或IP临时限制。如果下载中途断了不要慌先看浏览器有没有断点续传如果续传后解压报错重新下载对应文件即可。解压之后建议核对一下文件数量和解压后大小防止下载不完整。有一次我一个包解压后少了两个生物标记文件重新下载才恢复正常所以“校验”这步不能跳过。对于习惯用R或Python的人dta格式可以直接用haven::read_dta()或pandas.read_stata()读取不需要先转成CSV。Stata用户则直接双击dta文件即可。如果你一定要用CSV也请保留源dta文件因为转CSV会丢掉变量标签和值标签后续分析时变量可读性差很多。4. 拿到dta后的第一个坑打开、编码与变量检索数据下载下来只是第一步真正让人头疼的是“文件打不开”或“打开后中文全乱码”。这一节我把常见问题按实际出现频率拆开讲。4.1 中文标签乱码问题Stata版本与encoding设置CHARLS的dta文件大多带中文变量标签和值标签。如果你用的是Stata 14及以上版本打开后一般正常但如果用Stata 13或更老版本大概率会看到一堆乱码字符这不是数据坏了而是编码不兼容。CHARLS部分文件的标签采用UTF-8或GB18030编码老版本Stata对UTF-8支持不完整就会显示乱码。如果遇到乱码有几个处理办法升级到Stata 14通常能直接解决。用R读取时指定encoding UTF-8或encoding GB18030。具体用哪个取决于文件实际编码可以先跑一次read_dta()看结果如果变量标签仍然乱码换另一个编码再试。用Python的pandas.read_stata()同样可以设置convert_categoricals和encoding相关参数。实测中CHARLS不同年份文件的编码并不完全一致所以写脚本时建议用try...except配合多种编码逐次尝试而不是写死一个。4.2 如何快速定位变量Codebook、问卷与变量字典CHARLS变量命名有固定风格但如果不看Codebook仅凭变量名猜含义很容易出错。Codebook通常以PDF形式随数据一起提供里面有每个变量的完整名称、标签、取值和缺失值定义。下载后先花半小时把Codebook的目录看一遍再开始写分析脚本效率反而更高。有些变量名有一定规律比如前缀不同代表问卷模块或问题类型。但请注意不要想当然地用一套规律去套所有年份的数据因为不同年份之间的变量命名并不完全一致。经验做法是写一个“变量检索”脚本先用lookforStata或grepR/Python在所有变量名和标签里搜索关键词找到目标变量后再从Codebook里核对具体定义。4.3 跨模块数据合并HHID、PN、ID的对应关系CHARLS数据的合并是新手最容易翻车的地方。个人层面数据文件里的关键身份变量包括家庭编号HHID、个人编号PN/ID等。合并家庭层面的数据到个人层面时通常用HHID作为连接键但要注意家庭数据是“一户一条记录”个人数据是“一人一条记录”用HHID合并后会产生一对多匹配这是正确的不要强行改成一对一匹配。合并个人不同模块数据时通常需要用“HHID 个人编号”的组合键。一个常见错误是只使用HHID去合并不同个人模块结果把不同家庭成员变成同一条记录导致样本量虚高和变量错位。正确做法是先用官方ID映射文件核对两个数据文件中的ID命名是否一致再确定连接键。跨年合并做面板数据时还要使用跨年ID映射文件因为2015年之后的个人编号规则可能做过调整直接拼接年份会导致同一个人在不同年份的ID不匹配。5. 从下载到可分析数据清洗中的高频踩坑点能打开、能合并不代表能直接跑回归。CHARLS的原始数据有大量缺失值编码、跳问逻辑和特殊取值这一节是真正影响分析质量的地方。5.1 缺失值编码负数到底代表什么CHARLS问卷数据里的缺失值不是简单的“空”而是用负数或特定代码表示的。常见的包括“不知道”“拒绝回答”“不适用”“缺失”等不同情况。如果你直接把所有负值当成缺失值删除会损失大量信息如果把它们当作真实数值参与计算结果更会是错的。建议在清洗前先查看每个变量的值标签把负数代码映射成明确的缺失原因变量。比如在不适用比如未工作者被问工作收入相关变量和拒绝回答之间后者可能存在样本选择问题需要关注而“不适用”通常直接编码为缺失即可。对连续变量我习惯把“不知道”“拒绝回答”这类非随机缺失单独标记后续做稳健性检验时对比删除方式对结果的影响。这个步骤看似繁琐但在审稿阶段非常加分。5.2 生物样本Biomarker数据的特殊规则Biomarker模块的数据和问卷数据结构很不同。它包含握力、步行速度、肺功能等身体功能测试以及血液样本的实验室检测值。很多检测值有正常值范围但CHARLS公布的是原始检测值没有帮你做异常值标记。因此分析前要自己根据临床标准或文献设置合理范围同时注意检测方法在不同年份之间是否一致否则跨年比较会出现系统性偏差。另一个容易掉进去的坑是不是所有受访者都完成了生物样本采集因此Biomarker文件的样本量通常比问卷数据小很多。如果你把问卷数据和Biomarker数据直接合并然后把缺失的生物指标作为缺失值处理模型有效样本量会大幅下降。更合理的做法是先评估分析是否必须使用客观测量指标如果不是尽量优先使用问卷自报健康变量如果必须使用可以在论文里专门写一段样本流失的敏感性分析。5.3 追踪样本的跨年面板搭建每年单独分析一份截面数据相对简单真正的难点在于搭建面板数据。搭建面板时首先要确定“分析人群”是每一轮都参与调查的持续受访者还是允许中途加入的平衡面板两者对结果的含义不同。官方跨年ID映射文件的作用在这里体现。操作上我建议先在Stata或R中把各年Individual数据合并成“长格式”面板即每一行是“个人-年份”的唯一组合然后生成连续年份变量wave和电子健康年龄等常用派生变量时要注意公式的来源。CHARLS官方和常见文献都有自己的派生变量公式不推荐自己临时造轮子否则和已有文献不具可比性。面板数据还有个坑是权重。CHARLS提供了横截面权重跨年面板分析使用的权重和处理方法需要查阅官方统计说明。很多论文在实际分析中不使用权重但至少要在稳健性检验里说明加权和不加权的结果差异。不建议刚上手就强行使用复杂权重先保持结果透明可比再逐步增加复杂度。6. 数据使用规范、引用要求与隐藏的实用细节很多人在数据下载后从不看“使用协议”但这个环节直接关系到后续论文发表。CHARLS要求使用者在发表的论文或报告中明确标注数据来源和版本并引用指定的文献。常见的引用格式是引用CHARLS的队列描述论文和当年数据版本的说明文档。具体到每个版本下载页面通常会提供对应的引用信息复制粘贴到论文里时注意检查有没有遗漏版本号。我在实际使用中还有一个心得下载数据后马上建一个README文档记录申请时间、数据版本、下载链接、解压后文件清单和变量说明。这样做的好处是几个月后写论文时你还能快速定位当时使用的是哪个版本的数据。尤其是CHARLS会不定期发布修订版本万一审稿人要求复现你能准确说清自己用的是v多少版。还有一个容易被忽略的细节CHARLS官方会更新数据修订说明。比如2018年数据v3.0发布后又修复过少量变量取值问题。如果你在分析中发现某个异常值先不要急着删样本去官网看看是否有官方修订说明确认一下是不是已知问题。我一开始就误删过一批看起来离群但实际是单位标注有误的观测后来对照官方说明才发现问题不在样本而在变量单位。写在最后先从一个小研究问题开始CHARLS数据库的注册、审核、下载、清洗整套流程走通一遍之后其实并不复杂但第一次做的人很容易被各个环节的小问题耗掉大量时间。我的个人建议是刚开始不要试图把所有年份、所有模块的数据都下载下来而是先确定一个窄小的研究问题比如“2018年老年人自报健康与日常生活活动能力的关联”用一份截面数据把通道跑通再考虑扩展成面板分析或加入Biomarker模块。这比一上来就想驾驭全部数据要现实得多。数据下载只是研究的起点真正决定论文质量的是你对数据结构和测量含义的理解。希望这篇指南能帮你少走几步弯路把宝贵的时间留给数据分析和论文写作本身。
返回列表