r - 在 R 中创建损耗权重的逆概率
问题描述
Weuve 等人。(2012) 写了一篇关于实施减员逆概率加权 (IPAW) 的精彩论文,这是一种用于解释纵向研究过程中减员引入的偏差的加权方法。这是该文章的链接:https ://www.ncbi.nlm.nih.gov/pmc/articles/PMC3237815/#R30
我正在做一个项目,我正在尝试实现这个 IPAW 方法,但关于如何实现和编码这个方法的内容并不多,所以我正在寻找一些帮助,以确保我做的一切都是正确的.
我正在处理的数据涉及可能患有痴呆症的老年人,因此使用 IPAW 是有意义的,因为患有痴呆症的人更有可能离开研究。每个人至少有一次基线访问,然后最多进行 12 次后续访问(每个人的平均访问次数约为 3 次)。我的理解是,我应该为每一轮后续访问创建权重,所以我首先将数据子集到某个访问,创建一个变量来判断是否有人在访问后立即退出,然后我继续创建模型和权重。
下面是我用来生成权重的 r 代码:
为第一次跟进访问创建权重(访问 == 1)
for-loop 创建一个用于消耗的变量
(For ease, I am just calling the last observation "x")
data$attrition<-c()
data$attrition[x] <- 1
for (i in 1:x){
if(data$visit[i+1] == 0) {
data$attrition[i] = 1
} else {
data$attrition[i] = 0
}
}
子集仅获取第一次随访的数据
data_visit1 <-subset(data, data$visit == 1)
为减员的可能性创建逐步模型
# specifying null model
null_visit1 <- glm(attrition ~ 1, family = binomial, data = data_visit1)
# specifying full model --
full_visit1 <- glm(attrition~
predictor1 +
predictor2 +
...,
family = binomial, data = data_visit1)
# running combined selection
stepmodel_visit1 <- step(null_visit1, scope=list(lower = null_visit1, upper = full_visit1), direction = "forward", k=2)
创建权重
# re-naming model for denominator
denom.model <- stepmodel_visit1
# creating the predicted categorizations
pd_visit1 <- predict(denom.model, type = "response")
## estimation of numerator of ip weights using stabilizer instead of just 1
numer.model <- glm(attrition ~ 1, family = binomial(), data = data_visit1)
# predicting the numerator values
pn_visit1 <- predict(numer.model, type = "response")
# Putting together the actual weights
data_visit1$weight <- ifelse(data2$attrition == 1, pn_visit1 / pd_visit1, (1- pn_visit1)/(1 - (pd_visit1)))
在此之后,我将权重重新加入到完整的数据集,然后对每一轮后续访问重复该过程。所以我的问题是,这一切看起来都好吗?我会喜欢对我的方法的任何和所有反馈。非常感谢!
解决方案
推荐阅读
- java - 尝试在空对象引用上调用虚拟方法 'Button.setOnClickListener(android.view.View$OnClickListener)'
- java - 如何使用 Apache PdfBox 在 PDF 文件中获取书签页码?
- android - Firebase Firestore 的 RxJava2 包装器,无需切换线程?
- reactjs - 我想将 Bootstrap 集成到我的反应项目中(我们可以通过依赖添加它们)
- java - 如何使用 JUnit 5 为项目中的所有测试初始化基类中的静态资源?
- xml - 如何使用 bash 解析 SOAP 响应?
- c# - 以 Rest-API 身份验证用户身份登录 Azure SQL
- angular - Angular Material MatTable MatTableDataSource 将 datasource.data 设置为接口并出现错误
- regex - 从数字中删除空格 - 保持其余部分不变
- ms-access - Include a customized calculated field in MS Access Query