示例
以下是在逻辑回归后对被治疗者的平均治疗效果(ATT)进行g计算的例子,以计算平均因果风险比及其置信区间。首先,我们加载数据(在本例中拉隆达
数据集来自MatchIt匹配
)并使用外部函数拟合logistic回归澄清
:
图书馆(澄清)
数据(“拉隆德”,程序包= “匹配”)
#安装模型
适合 <- glm公司(我(re78版本 == 0) ~ 对待 * (年龄 + 教育 + 比赛 + 已婚的 +
节点度 + 第74页 + re75标准),
数据= 拉隆达,家庭= 二项式)
接下来,为了估计ATT风险比,我们从其隐含分布中模拟系数,并计算每个模拟中的利益影响,得出可以总结和用于推断的估计分布:
#模拟多元正态分布的系数
设置种子(123)
sim_参考 <- 模拟(适合)
#基于模拟的边际风险比率ATT
模拟(_E) <- 模拟名(_A)(sim_参考,var(变量)= “款待”,子集= 对待 == 1,
对比= “RR”(右后),详细= 错误的)
模拟(_E)
#>一个`clarify_est`对象(来自`sim_ame()`)
#>-“治疗”的平均边际效应`
#>-1000个模拟值
#>-估计3个数量:
#>鄂[Y(0)]0.2944381
#>鄂[Y(1)]0.2432432
#>0.8261270兰特
#查看估计值、置信区间和p值
总结(模拟测试(_E),空= c(c)(`右后`= 1))
#>估计2.5%97.5%P值
#>鄂[Y(0)]0.294 0.220 0.384。
#>E[Y(1)]0.243 0.199 0.360。
#>RR 0.826 0.619 1.391 0.79
#绘制得出的采样分布
情节(模拟(_E))
下面,我们提供关于框架的信息澄清
用法和其他一些示例。有关完整的小插曲,请参见渐晕(“澄清”)
.
介绍
基于仿真的推理是delta方法和bootstrapping的替代方法,用于对作为模型参数函数的数量进行推理。delta方法涉及多个假设:1)模型系数是正态分布的,2)产生的感兴趣量是正态分配的,3)期望估计量方差的一阶近似值等于真方差。当这些假设不正确时(尤其是当感兴趣的数量是模型系数的复杂非线性函数时),所得推论可能不准确。自举是这个问题的一个解决方案,它不需要任何上述假设来进行有效的非参数推理(尽管需要其他假设);然而,它需要大量的计算,因为原始模型需要多次拟合,而且模型中任何仅在某些引导样本中才明显的问题(例如,无法收敛、完美预测)都会使使用引导变得困难。
基于模拟的推理为这两种方法提供了折衷:它比delta方法更准确,因为它不需要假设2)和3)(尽管它仍然依赖中心极限定理来假设系数是正态分布的),而且它比引导更快、更稳定,因为模型只需要拟合一次。基于模拟的推理涉及使用其估计值和与原始数据拟合的单个模型的协方差,从其多元分布中模拟模型系数,计算每组模型系数的兴趣量,然后使用估计的结果分布作为其抽样分布进行推断。置信区间可以使用所得采样分布的百分位数计算,p值可以通过反转置信区间来计算。或者,如果得到的采样分布是正态分布的,则可以将其标准误差估计为估计值的标准偏差,并可以计算正态Wald置信区间和p值。King、Tomz和Wittenberg(2000)解释了基于模拟的推理方法。
澄清
旨在为基于仿真的推理提供一个简单、通用的界面,并包含一些方便的函数来执行常见任务,如计算平均边际效应。的主要功能澄清
是sim()
,sim_apply()
,总结()
、和绘图()
这些功能共同为基于仿真的推理创建了一个简单的工作流。
还有一些包装纸sim_apply()
用于执行一些常见操作:sim_ame()
计算变量的平均边际效应,镜像边缘效果::比较()
和marginaleffects::marginalefects()
;sim_setx()
以协变量的典型值和它们之间的差异计算预测,镜像Zelig::setx()
和Zelig::setx1()
; 和sim_adrf()
计算平均剂量反应函数。澄清
还支持适合将插补数据与米西姆()
功能。
在上面的示例中,我们使用了sim_ame()
计算ATT,但我们也可以使用模拟应用程序()
,如下所示:
#编写一个函数来计算ATT的g计算估计值
ATT_运行 <- 功能(适合) {
d日 <- 子集(拉隆达,对待 == 1)
d日$对待 <- 1
第1页 <- 意思是(预测(适合,新数据= d日,类型= “响应”))
d日$对待 <- 0
第0页 <- 意思是(预测(适合,新数据= d日,类型= “响应”))
c(c)(`E[Y(0)]`= 第0页,`E[Y(1)]`= 第1页,`RR`= 第1页 / 第0页)
}
#将该函数应用于模拟系数
模拟(_E) <- sim_应用(sim_参考,ATT_运行,详细= 错误的)
模拟(_E)
#>一个`clarify_est`对象(来自`sim_apply()`)
#>-1000个模拟值
#>-估计3个数量:
#>鄂[Y(0)]0.2944381
#>鄂[Y(1)]0.2432432
#>错误率0.8261270
#查看估计值、置信区间和p值;
#它们与使用上面的simame()时相同
总结(模拟(_E),空= c(c)(`右后`= 1))
#>估计2.5%97.5%P值
#>鄂[Y(0)]0.294 0.220 0.384。
#>E[Y(1)]0.243 0.199 0.360。
#>RR 0.826 0.619 1.391 0.79
#绘制得出的采样分布
情节(模拟(_E),参考= 真的,ci= 错误的)
模拟抽样分布图表明,风险比率的抽样分布不是围绕估计值正态分布的,这表明delta方法可能是一个较差的近似值,使用模拟生成的非对称置信区间可能更有效。注意,估计值是根据原始模型系数计算得出的;根据Rainey(2023)的建议,该分布仅用于计算置信区间。
如果我们想计算风险差异,可以使用变压器()
在已生产的输出上:
#将估计值转换为新的感兴趣数量
模拟(_E) <- 转型(模拟(_E),`RD`= `E[Y(1)]` - `E[Y(0)]`)
总结(模拟(_E),空= c(c)(`右后`= 1,`RD`= 0))
#>估计2.5%97.5%P值
#>E[Y(0)]0.2944 0.2199 0.3841。
#>鄂[Y(1)]0.2432 0.1994 0.3602。
#>RR 0.8261 0.6192 1.3908 0.79
#>RD-0.0512-0.1379 0.0927 0.79
我们还可以使用澄清
计算预测器的设定值和典型值的预测值和首次差异,模拟泽利格
的setx()
和设置x1()
函数,使用sim_setx()
:
#跨年龄预测和典型值治疗
#其他预测因素
模拟(_E) <- 模拟设置x(sim_参考,x个= 列表(年龄= 20:50,治疗= 0:1),
冗长的= 错误的)
#每个治疗值的跨年龄预测值图
情节(模拟(_E))
请参见vignette(“Zelig”,package=“clearify”)
有关翻译泽利格
-将基于工作流的工作流转换为使用澄清
估计相同数量的利息。
澄清
为所有估计函数提供并行处理,以加快计算速度。功能也可用于分析适合乘以插补数据的模型。请参见渐晕(“澄清”)
了解更多详细信息。