首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FDR校正-从lmer()中提取p值并创建矢量,以便在R中的p.adjust中使用

FDR校正-从lmer()中提取p值并创建矢量,以便在R中的p.adjust中使用
EN

Stack Overflow用户
提问于 2020-07-01 03:59:17
回答 1查看 422关注 0票数 0

我正在尝试对一些感兴趣的区域神经成像数据进行FDR校正。我总共运行了18个线性混合效果模型,并确保每个模型中输出系数的顺序都是相同的。

我已经将每个模型的输出保存在以下位置:

代码语言:javascript
复制
tidy_model1 <-tidy(model1)
tidy_model2 <-tidy(model2)
....
tidy_model18 <-tidy(model18)

我现在正试图让我的生活变得更轻松,并创建一个循环,该循环遍历具有上述模型对象名称的列表,并为每个系数创建一个p值矢量,然后我将在p.adjust函数中输入该矢量,以检索调整后的p值。

所以我创建了一个列表:

代码语言:javascript
复制
model_list <- list(tidy_model1,
tidy_model2,... tidy_model18)

我尝试过以下循环:

代码语言:javascript
复制
for (i in 1:18) {
model_list[i] %>%
variable1_pval <- p.value[1]
}

代码语言:javascript
复制
for (i in 1:18) {
variable1_pval <- model_list[i]$p.value[1]
}

所以上面应该给出了模型系数1的p值的向量。

然而,在这两种情况下,我都得到了一个空向量。

我知道我没有提供我的数据,但是任何关于这些循环可能不工作的建议都是受欢迎的!

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-01 05:19:16

我做了一个模型列表:

代码语言:javascript
复制
library(nlme)
library(broom)

models <- lapply(1:5,function(i){
idx= sample(nrow(Orthodont),replace=TRUE)
lme(distance ~ age, random=~Sex,data = Orthodont[idx,])
})

model_list <- lapply(models,tidy,effects="fixed")

在这些模型中,有用系数是第二个:

代码语言:javascript
复制
model_list[[1]]
# A tibble: 2 x 5
  term        estimate std.error statistic  p.value
  <chr>          <dbl>     <dbl>     <dbl>    <dbl>
1 (Intercept)   15.9      1.03       15.5  7.77e-26
2 age            0.739    0.0871      8.48 9.13e-13

对于您的示例,可以使用p.value1获取向量中的p值,如下所示

代码语言:javascript
复制
sapply(model_list,function(x)x$p.value[2])

跟踪你的模型,而不是用变量填充环境的一种更好的方法是使用purrr,dplyr (参见更多here):

代码语言:javascript
复制
library(purrr)
library(dplyr)

models = tibble(name=1:5,models=models) %>%
mutate(tidy_res = map(models,tidy,effects="fixed"))

models

# A tibble: 5 x 3
   name models tidy_res        
  <int> <list> <list>          
1     1 <lme>  <tibble [2 × 5]>
2     2 <lme>  <tibble [2 × 5]>
3     3 <lme>  <tibble [2 × 5]>
4     4 <lme>  <tibble [2 × 5]>
5     5 <lme>  <tibble [2 × 5]>

models %>% unnest(tidy_res) %>% filter(term=="age")
# A tibble: 5 x 7
   name models term  estimate std.error statistic  p.value
  <int> <list> <chr>    <dbl>     <dbl>     <dbl>    <dbl>
1     1 <lme>  age      0.587    0.0601      9.77 2.44e-15
2     2 <lme>  age      0.677    0.0663     10.2  3.91e-16
3     3 <lme>  age      0.588    0.0603      9.74 3.05e-15
4     4 <lme>  age      0.653    0.0529     12.3  2.74e-20
5     5 <lme>  age      0.638    0.0623     10.2  3.34e-16
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62665288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档