【问题标题】:How to show multiple test result of the same data.frame in a summary table如何在汇总表中显示同一 data.frame 的多个测试结果
【发布时间】:2019-09-27 21:54:15
【问题描述】:

iris 数据集(R 内置)包括 50 个观测值,每个观测值都有 Sepal.Length、Sepal.Width、Petal.Length 和 Petal.Width 的数据。我想使用多个测试(Shapiro.test、ks.test、cvm.test、ad.test、)来测试每列的正态性并将结果显示在表格中。

下面的代码显示了仅使用一个测试的结果。

dat <- iris %>%
  filter(Species == "setosa")

df <- dat %>%
  select(-Species)
test <- lapply(df, shapiro.test)
table <- sapply(test, `[`,c("statistic","p.value"))
table
R > 
$Sepal.Length.p.value
[1] 0.4595132

$Sepal.Width.p.value
[1] 0.2715264

$Petal.Length.p.value
[1] 0.05481147

$Petal.Width.p.value
[1] 8.658573e-07

我想在一张表中总结和比较不同的测试,其中行代表不同的测试,列代表Sepal.Length、Sepal.Width、Petal.Length和Petal.Width。

【问题讨论】:

  • 不清楚你想要什么。请包含函数的包
  • R 中内置了iris 数据集
  • 谢谢,我知道了。但是对于其他测试,不清楚包cvm.test,还有ks.test,需要两个参数
  • 这四种检验只是正态性检验的不同方法。
  • 是的,我明白了,我的问题是您用于cvm.test 的包是dgofnortest 用于ad.test 的包

标签: r dataframe datatable


【解决方案1】:

一种选择是

library(nortest)
out <- lapply(c("shapiro.test", "cvm.test", "ad.test"), 
    function(x) sapply(df, function(y) get(x)(y)[c("statistic", "p.value")]))
do.call(rbind, Map(cbind, test = c("shapiro.test", "cvm.test", "ad.test"), out))

或使用tidyverse

library(tidyverse)
lst(shapiro.test, cvm.test, ad.test) %>% 
   map_df(~ df  %>% 
             summarise_all(list(~ list(.x(.)[c("statistic", "p.value")]))) %>% 
             unnest, .id = "test")

如果我们不需要拦截

lst(shapiro.test, cvm.test, ad.test) %>%
      map_df(~ df  %>% 
           summarise_all(list(~ list(.x(.)[c("statistic", "p.value")][2]))) %>%
           unnest, .id = "test")
#          test Sepal.Length Sepal.Width Petal.Length  Petal.Width
#1 shapiro.test    0.4595132   0.2715264   0.05481147 8.658573e-07
#2     cvm.test    0.2596871   0.2324437  0.006874393 1.717773e-09
#3      ad.test    0.3352439   0.2101787   0.01079067 7.437223e-12

【讨论】:

  • 谢谢!但它没有显示它们对应的类型(Sepal.Length、Sepal.Width、Petal.Length 和 Petal.Width)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
  • 2020-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多