探索数据世界的幻影:Doppelganger
Doppelganger是一个Python工具包,专为人口合成器设计,用于在代理模型中创建虚构或合成的家庭和个人。这些模型或模拟试图描绘个体行为者的行动。其名称来源于德语,意为“双重影像”,恰如其分地描述了这个库的功能——创建出与真实数据有相似特征但又不完全相同的数据集。
安装和使用
如果你的系统上已经安装了numpy,可以通过运行命令pip freeze | grep numpy
检查版本。如果还没有numpy,建议使用预装了numpy的Python环境,比如Anaconda。要安装Doppelganger,只需在终端输入pip install doppelganger
即可。如果你想参与开发工作,克隆本项目后,在项目根目录下执行pip install .[tests]
,并运行py.test
测试代码功能是否正常。
功能展示
Doppelganger提供了丰富的示例,包括一个Jupyter Notebook,详细演示了如何利用该工具包进行人口合成。你可以在这里找到它:doppelganger_example_full.ipynb。
技术亮点
湾esian网络
Doppelganger的核心是基于湾esian网络的设计。它能从Census Bureau的Public Use Microdata Sample(PUMS)数据构建定向概率图,然后通过网络遍历生成与原始数据在总体上匹配的合成家庭和个人。这种网络既增加了由小样本推断出的大样本的异质性,又保护了源数据的具体属性。
凸优化
Doppelganger允许用户将观察到的或由湾esian网络生成的人口分配到特定地理区域,使得合成人群的特征与用户认为的该地区特征相符。例如,可以分配家庭到PUMA区域,确保收入分布等统计特征与其它数据源一致。凸优化方法保证了解决方案的一致性,并允许用户引入主观权重以平衡控制因素或解决矛盾的控制信息。
应用场景
Doppelganger适用于政府机构进行人口统计研究,以保护个人隐私;在学术领域,可助力模型开发和研究,使研究人员能够更准确地模拟群体行为;对于开发者来说,这是一个强大的工具,可用于构建高度定制化的人工数据集。
开放合作
我们欢迎所有对Doppelganger感兴趣的人加入我们,无论是分享需求,提供改进意见,还是共同开发。请通过GitHub的Issues与我们联系。
致敬与许可
Doppelganger受到了Judea Pearl的启发,并借鉴了Vovsha等人关于人口合成的研究以及开源项目synthpop的精神。Doppelganger遵循Apache 2.0许可证,详情见项目首页。
探索Doppelganger的世界,开启你的数据创新之旅吧!