R语言 如何对多个结果变量运行混合线性回归模型并获得可呈现的结果?

b5buobof  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(186)

最后我放弃了,承认我需要帮助,我有一个3个不同组的数据集,在2个时间点测量,49个结局变量,我想对每个结局变量做一个混合线性回归分析,以获得时间点之间的组内变化,如下表所示:
| 身份证|兰德|拜访|x1| x2| ...|
| - ------|- ------|- ------|- ------|- ------|- ------|
| 1个|无|无|一百七十八|五、二||
| 第二章|无|无|一百六十五|不适用||
| 三个|第二章|无|一百四十二|一、三||
| 四个|1个|无|一百九十八|二、七||
| 1个|无|1个|一百九十一|九、五||
| 第二章|无|1个|一百八十三|三、九||
当然,我不希望手动完成所有的147次分析(尽管在这个阶段,它会节省我很多时间)。
所以,在搜索论坛寻找答案后,这是我迄今为止所尝试的:

library(lme4)
library(lmerTest)
library(tidyverse)

df <- data.frame(
  id = rep(1:66, each = 2),
  visit = 0:1,
  rand = rep(0:2, each = 2),
  x1 = sample(4000:9000, 132),
  x2 = sample(1200:3400, 132),
  x3 = sample(220:400, 132)
)

df_rand0 <- df %>%
  filter(rand == "0")
df_rand1 <- df %>%
  filter(rand == "1")
df_rand2 <- df %>%
  filter(rand == "2")

depVarList <- colnames(df_rand0[4:6])
allModels <- lapply(depVarList, function(x){
  lmer(formula = paste0("`", x, "` ~ visit + (1| id)"),
       data = df_rand0, na.action = na.omit)
})

它确实生成了一个结果列表,但我缺少p值,它生成了一个包含49个变量的大列表。我希望获得更好的概述,并从测试中获得p值。我尝试加载tidymodels包并运行tidy(),但它返回“Error:此列表没有公认的整洁方法。”

plicqrtu

plicqrtu1#

mixed为混合模型提供tidiers。您也可以使用purrr::map_dfr()代替lapply()来获取一个 Dataframe 中的所有系数。

library(lme4)
library(lmerTest)
library(tidyverse)
library(broom.mixed)
set.seed(13)

allModels <- map_dfr(
  set_names(depVarList), 
  \(x) {
    tidy(lmer(
       formula = paste0(x, " ~ visit + (1| id)"),
       data = df_rand0, 
       na.action = na.omit
   ))
  },
  .id = "dv"
)

allModels
# A tibble: 12 × 9
   dv    effect   group    term          estim…¹ std.e…² stati…³    df   p.value
   <chr> <chr>    <chr>    <chr>           <dbl>   <dbl>   <dbl> <dbl>     <dbl>
 1 x1    fixed    <NA>     (Intercept)   6372.     286.   22.3    32.9  2.00e-21
 2 x1    fixed    <NA>     visit          229.     278.    0.821  21.0  4.21e- 1
 3 x1    ran_pars id       sd__(Interce…  973.      NA    NA      NA   NA       
 4 x1    ran_pars Residual sd__Observat…  923.      NA    NA      NA   NA       
 5 x2    fixed    <NA>     (Intercept)   2278.     123.   18.5    42.0  8.84e-22
 6 x2    fixed    <NA>     visit          -19.2    174.   -0.110  42.0  9.13e- 1
 7 x2    ran_pars id       sd__(Interce…    0       NA    NA      NA   NA       
 8 x2    ran_pars Residual sd__Observat…  578.      NA    NA      NA   NA       
 9 x3    fixed    <NA>     (Intercept)    314.      12.1  26.0    42.0  1.63e-27
10 x3    fixed    <NA>     visit           -8.82    17.1  -0.516  42.0  6.09e- 1
11 x3    ran_pars id       sd__(Interce…    0       NA    NA      NA   NA       
12 x3    ran_pars Residual sd__Observat…   56.7     NA    NA      NA   NA       
# … with abbreviated variable names ¹​estimate, ²​std.error, ³​statistic

相关问题