用于测试一个因素对多个类别的影响的线性模型
Linear models to test one factor effect on multiple categories
我想测试一个变量是否对分组的不同物种的捕获率有影响,但我很难理解如何以简洁明了的方式做到这一点。我有一个包含大约 400 个捕获率的数据集,但物种捕获率之间存在很大差异。它看起来像这样:
set.seed(42)
n <- 100
df<- data.frame(organization=rep(LETTERS[1:4], n/2),
species=rep(c("shark", "whale", "fish", "ray", "turtle"), each=20) ,
gear=rep(c("l", "p", "l", "p", "l", "p", "l", "p", "l", "p"), each =10),
rate=rnorm(n))
目前我尝试过的是:
library(broom)
df %>%
group_by(species, gear) %>%
do(tidy(lm(rate~organization, data=.))) %>%
mutate(p.value=round(p.value, 3)) %>%
filter(p.value<0.05)#filter only sig. pvals
我想知道的是有没有一种更简单优雅的方法来测试ONLY组织的效果,同时仍然对物种和装备进行分组。基本上物种和装备有很大的影响,不同的物种不能真正相互比较。所以我想知道在相同的物种和装备中,组织是否有所不同。
任何帮助将不胜感激!!
这是一个开始。不是完整的解决方案。在这里我们只用 species
分组。您可以先按 species
分组,然后按 gear
分组,然后将两者组合 group_by(species, gear)
:
library(tidyverse)
library(broom)
df %>%
mutate(species = as_factor(species)) %>%
group_by(species) %>%
group_split() %>%
map_dfr(.f = function(df) {
lm(rate ~ organization, data = df) %>%
glance() %>%
add_column(species = unique(df$species), .before = 1)
})
species r.squared adj.r.squared sigma statistic p.value df logLik AIC BIC deviance df.residual nobs
<fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int> <int>
1 shark 0.229 0.165 1.18 3.57 0.0234 3 -61.4 133. 141. 50.5 36 40
2 whale 0.192 0.124 1.03 2.84 0.0513 3 -55.6 121. 130. 37.8 36 40
3 fish 0.0980 0.0229 0.999 1.30 0.288 3 -54.6 119. 128. 35.9 36 40
4 ray 0.121 0.0481 0.783 1.66 0.194 3 -44.9 99.7 108. 22.1 36 40
5 turtle 0.0448 -0.0348 0.922 0.563 0.643 3 -51.4 113. 121. 30.6 36 40
我想测试一个变量是否对分组的不同物种的捕获率有影响,但我很难理解如何以简洁明了的方式做到这一点。我有一个包含大约 400 个捕获率的数据集,但物种捕获率之间存在很大差异。它看起来像这样:
set.seed(42)
n <- 100
df<- data.frame(organization=rep(LETTERS[1:4], n/2),
species=rep(c("shark", "whale", "fish", "ray", "turtle"), each=20) ,
gear=rep(c("l", "p", "l", "p", "l", "p", "l", "p", "l", "p"), each =10),
rate=rnorm(n))
目前我尝试过的是:
library(broom)
df %>%
group_by(species, gear) %>%
do(tidy(lm(rate~organization, data=.))) %>%
mutate(p.value=round(p.value, 3)) %>%
filter(p.value<0.05)#filter only sig. pvals
我想知道的是有没有一种更简单优雅的方法来测试ONLY组织的效果,同时仍然对物种和装备进行分组。基本上物种和装备有很大的影响,不同的物种不能真正相互比较。所以我想知道在相同的物种和装备中,组织是否有所不同。
任何帮助将不胜感激!!
这是一个开始。不是完整的解决方案。在这里我们只用 species
分组。您可以先按 species
分组,然后按 gear
分组,然后将两者组合 group_by(species, gear)
:
library(tidyverse)
library(broom)
df %>%
mutate(species = as_factor(species)) %>%
group_by(species) %>%
group_split() %>%
map_dfr(.f = function(df) {
lm(rate ~ organization, data = df) %>%
glance() %>%
add_column(species = unique(df$species), .before = 1)
})
species r.squared adj.r.squared sigma statistic p.value df logLik AIC BIC deviance df.residual nobs
<fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int> <int>
1 shark 0.229 0.165 1.18 3.57 0.0234 3 -61.4 133. 141. 50.5 36 40
2 whale 0.192 0.124 1.03 2.84 0.0513 3 -55.6 121. 130. 37.8 36 40
3 fish 0.0980 0.0229 0.999 1.30 0.288 3 -54.6 119. 128. 35.9 36 40
4 ray 0.121 0.0481 0.783 1.66 0.194 3 -44.9 99.7 108. 22.1 36 40
5 turtle 0.0448 -0.0348 0.922 0.563 0.643 3 -51.4 113. 121. 30.6 36 40