R 我在一列中有两个不同的类。如何测试它们的正态性?

R 我在一列中有两个不同的类。如何测试它们的正态性?,r,normal-distribution,R,Normal Distribution,在R。 考虑到这是我的情况:(实际上我的真实情况要复杂得多) 一列是性别(男性和女性),另一列是体重(BW)。 我想测试一下男性的体重是否正常,女性的体重是否正常。然后我可以分别测试方差的相等性。最后,对这种情况进行T检验或其他检验。 但是在这种情况下不能使用shapiro.test。(如shapiro.test(BW~SEX,data=df)) 我该怎么办?我不想分离数据帧或创建新的子集 提前谢谢~ 此处详细介绍了此问题的“tidyverse”解决方案: 简单地说,使用您的数据: librar

在R。 考虑到这是我的情况:(实际上我的真实情况要复杂得多)

一列是性别(男性和女性),另一列是体重(BW)。 我想测试一下男性的体重是否正常,女性的体重是否正常。然后我可以分别测试方差的相等性。最后,对这种情况进行T检验或其他检验。 但是在这种情况下不能使用
shapiro.test
。(如
shapiro.test(BW~SEX,data=df)

我该怎么办?我不想分离数据帧或创建新的子集

提前谢谢~

此处详细介绍了此问题的“tidyverse”解决方案:

简单地说,使用您的数据:

library(dplyr) # for mutate
library(tidyr) # for nest/unnest
library(purrr) # for map
library(broom) # for glance

df %>% 
  nest(data = c(BW)) %>% 
  mutate(model = map(data, ~ shapiro.test(.x$BW)), 
         g = map(model, glance)) %>% 
  unnest(g)
结果:

# A tibble: 2 x 6
  SEX             data model   statistic p.value method                     
  <fct> <list<df[,1]>> <list>      <dbl>   <dbl> <chr>                      
1 F           [50 x 1] <htest>     0.982   0.639 Shapiro-Wilk normality test
2 M           [50 x 1] <htest>     0.980   0.535 Shapiro-Wilk normality test
#一个tible:2 x 6
性别数据模型统计p值法
1 F[50 x 1]0.982 0.639 Shapiro-Wilk正态性检验
2 M[50 x 1]0.980 0.535 Shapiro-Wilk正态性检验
此处详细介绍了此问题的“tidyverse”解决方案:

简单地说,使用您的数据:

library(dplyr) # for mutate
library(tidyr) # for nest/unnest
library(purrr) # for map
library(broom) # for glance

df %>% 
  nest(data = c(BW)) %>% 
  mutate(model = map(data, ~ shapiro.test(.x$BW)), 
         g = map(model, glance)) %>% 
  unnest(g)
结果:

# A tibble: 2 x 6
  SEX             data model   statistic p.value method                     
  <fct> <list<df[,1]>> <list>      <dbl>   <dbl> <chr>                      
1 F           [50 x 1] <htest>     0.982   0.639 Shapiro-Wilk normality test
2 M           [50 x 1] <htest>     0.980   0.535 Shapiro-Wilk normality test
#一个tible:2 x 6
性别数据模型统计p值法
1 F[50 x 1]0.982 0.639 Shapiro-Wilk正态性检验
2 M[50 x 1]0.980 0.535 Shapiro-Wilk正态性检验

哦,我自己刚想出来。。。 使用此代码

with(df, shapiro.test(BW[SEX == "M"]))
with(df, shapiro.test(BW[SEX == "F"]))

我很高兴我能学到更多

哦,我自己才知道。。。 使用此代码

with(df, shapiro.test(BW[SEX == "M"]))
with(df, shapiro.test(BW[SEX == "F"]))

我很高兴我能学到更多

tapply(df$BW,df$SEX,FUN=shapiro.test)
?@thelatemail非常感谢!它也非常有用
tapply(df$BW,df$SEX,FUN=shapiro.test)
?@thelatemail非常感谢!它也非常有用!是 啊我很感激你为我提供了更多解决问题的方法。是的。。非常感谢您为我提供了更多解决问题的方法。非常感谢您提供更多信息!非常感谢您提供更多信息!