我目前正在使用两个数据框,并尝试使用小鼠插补进行线性模型分析。然而,当尝试使用函数
geeglm
进行分析时,似乎无法识别 Timepoint 变量。为了解决这个问题,我将其转换为一个因素,但不幸的是,问题仍然存在。
有人遇到过类似的问题或者可以提供一些如何解决这个问题的指导吗?任何见解或建议将不胜感激!
带有插补的脚本(不起作用):
Populations_impute <- Populations %>%
select(PID, Group, ITT_SS) %>%
mutate(ITT_SS = as.logical(ITT_SS)) %>%
filter(ITT_SS)
PlaqueVolume <- Data %>%
filter(as.logical(Use_Plaque)) %>%
select(ID, OCT_BL_PlaqueVolume, OCT_FU_PlaqueVolume) %>%
filter(!is.na(OCT_BL_PlaqueVolume) & !is.na(OCT_FU_PlaqueVolume)) %>%
rename(PID = ID) %>%
pivot_longer(cols = c(OCT_BL_PlaqueVolume, OCT_FU_PlaqueVolume),
names_to = "Timepoint",
values_to = "PlaqueVolume")
PlaqueVolume$Timepoint <- factor(PlaqueVolume$Timepoint, levels = c("OCT_BL", "OCT_FU"))
PlaqueVolume <- left_join(Populations_impute, PlaqueVolume)
imputed_data <- mice(PlaqueVolume, m = 5, method = "pmm", seed = 123)
fit_geeglm <- function(data) {
geeglm(PlaqueVolume ~ Timepoint * Group,
data = data,
id = as.factor(PID),
corstr = 'exchangeable')
}
fit_list <- lapply(imputed_data$imp, fit_geeglm)
fit.gee <- pool(fit_list)
summary(fit.gee)
anova(fit.gee)
emm <- emmeans(fit.gee, ~ Timepoint | Group)
confint(contrast(emm, 'poly', interaction = 'poly', by = NULL))
我的数据:
dput(head(Data))
structure(list(ID = c("MDM003", "MDM007", "MDM007", "MDM009",
"MDM011", "MDM014"), Fecha_BL = structure(c(1558310400, 1558915200,
1558915200, 1559001600, 1560211200, 1561507200), tzone = "UTC", class = c("POSIXct",
"POSIXt")), Fecha_FU = structure(c(1608163200, 1593648000, 1593648000,
1593734400, 1594252800, 1594339200), tzone = "UTC", class = c("POSIXct",
"POSIXt")), nPlaca = c(1, 1, 2, 1, 1, 1), Use_Plaque = c(1, 0,
1, 1, 1, 1), Arteria = c("CD", "CD", "CD", "CD", "CD", "DA"),
OCT_BL_MaxNCperimeter = c(360, 211, 301, 360, 360, 202),
OCT_BL_MinFCT = c(40, 70, 70, 50, 70, 40), OCT_BL_FrameMinFCT = c(177,
104, 304, 159, 239, 313), OCT_BL_TCFA = c(1, 1, 1, 1, 1,
1), OCT_BL_Calcium = c(1, 1, 1, 1, 0, 1), OCT_BL_CaLength = c(3.3,
6.4, 11, 9.5, NA, 4.9), OCT_BL_MaxCaPerimeter = c(99, 139,
177, 77, NA, 281), OCT_BL_MacrofGrade = c(3, 1, 2, 2, 4,
1), OCT_BL_FrameMacrofGrade = c(318, 79, 372, 122, 272, 183
), OCT_BL_Neovasos = c(1, 0, 1, 0, 1, 1), OCT_BL_Thrombus = c(1,
0, 0, 0, 0, 0), OCT_FU_MaxNCperimeter = c(360, 228, 303,
360, 360, 311), OCT_FU_MinFCT = c(50, 100, 70, 50, 120, 50
), OCT_FU_MatcFrameMinFCT = c(141, 239, 433, 311, 308, 267
), OCT_FU_TCFA = c(1, 0, 1, 1, 1, 1), OCT_FU_Calcium = c(1,
1, 1, 1, 0, 1), OCT_FU_CaLength = c(4.6, 7.1, 12, 9.7, NA,
6), OCT_FU_MaxCaPerimeter = c(116, 156, 164, 77, NA, 286),
OCT_FU_MacrofGrade = c(4, 1, 3, 2, 3, 2), OCT_FU_FrameMacrofGrade = c(205,
207, 480, 288, 330, 61), OCT_FU_Neovasos = c(1, 0, 1, 0,
1, 1), OCT_FU_Thrombus = c(1, 0, 0, 0, 0, 0), OCT_BL_LumenVol = c(177.154,
37.502, 202.078, 136.738, NA, 82.416), OCT_BL_EEMvol = c(256.178,
84.592, 282.48, 302.85, NA, 126.404), OCT_BL_PlaqueVolume = c(79.024,
47.09, 80.402, 166.112, NA, 43.988), OCT_FU_LumenVol = c(161.456,
45.228, 171.254, 134.074, NA, 90.732), OCT_FU_EEMvol = c(281.546,
79.114, 268.504, 301.474, NA, 135.132), OCT_FU_PlaqueVolume = c(120.09,
33.886, 97.25, 167.4, NA, 44.4), OCT_BL_EEMfeas = c(93, 24,
61, 72, 0, 124), OCT_BL_EEMnotFeas = c(13, 15, 22, 0, 48,
0), OCT_BL_nFrames = c(106, 39, 83, 72, 48, 124), OCT_BL_MinLA = c(2.71,
7.14, 9.18, 5.4, 4.26, 2.78), OCT_BL_MeanLA = c(9.473207,
8.798205, 13.496627, 9.654028, 5.661459, 4.660887), OCT_BL_MaxLA = c(13.38,
11.25, 19.05, 14.06, 7.56, 7.48), OCT_BL_MinEEMa = c(9.89,
16.7, 19.72, 16.2, NA, 5.74), OCT_BL_MeanEEMa = c(14.779033,
18.388334, 23.652786, 21.328333, NA, 7.441774), OCT_BL_MaxEEMa = c(18.85,
19.71, 27.33, 26.58, NA, 11.6), OCT_BL_MinPA = c(2.68, 7.58,
7.15, 8.03, NA, 0.35), OCT_BL_MeanPA = c(4.693548, 10.207084,
9.123279, 11.674306, NA, 2.780887), OCT_BL_MaxPA = c(7.12,
12.41, 13.01, 17.31, NA, 6.13), OCT_BL_MinPB = c(19.77661,
44.37939, 27.453987, 41.9967, NA, 6.024096), OCT_BL_MeanPB = c(32.45182,
55.226974, 38.897007, 55.25798, NA, 36.10352), OCT_BL_MaxPB = c(55.236618,
63.408394, 52.322853, 73.09966, NA, 62.170387), VAR00023 = c("MDM003",
"MDM007", "MDM007", "MDM009", "MDM011", "MDM014"), OCT_FU_EEMfeas = c(120,
23, 58, 73, 0, 130), OCT_FU_EEMnotFeas = c(11, 16, 24, 0,
54, 0), OCT_FU_nFrames = c(131, 39, 82, 73, 54, 130), OCT_FU_MinLA = c(2.79,
7.32, 9.15, 5.94, 3.7, 3.02), OCT_FU_MeanLA = c(7.468397,
9.83359, 13.785976, 9.332877, 5.894259, 4.977308), OCT_FU_MaxLA = c(13.11,
12.3, 20.62, 13.98, 7.55, 7.28), OCT_FU_MinEEMa = c(9.63,
18.17, 18.17, 16.37, NA, 6.22), OCT_FU_MeanEEMa = c(13.282833,
18.844783, 23.906724, 20.943151, NA, 7.856308), OCT_FU_MaxEEMa = c(18.14,
20.03, 29.16, 26.43, NA, 11.09), OCT_FU_MinPA = c(2.93, 7.2,
5.72, 9.01, NA, 0.66), OCT_FU_MeanPA = c(5.483417, 8.081739,
8.702069, 11.610274, NA, 2.879), OCT_FU_MaxPA = c(8.86, 9.48,
12.39, 16.18, NA, 5.78), OCT_FU_MinPB = c(24.448316, 38.555497,
25.684778, 43.771186, NA, 10.37594), OCT_FU_MeanPB = c(42.030953,
42.917818, 36.746258, 55.862126, NA, 35.750533), OCT_FU_MaxPB = c(60.935351,
51.465798, 47.856315, 71.311847, NA, 62.419006)), row.names = c(NA,
-6L), class = c("tbl_df", "tbl", "data.frame"))
dput(head(Populations))
structure(list(PID = c("MDM003", "MDM007", "MDM009", "MDM010",
"MDM011", "MDM014"), Group = c("B", "B", "A", "B", "B", "A"),
ITT = c(1, 1, 1, 0, 1, 1), ITT_SS = c(1, 1, 1, 1, 1, 1),
PP = c(1, 1, 1, 0, 1, 1), AT_cat = c("A", "A", "A", "A",
"A", "A"), AT_qty = c("A", "B", "A", "A", "A", "A"), AT_quant = c(10.6666666666667,
9, 12.4166666666667, NA, 10.3333333333333, 12.4545454545455
), ...9 = c(NA, NA, NA, NA, NA, NA), ...10 = c(NA, "ITT:",
"ITT_SS:", NA, "PP:", NA), ...11 = c(NA, "Initial nutrition interview and OCT in follow-up",
"Initial nutrition interview with or without follow-up",
NA, "ITT excluding:", "Serious non-compliance to visit schedule (MedDiet arm 3/5 visits is considered good compliance)"
)), row.names = c(NA, -6L), class = c("tbl_df", "tbl", "data.frame")