Выполнение статистического теста по нескольким подмножествам с использованием карты purrr - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь использовать функцию purr map для создания ряда подгрупп из фрейма данных, чтобы я мог запустить статистический тест для каждой подгруппы. Таким образом, используя mtcars в качестве примера набора данных, я могу определить набор уникальных значений углеводов из:

mtcars %>% {unique(.$carb)}

дает [1] 4 1 2 3 6 8

Аналогично, набор уникальных значений передач:

mtcars %>% {unique(.$gear)}   

дает [1] 4 3 5

Я бы хотел перебрать уникальные комбинации carb и gear и использовать это как способ подмножества значений в mtcars , так что я могу выполнить статистический тест для каждого подмножества (как индексировано gear и carb). Таким образом, тест будет выглядеть так:

data_subset %>% kruskal.test(.$mpg, .$am, data = .)

Я пытался сделать это, используя map от purrr. Что-то вроде:

library(purrr)
mtcars %>% 
  {unique(.$carb)} %>%
  map2(mtcars, ~filter(.y, am == .x))

1 Ответ

0 голосов
/ 28 января 2020

Для большинства комбинаций карбюратора / редуктора в mtcars есть только одно значение am. Из моего ограниченного понимания справки и сообщений об ошибках вам нужно несколько групп (am в вашем примере) для запуска теста.

library(tidyverse)

# Step 1 - limit to testable data
count(mtcars, carb, gear, am) %>%
  count(carb, gear) %>% # Count am possibilities w/in each carb/gear group
  filter(n > 1) %>%
  left_join(mtcars) -> mtcars_mult_am 

# Step 2 - nest, map each group to test, unnest
mtcars_mult_am %>%
  nest(data = -c(carb, gear)) %>%
  mutate(kruskal_raw = map(data, ~ kruskal.test(.x$mpg, .x$am)),
         kruskal = map(kruskal_raw, broom::tidy)) %>%
  select(-data) %>%
  unnest(kruskal)

# A tibble: 2 x 7
   carb  gear kruskal_raw statistic p.value parameter method                      
  <dbl> <dbl> <list>          <dbl>   <dbl>     <int> <chr>                       
1     2     4 <S3: htest>      0      1             1 Kruskal-Wallis rank sum test
2     4     4 <S3: htest>      2.67   0.102         1 Kruskal-Wallis rank sum test
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...