明暗
第 4 章 数据来源与口径
本章核心问题:一个数字从哪来?怎么让别人能重跑一遍?以及,常见的读错方式有哪几种、怎么在写之前就避掉?
本章脉络
「引用数据」这件事的技术门槛,在二十年里下降了三个数量级。1980 年代做跨国增长研究,意味着去图书馆复印联合国统计年鉴、手工敲卡片;Penn World Table 的前身(Kravis 等 1982 年的《National Product Comparisons)之所以成为经典,一部分原因就是它把 67 个国家的 PPP 价格数据第一次整理成了可用的表。1990 年代末各国统计机构上线在线数据库;2008 年后圣路易斯联储的 FRED 提供 API、批量下载与图表嵌入,把「拿到美国宏观数据」的成本压到接近零;2010 年代以后,微观调查(PSID、CFPS、CHARLS、CHFS 等)、企业注册与海关微观数据、以及学术论文的 replication package 成为常态,经济学的可复现性标准随之前移——2015 年《美国经济评论》设立 AE Data Editor 并要求论文提交数据与代码,就是这个变化的制度标记。
中国一侧的路径不同:官方数据主要通过统计年鉴与新闻稿发布,接口长期不开放,因此形成了以商业终端(Wind、CEIC、同花顺 iFinD)与开源抓取库(AkShare、Tushare)为中介的生态。好处是可及,代价是中间层会引入自己的口径转换与错误——从终端里复制出来的一个增速,常常已经离官方表格隔了两层。所以这一章的重点不是「哪里能下载」,而是「怎么确认你手上的数就是官方那个数」。
核心概念
三层数据结构
任何一个宏观指标都存在于三层里,找数与核数就是沿这三层走:
- 制度层:定义与编制方法(谁统计、按什么手册、什么频率、是否季调)。这一层往往写在方法说明里,而不是数据库里:SNA 2025、BPM6、IMF GFS 2001/2014、各国 CPI 权数说明、统计局的《主要指标解释》。
- 原始发布层:官方公报、统计年鉴、数据公告与 API。这里是唯一可作为「权威出处」引用的一层。
- 再加工层:FRED、OWID、CEIC、Wind、以及论文附录里的清洗后面板。这一层方便,但每个都可能重命名、单位换算、插值、外推、补估计值;引用时必须回溯到第 2 层,或至少说明第 3 层的加工规则。
为什么要区分:绝大多数「同一指标两个数不一样」的争议,都发生在第 3 层。FRED 的 M2SL 与美联储 H.6 表的 M2NOTS 是同一件事,而 Wind 的「中国:M2:同比」可能与人民银行公报差在小数点后第二位——前者是换算,后者就要查是不是把「环比年化」当「同比」了。
中国数据源
| 机构 | 拿什么 | 位置与频率 |
|---|---|---|
| 国家统计局 | GDP 及分产业、工业增加值、固定资产投资、社零、房地产、CPI/PPI、城镇调查失业率、人口 | 国家数据平台 data.stats.gov.cn(月度/季度,支持批量 Excel 与接口);每月 15 日前后发布「国民经济运行情况」;2 月末《国民经济和社会发展统计公报》;年末《中国统计年鉴》;每五年经济普查(2004、2008、2013、2018、2023)后大幅修订 |
| 中国人民银行 | 货币供应量、社会融资规模、金融机构本外币信贷收支表、信贷投向、利率(含贷款加权平均)、汇率中间价、国际储备、《货币政策执行报告》 | 官网「统计数据」栏目(月度、季度);报告季度(第一季度约 5 月发布);中国货币网 chinamoney.com.cn 提供 Shibor、LPR、中间价历史序列 |
| 国家外汇管理局 | 国际收支平衡表、国际投资头寸表、外汇储备、银行代客结售汇与涉外收付、全口径跨境融资、外债 | safe.gov.cn,季度(BOP 季后约 30 日)、月度(储备、结售汇) |
| 财政部 | 财政收支月报、政府债务余额与发行、专项债、国债发行计划、PPP/政府性基金 | mof.gov.cn;地方债逐笔信息在「地方政府债务信息公开平台」与中债网 |
| 国家金融监督管理总局 | 银行业保险业主要监管指标(不良率、资本充足率、拨备)、普惠小微、绿色信贷、消费金融 | nfra.gov.cn,季度 |
| 海关总署 | 进出口(月度,人民币与美元两套计价)、重点商品量价 | customs.gov.cn,每月 13 日前后 |
| 国家税务总局 / 审计署 | 分税种收入;审计工作报告(违规与虚增问题的官方披露) | 税总月报;审计署每年 6 月向全国人大常委会报告 |
| 交易所与登记机构 | 股票与债券发行、托管、收益率曲线 | 上交所/深交所统计月报、中国债券信息网 chinabond.com.cn(中债收益率曲线)、上海清算所 |
| 公开文献与学术数据 | 微观调查(CFPS 北大、CHARLS 北大国发院、CHFS 西南财大、CGSS 人大)、企业库(CSMAR、Wind) | 多需申请授权并签署使用协议,不可再分发 |
国际数据源
| 数据库 | 覆盖 | 关键要点 |
|---|---|---|
| FRED(圣路易斯联储) | 美国宏观为主,含大量国际序列 | 每条序列有 ID(GDPC1 实际 GDP 季调折年率、CPIAUCSL CPI 季调、UNRATE U-3 失业率、WALCL 美联储总资产、TDISPINCOM 可支配收入);「源」页面直通 BEA/BLS 原始表,这是核数的最短路径 |
| BEA | NIPA 账户、GDP 三度估计、资金流量表(FOF)、州级账户 | 每次修订会公布修订说明;SAHIEDG 等表号是引用单位 |
| BLS | CPI/U、PPI、就业(CES 与 CPS 两套)、JOLTS、生产率、U-1 至 U-6 | CES(企业调查)与 CPS(家庭调查)就业人数口径不同、方向常背离——两个都引才不会被质疑 |
| 美联储 | H.4.1(央行资产负债表)、H.6(货币总量)、G.17(工业产出)、G.19(消费信贷)、资金流量、消费者偿付调查 SCF | 每周/每月定期发布,历史可回溯到 1950 年代 |
| 美国财政部 | Fiscal Data(月度现金收支)、SLED(州与地方)、债务明细 TreasuryDirect、CBO 长期预算展望 | 现金会计(cash basis)≠ 权责发生制,跨表比较前先确认 |
| IMF | IFS(国际财经统计)、WEO 数据库、GFS/ARW(政府财政)、COFER(储备货币构成)、DOTS/DOTSAP(贸易)、IRFCL(汇率安排)、Article IV 报告、FAD 财政监测 | Article IV 的附录表常给出「官方口径之外」的估计,是讨论中国债务与顺差时最好的一手材料 |
| BIS | 非金融部门信贷统计(含居民/企业/政府)、信贷缺口、 consolidated banking statistics(国际债权/负债)、CIBBS、三年一度外汇市场调查、央行行长讲话与季刊 | 「中国总杠杆率 300%」这类句子只能来自 BIS 口径,与政府债务率不可混用 |
| 世界银行 | WDI、IDA/IDS(债务)、OECD/世界银行联合税收数据库、Enterprise Surveys、全球治理指标 WGI、BEPDC 生产率数据库 | WDI 大量序列用 PPP 与 2017/2021 基年,读时必查基年 |
| OECD | QNA、MEI、STAN、国民账户、Revenue Statistics(成员国税收与社保缴费占 GDP)、劳动与市场、环境核算 | 提供「同口径跨国比较」的最佳折中,方法附注详尽 |
| UN | National Accounts Main Aggregates(各国官方 GDP 年度值,按本币与美元)、World Population Prospects、Comtrade(贸易微观 HS 编码)、SDG 指标 | Comtrade 与各国海关的进出口额系统性不等(出口国记录与进口国记录不对称),是「贸易顺差争议」的数据根源 |
| ILO / WTO | 就业统计 ILOSTAT(含 ILO 口径失业与 NEET)、WTO Stat 与 World Trade Statistical Review | ILO 口径统一后可与各国官方失业率对比,常发现差异 |
| 分配与历史 | WID.world(World Inequality Database,Alvaredo/Piketty 等,税前国民收入份额)、Maddison Project Database(历史跨国 GDP,按 1990/2011/2021 国际元)、Penn World Table(GGDC,含 PPP、资本存量、TFP/增长核算)、Barro–Liu 教育年限 | 这三套都用自己的换算体系,绝不可把 PWT 的「2017 国际元」与 MADDISON 的「1990 国际元」放进同一张图 |
| 二次聚合 | Our World in Data、IMF DataMapper、Trading Economics | 只作入门检索与画图,正式引用一律回到原始机构 |
一个数字的完整身份证
引用任何宏观数据,需要同时给出七项,缺一项就不可复现:
- 指标名与定义(哪个口径:官方 M1 还是新口径 M1;U-3 还是 U-6)
- 来源机构 + 表号/序列 ID(「BEA, Table 1.1.5.4Q」而不是「美国 GDP 数据」)
- 观测时点与频率(2024Q4、月度、是否季调、是否折年)
- 单位与计价(现价/不变价、亿元/万亿美元、市场汇率/PPP、% 还是 pt)
- 数据版本与发布日期(初步核算 / 第二次估计 / 最终核实;「2026 年 9 月下载」)
- 是否修订(历史值是否已被后续普查或基期更换改变)
- 计算方式(若为自算:增速、占比、贡献率的分子分母;「贡献率 = 该项增量/GDP 增量」这类定义必须写出)
问题与分析
怎么从一张图追到原始表
一条可复用的路径,以「美联储 M2 增速上升说明美国在放水」这类说法为例:
- 找到图的作者,看它注的序列来源。若只写「FRED」,则不算来源。
- 在 FRED 打开序列页,看「Source」行 → 例如 Board of Governors, H.6 《Money Stock Estimates》。
- 到美联储网站下载 H.6 原始 CSV,核对同一时点的 M2 水平值与 FRED 序列是否一致(水平一致、增速不一致 → 单位或季调差异;两者都不同 → 序列选错,可能是 M2NOTS 与 M2(旧定义)混淆)。
- 检查该序列的定义页:2020 年 5 月起储蓄存款并入 M1,因此 FRED 的历史 M1 被重算。任何跨 2020 年的 M1 增速比较都要重新计算。
- 保存下载时的原始文件与日期,并在正文写明版本。
这套流程看似繁琐,实际成本是十几分钟;而它带来的差别是:当有人质疑你的数字时,你能给出可检验的链条,而不是「某报告里这么写」。
中国宏观数据的几个特有陷阱
- 公报数、年鉴数、普查后调整数不是一回事。 2 月统计公报里的 GDP 是「初步核算」;年末年鉴为「初步核实」;经济普查次年通常上修第三产业增加值(2004、2008、2013、2018、2023 五次普查后都有明显上修,其中 2018 年第四次经普后 2018 年 GDP 上修约 2.1%,第五次全国经济普查后 2023 年 GDP 修订幅度约 2.7%,均据国家统计局普查修订公告)。用不同版本混排会造出「数据造假」的错觉。
- 环比与季调。 统计局自 2021 年前后逐步公布主要指标的季调环比增速,但媒体常引的「增长 X%」多为同比。讨论拐点要用环比,讨论幅度要用同比,且必须声明。
- 固定资产投资与 GDP 的口径断裂。 固投统计按项目形象进度与财务支出、门槛为 500 万元以上项目,含土地购置费,且地方数据曾长期高于全国汇总(2019 年起实行地区统一核算后差距收敛)。拿固投增速直接推断资本形成,中间隔着几次折算。
- 社会消费品零售总额 ≠ 消费。 前者含实物商品与餐饮、不含服务消费的大多数(住房服务、医疗教育服务以虚拟或政府形式计入 GDP 的 C,但不在社零里)。用社零判断「消费占 GDP 比重」会得出荒谬的低值。
- 人口与就业数据来自三处。 统计局抽样(年末人口与城镇化率)、公安部户籍(曾用于对比)、七普(2020 年,2021 年 5 月公布,揭示流动人口与年龄结构差异)。生育率、劳动年龄人口这类关键变量在不同来源间可以差出千万量级。
「实时数据问题」:为什么历史回测会高估你自己
宏观数据会被修订,而修订方向常与新闻周期一致(衰退时初次估计往往偏弱、后续上修)。因此用今天的历史数据回测 2015 年的政策规则,会引入前视偏差(look-ahead bias)。FRED 的 ALFRED(Archival FRED)与费城联储的实时数据档案专门保存「当时看到的数」;做货币政策、财政乘数或市场反应研究时,用 ALFRED 而非当前序列是基本要求。同理,中国 2019 年地区统一核算后各省历史序列被重算,跨 2019 年的省级面板若不做「同版本」处理,估计结果会被统计改革污染。
推导与例题
例题 1:把两条序列拉成可比(Python)
python
import pandas as pd
# 官方 GDP: 名义(亿元, 现价) 与 实际指数(上年=100)。以 FRED 为例:
# GDPA = 名义 GDP, 十亿美元 GDPC1 = 实际 GDP, 季调折年, 2017 年美元
fred = "你的FRED_API_KEY"
ids = {"nominal": "GDPA", "real": "GDPC1", "cpi": "CPIAUCSL", "m2": "M2SL"}
raw = pd.DataFrame({k: pd.read_csv(
f"https://fred.stlouisfed.org/graph/fredgraph.csv?id={v}&cosd=2000-01-01",
index_col="observation_date", parse_dates=True)[v]
for k, v in ids.items()})
q = raw.resample("QE").last().dropna() # 统一到季度末
q["gdp_deflator"] = q.nominal * 1e9 / (q.real * 1e3) * 100 # 注意单位:十亿 vs 十亿(2017 美元)
q["nominal_gdp_yoy"] = q.nominal.pct_change(4) * 100
q["real_gdp_qoq_ann"] = q.real.pct_change() * 4 * 100 # 近似折年,正式用 (1+q)**4-1
q.to_csv("gdp_check.csv") # 存档:口径全部由你写下,可复核要点有三:单位换算必须写出来(FRED 名义 GDP 是十亿美元、CPI 是指数)、pct_change(4) 与 pct_change()*4 不是同一件事、季调与未季调序列不可混在同一张表里。
例题 2:核对一个「增速」是否被偷偷换算
某报道称「中国 2024 年消费增长 5.3%,远高于 GDP 增长 5.0%」。核对步骤:
- 社零增速(统计局,名义还是实际?统计局公布的是名义增速,扣除价格因素的实际增速另有值);
- 人均消费支出增速(居民人均可支配收入与支出,年度);
- GDP 支出法中最终消费增量贡献率(≠ 消费增速)。
三个数来自三套表、两种计价。报道若混用,「消费快于 GDP」的结论可能来自名义与实际的不匹配,而不是消费真的扩张更快。核对顺序永远是:先确认每个数出自哪张表,再讨论它们能不能比。
例题 3:用公开接口批量取数并留档
python
import requests, hashlib, datetime, pathlib
def fetch(url: str, out: str) -> None:
r = requests.get(url, timeout=60, headers={"User-Agent": "research/1.0"})
r.raise_for_status()
p = pathlib.Path(out); p.parent.mkdir(parents=True, exist_ok=True); p.write_bytes(r.content)
print(f"{datetime.date.today()} {url}\n sha256={hashlib.sha256(r.content).hexdigest()} bytes={len(r.content)}")把下载日期与文件哈希写进日志,是复现与「数据是否被官方悄悄改过」的唯一证据。严肃写作里这一步比任何图表都重要。
局限与后续
- 开源抓取库不是权威来源。 AkShare、Tushare 等依赖网页结构,接口会随官网改版失效,字段名也可能与官方不一致(例如同名「社会融资规模存量」在不同库里可能是增量或余额)。用它们做研究时,务必抽样对回官方公告。
- 微观数据的可得性决定研究问题。 家庭调查存在无应答与顶层样本代表性问题(财富集中处常被低估);企业库只覆盖注册与上市主体,非正规部门看不到;海关微观数据 2017 年后不再连续可得,使一批研究被迫中止。没有数据的地方,不等于没有经济现象,这是本章最重要的元结论。
- 开放与许可差异影响引用方式。 美国政府数据一般无版权限制(但引用仍需注明出处),IMF/OECD/世行多为开放获取但附带再分发条款,商业终端(Wind、CEIC、Bloomberg)明确禁止再分发数据,学术调查库需签使用协议。截图与转载也在许可范围内,动手前先看条款。
- 本项目其余部分的衔接。 术语的定义与中英对照见术语篇,指标的制度背景散见于各章;若要把这里的某张表和理论对照,理论时间线提供了按年份与学派检索的入口,而《货币银行学》的货币供求理论与《通货膨胀与通货紧缩》分别解释了 M1/M2 与 CPI 在理论中的位置。