Bra*_*lon 1 r normal-distribution dplyr
Type <- c("Bark", "Redwood", "Oak")
size <- c(10,15,13)
width <- c(3,4,5)
Ratio <- size/width
df <- data.frame(Type, size, width, Ratio)
mutate(df, ratio_log = log10(Ratio))
df %>% group_by(Type) %>% shapiro.test(ratio_log)
Run Code Online (Sandbox Code Playgroud)
shapiro.test(., ratio_log) 中的错误:未使用的参数 (ratio_log)
我正在尝试将夏皮罗测试应用于所有类型,例如树皮、红木、橡木。并不是所有的比率都加在一起。我有一个更大的数据集,其中包含更多的比率。
您至少需要 tidyverse 来处理 purrr 和 dplyr。
我在示例中制作了更多样本,因为您需要一个向量shapiro.test而不是单个比率。所以这里有 100 个来自正态分布、二项分布和均匀分布的样本。
library(tidyverse)
Type <- c("Bark", "Redwood", "Oak")
size <- c(10,15,13)
width <- c(3,4,5)
Ratio <- c(rnorm(100),
rbinom(100, size = 2, prob = 0.2),
runif(100))
Run Code Online (Sandbox Code Playgroud)
将这些放在 data.frame 中
# Need minimum sample size for shapiro test
df <- data.frame(Type = rep(Type, each = 100),
Size = rep(size, each = 100),
width = rep(size, each = 100),
Ratio)
Run Code Online (Sandbox Code Playgroud)
然后你可以使用ratio_log,在这种情况下我冒昧地使用相同的比率。您可以分组Type并使用每组nest嵌套数据的 data.frame。
df %>%
mutate(ratio_log = Ratio) %>%
group_by(Type) %>%
mutate(N_Samples = n()) %>%
nest()
# A tibble: 3 x 2
Type data
<fct> <list>
1 Bark <tibble [100 x 5]>
2 Redwood <tibble [100 x 5]>
3 Oak <tibble [100 x 5]>
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用该map函数与mutate基本上lapply应用于嵌套的 data.frames(或 tibbles,这里基本上是相同的事情。)对于每组的每个 data.frame,我们将该shapiro.test函数应用于ratio_log列中的值。
# Use purrr::nest and purrr::map to do shapiro tests per group
df.shapiro <- df %>%
mutate(ratio_log = Ratio) %>%
group_by(Type) %>%
mutate(N_Samples = n()) %>%
nest() %>%
mutate(Shapiro = map(data, ~ shapiro.test(.x$ratio_log)))
# A tibble: 3 x 3
Type data Shapiro
<fct> <list> <list>
1 Bark <tibble [100 x 5]> <S3: htest>
2 Redwood <tibble [100 x 5]> <S3: htest>
3 Oak <tibble [100 x 5]> <S3: htest>
Run Code Online (Sandbox Code Playgroud)
现在您有嵌套的shapiro.test结果,应用于每个组。
要获取相关参数,您可以glance从broom包中使用。然后unnest是glance函数的结果。
# Use broom::glance and purrr::unnest to get all relevant statistics
library(broom)
df.shapiro.glance <- df.shapiro %>%
mutate(glance_shapiro = Shapiro %>% map(glance)) %>%
unnest(glance_shapiro)
Type data Shapiro statistic p.value method
<fct> <list> <list> <dbl> <dbl> <fct>
1 Bark <tibble [100 x 5]> <S3: htest> 0.967 1.30e- 2 Shapiro-Wilk normality test
2 Redwood <tibble [100 x 5]> <S3: htest> 0.638 2.45e-14 Shapiro-Wilk normality test
3 Oak <tibble [100 x 5]> <S3: htest> 0.937 1.31e- 4 Shapiro-Wilk normality test
Run Code Online (Sandbox Code Playgroud)