观测数据的HTE分析

德鲁·迪默里(ddimmery@univie.ac.at)

2023年8月11日

介绍

在这个示例分析中,我将演示如何运行分析在观察环境中使用肯尼迪方法(2020)。

该分析将重点关注使用机器学习集成(通过SuperLearner)来估计滋扰函数,然后提供tibble条件治疗效果的估计及其相关的标准错误。

加载包和安装环境

图书馆(星期三)
图书馆(ggplot2)
图书馆(dplyr)

模拟数据

如果使用实际数据,只需将此块替换为适当的读卡器::read_csv调用或等效命令,创建tibble。将假定此tibble存储为数据对于剩余部分本文档的。

注意,数据类型可以是连续的或离散的,并且tibble中可能有不包含在任何结果分析。

设置种子(100)
n个<- 500
数据<- 易怒的(
    液体= 1:n个
)%>%
    突变(
        x1个= rnorm公司(n) ,
        2个= 因素(样品(1:4,个,问题= c(c)(1 / 100,39 / 100,1 / 5,2 / 5),更换= 真的)),
        x3个= 因素(样品(1:,个,问题= c(c)(1 / 5,1 / 5, / 5),更换= 真的)),
        x4个=(x1个+ rnorm公司(n) )/ 2,
        x5个= rnorm公司(n) ,
        秒= 普洛吉斯(x1* 0.3 - as.双(x2)* 0.25 +x5个* 0.5),
        一个= 红细胞瘤(编号:,1,ps),
        年=(
+x1个-*(x1个- 意思是(x1))+(4 * 红细胞瘤(编号:,1,0.5)- 1)**(x2== 2)+
*(x2个== )+ 0.5 **(x2== 4)+
            0.25 * rnorm公司(n)
),
        w个= 0.1 + 再膨胀(编号:,1 / 0.9)
)

定义配方

倾向评分和结果模型

我们估计倾向得分和结果(T-learner)插件使用机器学习模型集合进行估计,包括线性模型、GAM、正则化模型复杂性数组回归。在此示例中,不包括非线性模型(由于运行时),但可以通过取消注释关联的线。

模型的每个单独组件都提供了一个列表超参数,对其进行全交叉积对得到的模型进行了估计。例如,SL.glmnet公司扫过一个超参数(脊和拉索)。具有每个超参数值的模型将是估计并合并到整体中。请注意SL.glmnet公司自动调整正则化参数使用cv.glmnet公司,因此它不包括在超参数。

利息数量

感兴趣的数量决定了如何向用户。你可以将其视为决定结果应在结果图表中绘制。

为了简单起见,这个示例只提供了两个结果之一方法:-离散协变量分层,条件效应为在协变量的每个不同水平上绘制连续协变量使用局部线性回归通过nprobust(不可靠)Calonico、Cattaneo和Farrell(2018年)。请参阅,类似地,Kennedy、Ma、McHugh和Small(2017)为这种方法。结果是通过100个分位数的网格获得的协变量的域。

提供的另一个兴趣量是变量学习条件效应联合模型的重要性(总的来说协变量)。威廉姆森介绍了实施的方法,Gilbert、Carone和Simon(2020年)。

hte _ cfg公司<- 基本配置()%>%
    添加属性记分模型(“SL.glm.交互”)%>%
    添加属性记分模型(“SL.glmnet”,阿尔法= c(c)(0,1))%>%
    添加属性记分模型(
        “SL.glmnet.交互”,阿尔法= c(c)(0,1)
)%>%
    添加输出模型(“SL.glm.交互”)%>%
    添加输出模型(“SL.glmnet”,阿尔法= c(c)(0,1))%>%
    添加输出模型(“SL.glmnet.交互”,阿尔法= c(c)(0,1))%>%
    添加输出诊断(“RROC”)%>%
    添加效果模型(“SL.glm.交互”)%>%
    添加效果模型(“SL.glmnet”,阿尔法= c(c)(0,1))%>%
    添加效果模型(“SL.glmnet.交互”,阿尔法= c(c)(0,1))%>%
    添加效果诊断(“RROC”)%>%
    添加建模器(_M)(“分层”,x2,x3)%>%
    添加建模器(_M)(“内核平滑”、x1、x4、x5)%>%
    添加vimp(示例_拆分= 错误的)->
hte _ cfg公司

估算模型

为了实际执行评估,以下内容就足够了。请注意文档使这一切变得更加复杂花括号和刘海。

数据%>%
    附件配置(hte _ cfg)%>%
    生成_拆分(液体,.num_splits数= )%>%
    产品_插头_估算(
是的,
a、,
x1、x2、x3、x4、x5,
)->预处理数据

施工_假_成果(prepped_data,y,a)%>%
    估计_ QoI(x1、x2、x3、x4、x5)->结果
结果
###A台:853×6##估计项值水平估计标准错误##<chr><chr><dbl><chr><dbl>##1 MCATE x1-1.79<NA>4.07 0.556##2 MCATE x1-1.72<NA>3.95 0.507##3 MCATE x1-1.63<不适用>3.78 0.438##4 MCATE x1-1.53<NA>3.62 0.382##5 MCATE x1-1.43<NA>3.44 0.324##6 MCATE x1-1.34<不适用>3.29 0.280##7 MCATE x1-1.25<北美>3.15 0.245##8 MCATE x1-1.20<不适用>3.07 0.227##9 MCATE x1-1.17<NA>3.02 0.218##10 MCATE x1-1.13<不适用>2.96 0.206## # 还有843行

自动测试设备

滤波器(结果,格雷普(“SATE | PATE”,估计)
###A台:1×6##估计项值水平估计标准错误##<chr><chr><dbl><chr><dbl>##1 SATE<NA>NA<NA>1.79 0.121

绘图

绘图集合系数

滤波器(结果,格雷普(“SL系数”,估计))%>%
变异(水平= 因素(水平,水平= c(c)(“控制响应”,“治疗反应”)))%>%
ggplot图(原子发射光谱(
            x个= 重新排序(期限、估计),
            年=估计,
            伊敏=估计- 1.96 *标准错误,
            ymax公司=估计+ 1.96 *标准错误(_E)
))+
    地理_阿比林(截距= 0,坡度= 0,线型= “虚线”)+
    地理点范围()+
    expand_limits(扩展限制)(年= 0)+
    缩放_离散(“型号名称”)+
    scale_y_连续(“超级学习者合奏中的系数”)+
    facet_wrap(面覆盖)(~水平)+
    坐标_滑块()+
    gg标题(“超级学习者合奏”)+
    主题_最小()

绘制每个子模型的风险

滤波器(结果,格雷普(“SL风险”,估计))%>%
变异(
    水平= 因素(水平,水平= c(c)(“控制响应”,“治疗反应”,“效果面”))
)%>%
ggplot图()+
    地理_阿比林(截距= 0,坡度= 0,线型= “虚线”)+
    地理点范围(
        原子发射光谱(
            x个= 重新排序(术语,-估计),
            年=估计,
            伊敏=估计- 1.96 *标准错误,
            ymax公司=估计+ 1.96 *标准错误)
)+
    expand_limits(扩展限制)(年= 0)+
    缩放_离散(“型号名称”)+
    scale_y_连续(“超级学习者组合中的CV风险”)+
    面部包裹(~水平,天平= “免费_x”)+
    坐标_滑块()+
    gg标题(“子模型风险评估”)+
    主题_最小()

绘制回归ROC曲线

滤波器(结果,格雷普(“RROC”,估计)%>%
突变(
    水平= 因素(水平,水平= c(c)(“控制响应”,“治疗反应”,“效果面”))
)%>%
ggplot图()+
    地理线(
        原子发射光谱(
            x个=值,
            年=估计
)
)+
    地理点(
        原子发射光谱(x个=值,年=估计),
        数据= 滤波器(结果,格雷普(“RROC”,估计))%>% 分组方式(_B)(水平)%>% 切片_头部(n个= 1)
)+
    扩展限制(_L)(年= 0)+
    scalex连续(“高估”)+
    scale_y_连续(“低估”)+
    facet_wrap(面覆盖)(~水平,天平= “免费_x”)+
    坐标_滑块()+
    gg标题(“回归ROC曲线”)+
    主题_最小()

VIMP绘图

ggplot图(滤波器(结果,估计== “VIMP”(VIMP)))+
    地理_阿比林(截距= 0,坡度= 0,线型= “虚线”)+
    地理点范围(
        原子发射光谱(
            x个=术语,
            年=估计,
            伊敏=估计- 1.96 *标准错误,
            ymax公司=估计+ 1.96 *标准错误(_E)
)
)+
    扩展限制(_L)(年= 0)+
    缩放x离散(“协变量”)+
    scale_y_连续(“从完整模型减少R²”)+
    坐标_滑块()+
    gg标题(“协变重要性”)+
    主题_最小()

绘制连续协变量的MCATE

对于(覆盖在里面 c(c)(“x1”,“x4”,“x5”)) {
    ggplot图(滤波器(结果,估计== “MCATE”,术语==cov))+
        地理_阿比林(截距= 0,坡度= 0,线型= “虚线”)+
        地理_带状(
            原子发射光谱(
                x个=值,
                伊敏=估计- 1.96 *标准错误,
                ymax公司=估计+ 1.96 *标准错误(_E)
),
            阿尔法= 0.75
)+
        地理线(
            原子发射光谱(x个=值,年=估算)
)+
        expand_limits(扩展限制)(年= 0)+
        scalex连续(“协变量水平”)+
        scale_y_连续(“卡特”)+
        gg标题(粘贴(“边际效应”,cov))+
        主题_最小()->普通合伙人
    打印(通用)
}

绘制离散协变量的MCATE

对于(覆盖在里面 c(c)(“x2”,“x3”)) {
    ggplot图(滤波器(结果,估计== “麦卡特”,术语==cov))+
        地理_阿比林(截距= 0,坡度= 0,线型= “虚线”)+
        地理点范围(
            原子发射光谱(
                x个=水平,
                年=估计,
                伊敏=估计- 1.96 *标准错误,
                ymax公司=估计+ 1.96 *标准错误(_E)
)
)+
        expand_limits(扩展限制)(年= 0)+
        缩放x离散(“协变量水平”)+
        scale_y_连续(“猫”)+
        gg标题(粘贴(“边际效应”,cov))+
        主题_最小()->普通合伙人
    打印(通用)
}

会话信息

打印(sessionInfo(会话信息)())
##R版本4.3.1(2023-06-16)##平台:aarch64-apple-darwin22.4.0(64位)##运行于:macOS Ventura 13.4.1####矩阵产品:默认##BLAS:/opt/自制/酒窖/openblas/0.3.23/lib/libopenblasp-r0.3.23.dylib##LAPACK:/opt/自制/窖藏/r/4.3.1/lib/r/lib/libRlapack.dylib;LAPACK 3.11.0版####区域设置:##[1]C/en_US.UTF-8/en_US.UTF-8/C/en_US UTF-8/en_US.UTF-8####时区:欧洲/维也纳##tzcode源:内部####附加的基本包:##[1]统计图形grDevices utils数据集方法库####其他附加包:##[1]magrittr_2.0.3掌垫=0.1.1 nnls_1.4##[4]超级学习者-2.0-28.1 dplyr_1.1.2 ggplot2_3.4.2##[7]tidyhte_1.0.2####通过命名空间加载(未附加):##[1]vimp_2.3.1 sass_0.4.6 utf8_1.2.3##[4]通用_0.1.3快速块_0.2.0形状_1.4.6##[7]格子_0.21-8距离_0.1.9 hms_1.1.3##[10]摘要_0.6.33评估_0.21网格_4.3.1##[13]迭代器_1.0.14 fastmap_1.1.1矩阵_1.5-4.1##[16]glmnet_4.1-7 foreach_1.5.2 jsonlite_1.8.7##[19]progress_1.2.2后台_1.4.1 survival_3.5-5##[22]purr_1.0.1风扇_1.0.4比例_1.2.1##[25]代码工具_0.2-19 jquerylib_0.1.4 cli_3.6.1##[28]rlang_1.1.1蜡笔_1.5.2 scclust_0.2.3##[31]munsell_0.5.0花键_4.3.1和r_2.5.0##[34]cachem_1.0.8 yaml_2.3.7工具_S3.1##[37]checkmate_2.2.0 colorspace_2.1-0引导_1.3-28.1##[40]nprobust_0.4.0 vctrs_0.6.3 R6_2.5.1##[43]生命周期_1.0.3 MASS_7.3-60 pkgconfig_2.0.3##[46]柱_1.9.0 bslib_0.5.0 gtable_0.3.3##[49]胶_1.6.2数据。表_1.14.8 Rcpp_1.0.11##[52]高r_0.10 xfun_0.39 tibble_3.2.1##[55]tidyselect_1.2.0编织_1.43远_2.1.1##[58]htmltools_0.5.5标签_0.4.2 rmarkdown_2.23##[61]gam_1.22-2编译器.4.3.1四程序_1.5-8##[64]预处理单元_1.1.1加权ROC_2020.1.31