R。具有插补数据的线性模型

问题描述 投票:0回答:0

我目前正在使用两个数据框,并尝试使用小鼠插补进行线性模型分析。然而,当尝试使用函数

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")
r imputation r-mice
© www.soinside.com 2019 - 2024. All rights reserved.