首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用tidyverse和broom包进行多变量/多指标的多组两样本t检验

使用tidyverse和broom包进行多变量/多指标的多组两样本t检验
EN

Stack Overflow用户
提问于 2020-10-15 20:24:16
回答 1查看 54关注 0票数 1

使用以下数据

代码语言:javascript
复制
df <- data.frame(category = sample(1:3, replace = TRUE, 50),
                testgroup = sample(c('A', 'B'), replace = TRUE, 50),
                var_1 = rnorm(50),
                var_2 = rnorm(50),
                var_3 = rnorm(50)
)

我想在每个类别中应用2样本t检验,比较A和B之间关于所有3个变量的均值差异。

理想情况下,输出是使用tidyverse和broom包生成的。

我在split-apply-combine方法上挣扎了很长时间,我想现在已经有了一个很好的解决方案,只需要几行代码。

非常感谢您的支持!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-15 23:37:08

一般的经验法则是在并排的列中获取所需函数(在本例中为t.test)的参数。在您的案例中,我们的目标是同时使用AB

代码语言:javascript
复制
X <- df %>% group_by( category, testgroup ) %>%
    summarize( across(starts_with("var"), list) ) %>%
    ungroup() %>%
    pivot_longer( starts_with("var"), "variable", values_to="values" ) %>%
    pivot_wider( names_from="testgroup", values_from="values" )
# # A tibble: 9 x 4
#   category variable A          B
#      <int> <chr>    <list>     <list>
# 1        1 var_1    <dbl [3]>  <dbl [3]>
# 2        1 var_2    <dbl [3]>  <dbl [3]>
# 3        1 var_3    <dbl [3]>  <dbl [3]>
# 4        2 var_1    <dbl [11]> <dbl [9]>
# 5        2 var_2    <dbl [11]> <dbl [9]>
# ...

我们现在可以很好地应用两样本t检验并使用broom处理结果

代码语言:javascript
复制
X %>% mutate(test   = map2(A, B, t.test),
             result = map(test, broom::tidy) ) %>%
    unnest( result )
# # A tibble: 9 x 15
#    category variable A     B     test  estimate estimate1 estimate2 statistic
#       <int> <chr>    <lis> <lis> <lis>    <dbl>     <dbl>     <dbl>     <dbl>
#  1        1 var_1    <dbl… <dbl… <hte…    1.07    0.400    -0.665       1.08
#  2        1 var_2    <dbl… <dbl… <hte…   -0.376   0.350     0.726      -0.415
#  3        1 var_3    <dbl… <dbl… <hte…   -0.701  -0.102     0.599      -0.434
#  4        2 var_1    <dbl… <dbl… <hte…   -0.276  -0.335    -0.0587     -0.531
#  5        2 var_2    <dbl… <dbl… <hte…    0.727   0.689    -0.0374      1.74
# ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64371513

复制
相关文章

相似问题

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