【问题标题】:How to select only the p.value >0.05 after performing Shapiro-Wilk test in Rstudio?在 Rstudio 中执行 Shapiro-Wilk 测试后,如何仅选择 p.value >0.05?
【发布时间】:2020-09-30 01:17:19
【问题描述】:

在 Rstudio 中执行 Shapiro-Wilk 测试后,如何仅选择 p.values >0.05。 我有一个 92 列和 300 行的数据框,所以我不想一个接一个地这样做。

我确实设法对我的数据进行了 shapiro.test,这导致每列有 92 个统计数据和 p.value 一个。有些 p.value 0.05。 有没有办法只选择 p.value > 0.05 进行进一步分析?

谢谢,巴里

【问题讨论】:

  • 我建议提供示例代码和数据。这有助于我们了解您正在尝试的方法以及数据的结构。特别是在这种情况下,我想知道“对我的数据进行 shapiro 测试”是什么意思,因为您的输出结构对于哪种解决方案有效很重要。

标签: r


【解决方案1】:

您的问题没有提供示例数据,因此我将使用 R 中的 attitude 数据。

根据您所写的内容,我认为您在数据集上应用并在每一列上运行 shapiro.test()。我的回答采用这种方法。

我确实设法对我的数据进行了 shapiro.test,这导致每列有 92 个统计数据和 p.value 一个

如果您使用 lapply(),输出将是 Shapiro-Wilks 测试的结果列表,每列一个结果。我们需要做的就是根据 p 值对这个列表进行子集化。

# example data
attitude

# run the Shapiro-Wilks test on each column, save the output
results <- lapply(attitude, shapiro.test)

#subset to just results where p > 0.05
subset_vector  <- sapply(results, function(x) x$p.value > .05)
results_subset <- results[subset_vector]

# alternatively, do the subset on one line
results[sapply(results, function(x) x$statistic > .05)]

如您所见,此方法使用sapply() 检查每列输出的 p 值是否 > 0.5。生成的命名向量对于您要用于更多分析的每一列都有一个TRUE。在示例代码中,这是attitude$critical 列,它被排除在results_subset 对象之外。

【讨论】:

    猜你喜欢
    • 2021-02-28
    • 1970-01-01
    • 2013-03-03
    • 2019-11-25
    • 1970-01-01
    • 2022-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多