R 两个不同的代码块来获得 p 值,但代码的评估不同,我无法找出区别

R two different code chunks to get a p-value but the code evaluates differently and I can't figure out the difference

我想弄清楚为什么这两个代码块会给我不同的韦尔奇 T 检验 p 值。我真的只是想做一个基本 R 代码的整洁版本,并创建一个包含两个统计数据的 table。但是我使用的 tidy 版本有一个非常小的 p 值,我很困惑为什么。

t.test(mpg ~ vs, data = mtcars) # p-value = 0.0001098
t.test(mpg ~ am, data = mtcars) # p-value = 0.001374

options(scipen = 999)
mtcars %>%
  dplyr::select(mpg, vs, am) %>%
  pivot_longer(names_to = 'names', values_to = 'values', 2:3) %>%
  nest(data = -names) %>% 
  mutate(
    test = map(data, ~ t.test(.x$mpg, .x$values)), # S3 list-col
    tidied = map(test, tidy)
  ) %>% 
  unnest(tidied) # vs = 0.000000000000000010038009 and am = 0.000000000000000009611758  

如果您 运行 只是:

t.test(mtcars$mpg, mtcars$vs)

您将获得与嵌套数据示例中相同的值。

所以问题不在于嵌套——而是您在执行另一种 t 检验。公式版本将变量 vsam 视为具有两组 (0, 1) 而向量化版本则没有。