PRUEBA DE SHAPIRO-WILK

Es una de las más utilizadas y eficientes para comprobar la normalidad de una variable, considerara que el tamaño de la muestra debe ser menor de 5000. En caso de tener más pueden usarse alguna de las muchas pruebas de normalidad que hay.

set.seed(10)
x <- rnorm(100) # Creamos una variable normal con 100 valores
x.test <- shapiro.test(x)
print(x.test)
## 
##  Shapiro-Wilk normality test
## 
## data:  x
## W = 0.98908, p-value = 0.5911
x2 <- runif(100) # Creamos una variable con distribución uniforme (no normal) con 100 valores
x2.test <- shapiro.test(x2)
print(x2.test)
## 
##  Shapiro-Wilk normality test
## 
## data:  x2
## W = 0.92848, p-value = 4.082e-05

En x se tiene que p > 0.05 por lo tamto nos indiaca que tenemos una distribución normal. en x2 tenemos un p < 0.05 por lo que podemos indicando que tenemos una distribución que no es normal.

Podemos hacer unos gráficos superponiendo la distribución normal al histograma de frecuencias. Para ello hemos creado la función plotn() que lo hace. Es fácil modificarla para añadir más opciones para los gráficos.

# Dado un vector dibuja el histograma asociado y la distribución normal
 
plotn <- function(x,main="Histograma de frecuencias \ny distribución normal",
                  xlab="X",ylab="Densidad") {
                  min <- min(x)
                  max <- max(x)
                  media <- mean(x)
                  dt <- sd(x)
                  hist(x,freq=F,main=main,xlab=xlab,ylab=ylab)
                  curve(dnorm(x,media,dt), min, max,add = T,col="blue")
                }
 
plotn(x,main="Distribución normal")#Grafico de x

plotn(x2,main="Distribución uniforme")#Grafico de x2