我正在尝试进行差异分析中的差异,以使用gee模型查看政策影响。下面的示例数据将帮助说明我的问题。
library(geepack)
library(tidyverse)
data(seizure)
seizure.l= reshape(seizure %>% select(y1,y2,trt,age),
varying=list(c("y1", "y2")),
v.names="y", times=0:1, direction="long")
seizure.l <- seizure.l[order(seizure.l$id, seizure.l$time),]
seizure.l=seizure.l %>% mutate(age.group=case_when(age <= 25 ~ "A1",age >25 & age <=31 ~"A2", age >31 ~"A3"))
seizure.l$t <- ifelse(seizure.l$time == 0, 8, 2)
seizure.l = seizure.l %>% mutate_at(c("trt","age.group","time"),list(as.factor))
DiD.gee <- geeglm(y ~ time*trt*age.group , data=seizure.l, id=id,family=poisson,corstr="ar1",offset=log(t))
summary(DiD.gee)
Coefficients:
Estimate Std.err Wald Pr(>|W|)
(Intercept) -0.269 0.213 1.60 0.205
time1 1.538 0.215 51.07 8.9e-13 ***
trt1 0.618 0.602 1.05 0.305
age.groupA2 0.563 0.353 2.54 0.111
age.groupA3 0.599 0.470 1.62 0.203
time1:trt1 -0.263 0.301 0.77 0.382
time1:age.groupA2 -0.240 0.266 0.81 0.367
time1:age.groupA3 -0.546 0.281 3.77 0.052 .
trt1:age.groupA2 -0.943 0.859 1.21 0.272
trt1:age.groupA3 -1.337 0.782 2.93 0.087 .
time1:trt1:age.groupA2 0.850 0.659 1.66 0.197
time1:trt1:age.groupA3 0.544 0.409 1.77 0.183
time1:trt1
系数表示A1
年龄组的“按时间分组”效果。 time1:trt1:age.groupA2
和time1:trt1:age.groupA3
是A2
和A3
年龄组相对于A1
年龄组的“按时间分组”效果,这不是我想要的。对于每个与A1
相关的组,我需要按时间分组效果。我可以通过拆分数据集来实现这一点,例如
seizure.l.A2=seizure.l%>% filter(age.group=="A2")
DiD.gee.A2 <- geeglm(y ~ time*trt , data=seizure.l.A2, id=id,family=poisson,corstr="ar1",offset=log(t))
summary(DiD.gee.A2)
Coefficients:
Estimate Std.err Wald Pr(>|W|)
(Intercept) 0.293 0.282 1.09 0.30
time1 1.298 0.157 68.39 <2e-16 ***
trt1 -0.325 0.613 0.28 0.60
time1:trt1 0.586 0.586 1.00 0.32
是否存在一种在不拆分数据集并运行3个单独回归的情况下获得相同结果的方法?