avatar

司继春(慧航)

上海对外经贸大学·统计与数据科学学院

HHStataToolkit — 高性能 Stata 工具包

HHStataToolkit 是一套为 Stata 开发的高性能统计计算插件,核心模块使用 C 语言编写并支持 OpenMP 多线程并行,部分插件还提供 GPU 加速版本。工具包涵盖核密度估计、核回归、决策树与随机森林、双重机器学习等常用计量与机器学习方法,同时附带若干实用的数据清洗与辅助命令。

核心插件

插件 功能 亮点
kdensity2 核密度估计 支持一维/多元、多分组、乘积核、交叉验证选带宽;训练/预测分离;GPU 加速支持
nwreg Nadaraya-Watson 核回归 支持多元回归、多分组、稳健标准误、CV 带宽、局部多项式回归(poly())、导数估计(derivatives());训练/预测分离;GPU 加速支持
fangorn 决策树与随机森林 Gini/Entropy/MSE 分裂准则、预排序加速、CV 选深度、OOB 误差、MDI 变量重要性、分位数分裂策略(ntiles)、Mermaid 流程图导出
xpofangorn 双重机器学习部分线性模型 K-折交叉拟合、自动识别二元/连续处理变量、随机森林估计干扰函数、支持聚类标准误

特色功能

  • 训练/预测分离(target split):通过 target() 选项将样本划分为训练集与目标集,便于处理组/对照组的反事实预测与共同支撑分析。
  • 多维分组原生支持kdensity2nwreg 可直接使用多个分组变量(含字符串变量自动编码),无需官方命令的单 by() 限制。
  • 数值可复现:所有 C 插件已通过 1 核与 16 核环境下的 bit-identical 可复现性验证,并行计算不引入数值差异。
  • 跨平台:支持 Linux(GCC)、macOS(Intel/Apple Silicon)与 Windows(MinGW 交叉编译)。

实用命令(纯 Stata)

single_ado/ 目录下包含若干纯 Stata 编写的辅助命令,无需编译即可使用:

命令 功能
csadensity 基于核密度的处理组/对照组共同支持域(CSA)识别,支持分组计算
bprecall 二元分类评估指标:精确率(precision)、召回率(recall)、准确率(accuracy)、F1 分数
countdistinct 统计变量组合的唯一值数量,支持生成标记变量
dta2md 将 .dta 文件的元数据与描述性统计导出为 Markdown 格式,便于 LLM 读取数据集文档
gen_init_var 面板数据初始化:从基年观测值向前填充生成面板变量
gencatutility 为有序分类变量计算连续效用分数
labelvalidsample 生成完整观测(无缺失值)的二进制标记变量

使用示例

各模块的完整使用示例已随附在项目中,包含详细的数据生成过程、Stata 代码和结果说明:

csadensity — 共同支持域

基于 test_csa.do 的两个测试场景,说明分组共同支持域的计算与可视化。

nwreg — Nadaraya-Watson 核回归

使用与 fangorn 示例相同的 DGP,展示核回归在反事实预测中的应用,可与决策树/随机森林的结果进行对比。

fangorn — 决策树与随机森林

展示 target() 选项在因果推断中用于反事实预测的核心功能,包含有放回抽样、组内预测和 Mermaid 流程图导出。

开源信息

  • 许可证:MIT
  • 代码仓库 GitHub
  • 开发环境:Stata 18 MP,C11/OpenMP,可选 CUDA

注意:对于因果推断,更好的方法是使用 causal forestgeneralized random forest(Athey & Imbens, 2016; Athey, Tibshirani & Wager, 2019),仍待开发。当前 xpofangorn 通过双重机器学习(DML)提供了部分线性模型的估计,而 fangorntarget() 选项提供了一种简化的反事实预测方式,但两者尚不具备异质性处理效应(CATE)的无偏估计、honest 分裂等 causal forest 的核心特性。