Prueba de Shapiro-Wilk en programación R

La prueba de Shapiro-Wilk o prueba de Shapiro es una prueba de normalidad en las estadísticas frecuentistas. La hipótesis nula de la prueba de Shapiro es que la población se distribuye normalmente. Es una de las tres pruebas de normalidad diseñadas para detectar todo tipo de desviación de la normalidad. Si el valor de p es igual o menor a 0.05, entonces la hipótesis de normalidad será rechazada por la prueba de Shapiro. Si falla, la prueba puede indicar que los datos no se ajustarán a la distribución normalmente con un 95% de confianza. Sin embargo, al pasar, la prueba puede indicar que no existe una desviación significativa de la normalidad. Esta prueba se puede hacer muy fácilmente en programación R.

Fórmula de prueba de Shapiro-Wilk

Suponga que una muestra, digamos x 1 ,x 2 …….x n , proviene de una población normalmente distribuida. Entonces de acuerdo con las pruebas de Shapiro-Wilk prueba de hipótesis nula

W=\frac{(\sum_{i=1}^n a_ix_{(i)})^2}{(\sum_{i=1}^n x_i - \bar{x})^2}

dónde,

  • x (i) : es el i-ésimo número más pequeño en la muestra dada.
  • mean(x) : ( x 1 +x 2 +……+x n ) / n es decir, la media de la muestra.
  • a i : coeficiente que se puede calcular como (a 1 ,a 2 ,….,a n ) = (m T V -1 )/C . Aquí V es la array de covarianza, m y C son las normas vectoriales que se pueden calcular como C= || V -1 m || y m = (m 1 , m 2 ,……, m n ).

Implementación en R

Para realizar la prueba de Shapiro Wilk, R proporciona la función shapiro.test()

Sintaxis:

shapiro.prueba(x)

Parámetro:

x : un vector numérico que contiene los valores de los datos. Permite valores faltantes, pero el número de valores faltantes debe estar en el rango de 3 a 5000. 

Veamos cómo realizar el test de Shapiro Wilk paso a paso.

  • Paso 1: primero instale los paquetes necesarios . Los dos paquetes necesarios para realizar la prueba son dplyr . El paquete dplyr es necesario para una manipulación eficiente de los datos. Uno puede instalar los paquetes desde la consola R de la siguiente manera:
install.packages("dplyr")
  • Paso 2: ahora cargue los paquetes instalados en R Script. Se puede hacer usando la función library() de la siguiente manera.

R

# loading the package
library(dplyr)
  • Paso 3: La tarea más importante es seleccionar un conjunto de datos adecuado . Aquí, trabajemos con el conjunto de datos ToothGrowth . Es un conjunto de datos incorporado en la biblioteca R.

R

# loading the package
library("dplyr")
  
# Using the ToothGrowth data set
# loading the data set
my_data <- ToothGrowth

También se puede crear su propio conjunto de datos. Para eso, primero prepare los datos, luego guarde el archivo y luego importe el conjunto de datos al script. El archivo puede incluir el uso de la siguiente sintaxis:

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 
  • Paso 4: Ahora selecciona un número aleatorio usando la función set.seed() . A continuación, comenzamos a mostrar una muestra de salida de 10 filas elegidas al azar mediante la función sample_n() del paquete dplyr. Así comprobamos nuestros datos.

R

# loading the package
library("dplyr")
  
# Using the ToothGrowth package
# loading the data set
my_data <- ToothGrowth
  
# Using the set.seed() for 
# random number generation
set.seed(1234)
  
# Using the sample_n() for 
# random sample of 10 rows
dplyr::sample_n(my_data, 10)

Producción:

   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
  • Paso 5: Por último, realice la prueba de Shapiro Wilk usando la función shapiro.test() .

R

# loading the package
library("dplyr")
  
# Using the ToothGrowth package
# loading the data set
my_data <- ToothGrowth
  
# Using the set.seed() 
# for random number generation
set.seed(1234)
  
# Using the sample_n() 
# for random sample of 10 rows
dplyr::sample_n(my_data, 10)
  
# Using the shapiro.test() to check
# for normality based 
# on the len parameter
shapiro.test(my_data$len)

Producción:

> 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

A partir de la salida obtenida podemos suponer normalidad. El valor p es superior a 0,05. Por lo tanto, la distribución de los datos dados no difiere significativamente de la distribución normal.

Publicación traducida automáticamente

Artículo escrito por shaonim8 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *