使用pandas的随机区组分配

stochatreat的Python项目详细描述


stochatreat

简介

这是一个python模块,使用pandas实现块随机化。主要考虑到RCT,它也适用于任何其他场景,您希望在blocksstrata中随机分配治疗。

安装

pip install stochatreat

用法

单个群集:

fromstochatreatimportstochatreatimportnumpyasnpimportpandasaspd# make 1000 households in 5 different neighborhoods.np.random.seed(42)df=pd.DataFrame(data={'id':list(range(1000)),'nhood':np.random.randint(1,6,size=1000)})# randomly assign treatments by neighborhoods.treats=stochatreat(data=df,# your dataframeblock_cols='nhood',# the blocking variabletreats=2,# including controlidx_col='id',# the unique id columnrandom_state=42)# merge back with original datadf=df.merge(treats,how='left',on='id')# check for allocationsdf.groupby('nhood')['treat'].value_counts().unstack()# previous code should return thistreat0.01.0nhood1105105295953959541031035102102

多个簇和治疗概率:

fromstochatreatimportstochatreatimportnumpyasnpimportpandasaspd# make 1000 households in 5 different neighborhoods, with a dummy indicatornp.random.seed(42)df=pd.DataFrame(data={'id':list(range(1000)),'nhood':np.random.randint(1,6,size=1000),'dummy':np.random.randint(0,2,size=1000)})# randomly assign treatments by neighborhoods and dummy status.treats=stochatreat(data=df,block_cols=['nhood','dummy'],treats=2,probs=[1/3,2/3],idx_col='id',random_state=42)# merge back with original datadf=df.merge(treats,how='left',on='id')# check for allocationsdf.groupby(['nhood','dummy'])['treat'].value_counts().unstack()# previous code should return thistreat0.01.0nhooddummy1038741336520356912957303058134684036721336550346713568

致谢

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么stripVersion不能在带有mojo依赖项的mavendependencyplugin上工作   java存储具有不同功能的大量对象   java Spring MockMvc自定义验证器未在Spring容器中注册/调用   javascript程序编辑实体而不是添加   C++如何在java上检索图形卡信息?   java如何在没有方法参数的方法上使用@cacheable注释的键   java如何获取特定用户或学生的JSON   java可序列化AjaxRequestTarget   java Tomcat 8禁用分块编码过滤器   java这个简单的Swingbase类是线程安全的吗?   java调用Gdi32。使用JNA获取对象   如何使用来自其他类Java Android onClick的方法?   json序列化已经有了id(java.lang.String)的POJO   java使用jsp上传多个文件?   java有没有办法为Android项目在EclipseIndigo上设置JVM参数?   Eclipse中的java,为什么它告诉我添加一个已经存在的分号?   Java中的正则表达式拆分行   Java:在单行中赋值