R语言编程中的Shapiro-Wilk检验

Shapiro-Wilk检验(或称为Shapiro检验)是频率学派统计学中的一种正态性检验。Shapiro检验的原假设是总体服从正态分布。在用于检测各类偏离正态分布情况的检验中,它是三大正态性检验之一。如果计算得到的 p 值小于或等于 0.05,那么正态性的假设将被 Shapiro 检验拒绝。如果检验未通过(即拒绝原假设),我们可以以 95% 的置信度断定数据不符合正态分布。然而,如果检验通过,则表明数据没有显著偏离正态分布。这项检验在 R 编程语言 中可以非常轻松地完成。

#### Shapiro-Wilk 检验公式

假设一个样本,比如 x1, x2…….xn,来自一个正态分布的总体。那么根据 Shapiro-Wilk 检验的原假设检验公式:

W=\frac{(\sum{i=1}^n aix{(i)})^2}{(\sum{i=1}^n x_i – \bar{x})^2}

> 其中,

>

>

> – x(i) : 给定样本中第 i 小的数。

> – mean(x) : ( x1+x2+……+xn) / n,即样本均值。

> – ai : 系数,计算公式为 (a1, a2,….,an) = (mT V-1)/C 。这里的 V 是协方差矩阵,m 和 C 是向量范数,计算方式为 C= |

V-1 m

且 m = (m1, m2,……, mn )。

#### 在 R 中的实现

为了执行 Shapiro-Wilk 检验,R 提供了 shapiro.test() 函数。

> 语法:

>

>

> shapiro.test(x)

>

>

> 参数:

>

>

> x : 一个包含数据值的数值向量。它允许包含缺失值,但缺失值的数量应控制在 3 到 5000 之间。

让我们一步步来看看如何进行 Shapiro-Wilk 检验。

  • 步骤 1: 首先,安装所需的包。执行此检验需要两个包,分别是 dplyr。dplyr 包用于进行高效的数据操作。我们可以通过以下方式在 R 控制台中安装这些包:
install.packages("dplyr")
  • 步骤 2: 现在,将安装的包加载到 R 脚本中。这可以通过使用 library() 函数来完成,如下所示:

R


CODEBLOCK_7e0adc57

  • 步骤 3: 最重要的是选择一个合适的数据集。在这里,我们将使用 ToothGrowth 数据集。它是 R 库中的一个内置数据集。

R


CODEBLOCK_3357128e

我们也可以创建自己的数据集。为此,首先需要准备好数据,然后保存文件,最后将数据集导入到脚本中。可以使用以下语法包含文件:

data <- read.delim(file.choose()) ,if the format of the file is .txt
data <- read.csv(file.choose()), if the format of the file is .csv
  • 步骤 4: 现在使用 set.seed() 函数选择一个随机数。随后,我们使用 dplyr 包中的 sample_n() 函数开始显示随机选择的 10 行输出样本。这就是我们检查数据的方式。

R


CODEBLOCK_3330b788

输出:

len supp dose
1  11.2   VC  0.5
2   8.2   OJ  0.5
3  10.0   OJ  0.5
4  27.3   OJ  2.0
5  14.5   OJ  1.0
6  26.4   OJ  2.0
7   4.2   VC  0.5
8  15.2   VC  1.0
9  14.5   OJ  0.5
10 26.7   VC  2.0
  • 步骤 5: 最后,使用 shapiro.test() 函数执行 Shapiro Wilk 检验。

R


CODEBLOCK_389b9279

输出:

> dplyr::sample_n(my_data, 10)
    len supp dose
1  11.2   VC  0.5
2   8.2   OJ  0.5
3  10.0   OJ  0.5
4  27.3   OJ  2.0
5  14.5   OJ  1.0
6  26.4   OJ  2.0
7   4.2   VC  0.5
8  15.2   VC  1.0
9  14.5   OJ  0.5
10 26.7   VC  2.0
> shapiro.test(my_data$len)

    Shapiro-Wilk normality test

data:  my_data$len
W = 0.96743, p-value = 0.1091

根据获得的输出结果,我们可以假设数据服从正态分布。因为 p 值大于 0.05。因此,给定数据的分布与正态分布没有显著差异。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/48922.html
点赞
0.00 平均评分 (0% 分数) - 0