如何迭代自变量,使用tidyverse框架执行多元线性回归?
我的数据:如何迭代自变量,使用tidyverse框架执行多元线性回归?,r,dplyr,purrr,genetics,broom,R,Dplyr,Purrr,Genetics,Broom,我的数据: library(tidyverse) library(lme4) myData <- structure(list(Subjects = c(4L, 3L, 5L, 1L, 9L, 6L, 10L, 2L, 8L, 7L), Gene1 = c(0.318630087617032, -0.58179068471591, 0.714532710891568, -0.825259425862769, -0.359862131395465, 0.0898861437775305
library(tidyverse)
library(lme4)
myData <- structure(list(Subjects = c(4L, 3L, 5L, 1L, 9L, 6L, 10L, 2L,
8L, 7L), Gene1 = c(0.318630087617032, -0.58179068471591, 0.714532710891568,
-0.825259425862769, -0.359862131395465, 0.0898861437775305, 0.0962744602851301,
-0.201633952183354, 0.739840499878431, 0.123379501088869), Variant1 = c(1L,
0L, 1L, 2L, 2L, 1L, 0L, 1L, 2L, 0L), Variant2 = c(0L, 0L, 2L,
2L, 0L, 2L, 2L, 2L, 2L, 0L), Variant3 = c(1L, 1L, 0L, 2L, 0L,
1L, 1L, 1L, 2L, 1L), Variant4 = c(1L, 2L, 1L, 0L, 0L, 1L, 0L,
2L, 1L, 1L), Age = c(81L, 60L, 85L, 87L, 76L, 78L, 88L, 64L,
90L, 75L), Sex = c(0L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 1L), RIN = c(6L,
6L, 8L, 6L, 8L, 7L, 8L, 7L, 7L, 6L), ABG = structure(c(4L, 5L,
8L, 3L, 6L, 2L, 3L, 4L, 7L, 1L), .Label = c("F1", "F10", "F2",
"F3", "F4", "F5", "F6", "F8"), class = "factor")), row.names = c(NA,
-10L), class = "data.frame", .Names = c("Subjects", "Gene1",
"Variant1", "Variant2", "Variant3", "Variant4", "Age", "Sex",
"RIN", "ABG"))
myData
Subjects Gene1 Variant1 Variant2 Variant3 Variant4 Age Sex RIN ABG
1 4 0.31863009 1 0 1 1 81 0 6 F3
2 3 -0.58179068 0 0 1 2 60 1 6 F4
3 5 0.71453271 1 2 0 1 85 0 8 F8
4 1 -0.82525943 2 2 2 0 87 1 6 F2
5 9 -0.35986213 2 0 0 0 76 0 8 F5
6 6 0.08988614 1 2 1 1 78 1 7 F10
7 10 0.09627446 0 2 1 0 88 0 8 F2
8 2 -0.20163395 1 2 1 2 64 0 7 F3
9 8 0.73984050 2 2 2 1 90 1 7 F6
10 7 0.12337950 0 0 1 1 75 1 6 F1
库(tidyverse)
图书馆(lme4)
myData对于您的问题,您可以gather()
在所有不同类型的变体上使用group\u split()
。从那时起,我们可以迭代每个split data.frame并运行线性模型。在map()
中,我们将broom::tidy()
数据,并添加一列来区分每个模型的估计值。我使用了map\u df()
来结束一个数据帧,但您也可以使用map()
来结束一个data.frames列表
库(tidyverse)
图书馆(lme4)
图书馆(扫帚)
dat%
聚集(key=“variants”,value=“var\u value”,Variant1:Variant4)%>%
组分割(变体)%>%
map|df(~lmer(基因1~var|U值+年龄+性别+RIN+(1 | ABG),数据=.x)%>%
整洁()%>%
变异(变量组=唯一(.x$variants)))
#>#A tibble:28 x 6
#>术语估计标准误差统计组变量组
#>
#>1(截距)-3.91 1.96-2.00固定变量1
#>2 var_值-0.280 0.120-2.34固定变量1
#>3年龄0.0401 0.00905 4.43固定变量1
#>4性别0.00107 0.391 0.00274固定变量1
#>5 RIN 0.161 0.154 1.05固定变量1
#>6标准差(截距).ABG 0.462 NA NA ABG变量1
#>7 sd_观测值。残差…0.00234 NA残差…方差1
#>8(截距)-3.60 2.74-1.31固定变量2
#>9 var_值-0.0625 0.202-0.309固定变量2
#>10年龄0.0295 0.0175 1.69固定变量2
#>#…还有18行
由(v0.2.1)于2019-02-23创建。请不要截图。请使用dput()
查看和,创建一个包含输入和预期输出的reprex,并发布数据样本。特别是,如果您不让人们输入数据,并且如果您将问题浓缩以显示您尝试了什么以及您有什么特定的症结点/误解区域,以便我们能够给出有针对性的答案,您更有可能得到及时的答案。@dylanjm和Calum you:很抱歉截图,我在论坛上贴了一个问题已经有一段时间了。更新了帖子,加入了reprex。谢谢@dylanjm。工作完美。我意识到从线性混合模型中提取Pvalue是复杂的,但是如果我希望使用lmerTest::anova(ddf=“Kenward Roger”)函数中的Kenward Roger方法计算Pvalue,我如何将其合并到代码中,以便将上面生成的结果与从lmerTest::anova()中获得的结果合并对于每个变量?不太确定您要查找的确切输出,但可以在tidy()
之前尝试将管道插入lmerTest::ranova()
。不过,您可能必须过滤掉这些行。除此之外,我不确定。如果我的回答符合您的原始问题,请确保将其标记为正确。