
1. 文档目的
本项目用于复现发表于国内管理学领域顶尖期刊《管理世界》2026 年第 2 期的论文《一种新的购买力平价汇总方法——兼论世界银行国际比较项目(ICP)汇总方法的不足及改进》的核心方法。该论文由新疆大学经济与管理学院天池特聘教授陈梦根(第一作者)与合作者共同完成,并以新疆大学经济与管理学院为第一署名单位。
论文在传统 PPP 汇总方法基础上,提出了新的购买力平价汇总方法 CL-SW-GEKS(Cost of Living - Spatial Weighting - GEKS)。
根据论文介绍,该方法相较传统 GEKS 及其他常见汇总方法,在经济效应一致性、可靠性和奇异数据形态下的稳健性方面表现更优,并且更接近“最优”点估计 GEKS 指数。
虽然原作者已经公开了使用到的数据和代码,但由于代码的结构比较混乱,使用起来可能有一定困难。我们特将核心方法代码整理提取出来供大家使用。
本代码对应的是该论文核心方法的程序化复现,重点包括:
• 基于 ICP 2021 数据构造价格、数量和支出矩阵。 • 基于需求系统思想对数量进行调整,生成用于生活成本修正的输入。 • 构造双边 Fisher 指数及其扩展版本。 • 在 GEKS 汇总框架中引入空间加权思想,估计 CL-SW-GEKSu与CL-SW-GEKSs。• 与 GEKS、CPD、IDB、GK、GAIA、SS、MPCP、Blended、Own Share、Van Yzeren、Gerardi 等方法进行对比,并输出结果表。
2. 核心文件
• CL-SW-GEKS方法.R
负责实现CL-SW-GEKS核心计算流程,包括数据读取、双边指数构造、距离矩阵、最小生成树、空间加权回归和 PPP 结果恢复。• 表1 各汇总方法PPP测算结果.R
负责组织完整复现流程,调用CL-SW-GEKS方法.R,并同时计算其他 PPP 汇总方法,最终输出对比表。• QUAIDS估计+双曲正弦变换.do
在 Stata 中基于tdata.xlsx进行 QUAIDS 估计和双曲正弦变换,生成后续 R 代码需要使用的quaidsresu.csv。

层级模型 (lme4) 简介
什么是层级模型?
层级模型(Hierarchical Models),也称为多水平模型(Multilevel Models)或线性混合效应模型(Linear Mixed-Effects Models, LMM),是一种用于处理具有嵌套结构数据的统计方法。例如:学生嵌套在班级中、重复测量嵌套在个体中、或观测值嵌套在不同地点。
传统的线性回归假设所有观测值相互独立,但在层级数据中,同一组内的观测值往往存在相关性。忽略这种相关性会导致标准误估计偏差,从而得出错误的推断结论。
为什么使用 lme4?
lme4 是 R 语言中最强大且广泛使用的包之一,专门用于拟合线性混合效应模型 (lmer) 和广义线性混合效应模型 (glmer)。
核心优势:
- 处理非独立数据:能够同时建模固定效应(总体趋势)和随机效应(组间差异)。
- 灵活性:支持复杂的随机效应结构(如随机截距、随机斜率及其相关性)。
- 计算效率:基于 C++ 编写,能快速处理大规模数据集。
- 稀疏矩阵技术:有效处理高维随机效应。
模型公式语法
在 lme4 中,模型公式通常遵循以下格式:
lmer(Y ~ Fixed_Effects + (Random_Effects | Grouping_Variable), data = dataset)
Y: 连续型因变量。Fixed_Effects: 固定效应部分,与普通线性回归类似。(1 | Group): 表示仅随机截距。(X | Group): 表示随机截距和随机斜率。
本示例将使用 sleepstudy 数据集,分析睡眠剥夺天数对反应时间的影响,并考虑个体差异带来的随机效应。

生存分析 (Survival Analysis) 简介
什么是生存分析?
生存分析是一类用于分析直到某个特定事件发生所需时间的统计方法。该“事件”可以是死亡、疾病复发、机器故障或客户流失等。其核心特点在于能够处理删失数据 (Censored Data),即在研究结束时事件尚未发生的观测值。
本案例使用的数据与方法
本案例基于 R 语言 survival 包中内置的 lung 数据集(晚期肺癌患者临床数据)。
主要分析步骤:
- 数据准备:清洗数据,定义生存时间变量和事件状态变量(将原始数据中的状态编码转换为标准的 0/1 格式)。
- Kaplan-Meier 估计:非参数方法,用于估算不同组别(如男性 vs 女性)的生存函数,并绘制生存曲线。
- Log-Rank 检验:用于比较不同组别之间的生存分布是否存在显著差异。
- Cox 比例风险模型:半参数回归模型,用于评估多个协变量(如性别、年龄)同时对生存风险的影响,计算风险比 (Hazard Ratio, HR)。
运行环境要求
- R 版本 >= 4.0.0
- 必需 R 包:
survival,survminer
如何运行
将 main.R 中的代码复制到 R 控制台或 RStudio 中直接运行即可生成分析结果。

OpenAI API 调用 R 版简介
本项目提供了一个基于 R 语言的轻量级脚本,用于轻松调用 OpenAI 的 Chat Completion API。
主要功能
- 环境安全:支持从系统环境变量读取 API Key,避免硬编码敏感信息。
- 灵活配置:允许用户自定义模型名称(如
gpt-3.5-turbo,gpt-4)和最大生成 token 数。 - 错误处理:内置 HTTP 状态码检查,当 API 返回错误时会抛出清晰的异常信息。
- 依赖精简:仅依赖
httr和jsonlite两个常用包,易于部署。
使用前准备
- 确保已安装 R 语言环境。
- 安装依赖包:
install.packages(c("httr", "jsonlite"))。 - 设置环境变量
OPENAI_API_KEY为您的真实密钥。 - 将
main.R中的示例代码取消注释即可运行测试。

ABM 仿真基础框架简介
概述
本项目提供了一个基于 R 语言的基于智能体的建模 (Agent-Based Modeling, ABM) 最小可行框架 (MVP)。该框架旨在演示多智能体系统的基本构建逻辑,包括智能体的初始化、环境定义、行为规则更新以及数据记录。
核心组件
-
智能体 (Agent):
- 拥有独立属性:ID、坐标 (x, y)、状态 (state)。
- 在本示例中,状态模拟简单的传染病传播(0=健康,1=感染)。
-
环境 (Environment):
- 定义了一个离散的网格空间 (
grid_size)。 - 管理智能体的集合及仿真步数。
- 定义了一个离散的网格空间 (
-
行为规则 (Rules):
- 移动规则:每个时间步,智能体在网格内进行随机游走(Random Walk)。
- 交互规则:当感染者与健康者处于同一网格坐标时,健康者被感染。
适用场景
- 教学演示:理解 ABM 的基本循环(初始化 -> 更新 -> 记录)。
- 原型开发:作为复杂社会仿真、流行病传播或群体行为研究的起点。
运行要求
- R 版本 >= 4.0
- 推荐包:
ggplot2,dplyr(用于数据处理和绘图,虽核心逻辑不强制依赖,但建议安装以进行结果分析)。
使用方法
直接在 R 或 RStudio 中 sourced main.R 文件,调用 run_simulation() 函数并传入参数即可启动仿真。

QAP 回归简介
什么是 QAP?
QAP (Quadratic Assignment Procedure,二次指派程序) 是一种针对关系数据(矩阵数据)的非参数统计检验方法。在社会网络分析中,传统的普通最小二乘法 (OLS) 回归往往失效,因为网络数据中的观测值(即边)之间不是独立的(例如,A 与 B 的关系可能受 A 与 C 的关系影响),这违反了 OLS 的独立性假设。
核心原理
QAP 回归通过随机置换(Permutation)来解决这一问题:
- 保持因变量矩阵 $Y$ 不变。
- 对自变量矩阵 $X$ 的行和列进行同步随机重排(置换)。
- 在每次置换后重新计算回归系数。
- 重复此过程数千次(如 1000 次),构建出系数的经验分布。
- 将实际观测到的系数与该经验分布进行比较,从而计算出准确的 P 值。
适用场景
- 分析两个或多个社会网络矩阵之间的关系(如:友谊网络是否影响了信息传播网络)。
- 分析属性相似性矩阵与关系矩阵之间的关联(如:性别相似性是否预测了合作频率)。
- 任何数据点之间存在相互依赖性(非独立性)的矩阵回归问题。
本脚本说明
main.R 脚本使用了 R 语言中的 sna 包,演示了如何构建模拟矩阵数据,并调用 qaplm 函数执行 QAP 线性回归,最后输出回归系数及基于置换检验的显著性水平。
- 1
- 2
- 3
- 4
- 5
- 6
- 19