在数据集的10个不同子集上匹配相同的模型后,我生成了10个模型摘要,如下所示

library(mice)
data("nhanes")
head(nhanes)

imp <- mice(nhanes, print = FALSE, m = 10, seed = 24415)
df <- complete(imp, "long")
model_fit <- lapply(1:10, function(i) {
  model = lm(bmi ~ age + hyp + chl,
             data = subset(df, `.imp`==i))
})

从中我得到了ggpredict个不同的物体

ggpredict(model_fit[[1]], c("age", "hyp"))
ggpredict(model_fit[[2]], c("age", "hyp"))
ggpredict(model_fit[[3]], c("age", "hyp"))
ggpredict(model_fit[[4]], c("age", "hyp"))
ggpredict(model_fit[[5]], c("age", "hyp"))
ggpredict(model_fit[[6]], c("age", "hyp"))
ggpredict(model_fit[[7]], c("age", "hyp"))
ggpredict(model_fit[[8]], c("age", "hyp"))
ggpredict(model_fit[[9]], c("age", "hyp"))
ggpredict(model_fit[[10]], c("age", "hyp"))

我正在寻找一种有效的方法a)通过hpage估计所有ggpredict个对象的平均值

预期输出将是这样的.

  age    hp      Predicted                        95% C.I
  --------------------------------------------------------
  1      1       (28.38 + 29.35 + 27.3...)/10      (26.67 +2 6.83 + 25.25...)/10 ; (30.08 + 31.87 + 29.35....)/10 
  2      1       (24.21 + 26.01 + 25.40...)/10     (22.71 + 23.56 + 23.54...)/10 ;  (25.71 + 28.46 + 27.26....)/10
  3      1       (20.05 + 22.67 + 23.51...)/10     (17.13 + 17.89 + 20.08..)/10 ;   (22.96 + 27.44 + 26.94...)/10

  1      2       (31.82 + 29.35 +28.87...)/10    (28.07 + 23.58 + 24.24...)/10 ;  (35.58 + 35.13 + 33.49....)/10 
  2      2       (27.66 + 26.01 +26.97...)/10    (24.88 + 22.02 + 23.43...)/10 ;  (30.43 + 30.00 + 30.52....)/10  
  3      2       (23.49 + 22.67 +25.08...)/10    (20.63 + 18.73 + 21.50...)/10 ;  (26.35 + 26.61 + 28.66....)/10     

b) Plot based on the final averaged values using ggplot function. enter image description here

到目前为止,我try 将每ggpredict个函数的结果存储为列表对象,

`Reduce(`+`, list_ggpred)/length(list_ggpred)`

我收到警告,

 " In Ops.factor(left, right) : `+1 not meaningful for factors.

任何建议都非常感谢.谢谢.

推荐答案

像这样?

library(mice)
library(ggeffects)
library(tidyverse)

imp <- mice(nhanes, print = FALSE, m = 10, seed = 24415)
df <- complete(imp, "long")
model_fit <- lapply(1:10, function(i) {
  model = lm(bmi ~ age + hyp + chl,
             data = subset(df, `.imp`==i))
})

map(model_fit, ggpredict, c("age", "hyp")) |> 
  bind_rows(.id = "id") |> 
  rename(age = x, hyp = group) |> 
  as_tibble() |> 
  summarise(across(c(predicted, conf.low, conf.high), mean), .by = c(age, hyp))
#> # A tibble: 6 × 5
#>     age hyp   predicted conf.low conf.high
#>   <dbl> <fct>     <dbl>    <dbl>     <dbl>
#> 1     1 1          28.6     26.5      30.6
#> 2     1 2          30.7     26.4      35.0
#> 3     2 1          25.2     23.3      27.0
#> 4     2 2          27.3     24.1      30.5
#> 5     3 1          21.8     18.3      25.2
#> 6     3 2          23.9     20.5      27.2

创建于2024年4月24日,共有reprex v2.1.0

R相关问答推荐

指定要保留在wrap_plots中的传奇

如何判断某列中由某些行组成的百分比

更改网格的crs以匹配简单要素点对象的crs

如果行和列名以相同的开头,将矩阵值设置为0

如何使用stat_extract_all正确提取我的目标值?

从嵌套列表中智能提取线性模型系数

r替换lme S4对象的字符串的一部分

为什么在ggplot2中添加geom_text这么慢?

在R中使用数据集名称

如何在R中合并两个基准点?

使用R闪光显示所有数据点作为默认设置

如何将一列中的值拆分到R中各自的列中

有没有办法一次粘贴所有列

解析嵌套程度极高的地理数据

按两个因素将观测值分组后计算单独的百分比

如何在R中创建条形图,使条形图在y轴上围绕0.5而不是0构建条形图?

用满足特定列匹配的另一行替换NA行

在使用SliderInput In Shiny(R)设置输入数据的子集时,保留一些情节痕迹

基于R中的引用将向量值替换为数据框列的值

使用dplyr删除具有条件的行