首页 > 解决方案 > 在 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)))

在此之后,我将权重重新加入到完整的数据集,然后对每一轮后续访问重复该过程。所以我的问题是,这一切看起来都好吗?我会喜欢对我的方法的任何和所有反馈。非常感谢!

标签: rstatisticsprobabilityweightedinverse

解决方案


推荐阅读