studio - shapiro test r interpretacion
Ver si los datos se distribuyen normalmente en R (8)
¿Alguien puede ayudarme a completar la siguiente función en R:
#data is a single vector of decimal values
normally.distributed <- function(data) {
if(data is normal)
return(TRUE)
else
return(NO)
}
Además de qqplots y la prueba de Shapiro-Wilk, los siguientes métodos pueden ser útiles.
Cualitativo:
- histograma comparado con el normal
- cdf en comparación con la normal
- diagrama de ggdensity
- ggqqplot
Cuantitativo:
Los métodos cualitativos se pueden producir utilizando lo siguiente en R:
library("ggpubr")
library("car")
h <- hist(data, breaks = 10, density = 10, col = "darkgray")
xfit <- seq(min(data), max(data), length = 40)
yfit <- dnorm(xfit, mean = mean(data), sd = sd(data))
yfit <- yfit * diff(h$mids[1:2]) * length(data)
lines(xfit, yfit, col = "black", lwd = 2)
plot(ecdf(data), main="CDF")
lines(ecdf(rnorm(10000)),col="red")
ggdensity(data)
ggqqplot(data)
Una palabra de advertencia: no aplique ciegamente las pruebas. Tener una comprensión sólida de las estadísticas lo ayudará a comprender cuándo usar qué pruebas y la importancia de las suposiciones en las pruebas de hipótesis.
Considere usar la función shapiro.test
, que realiza la prueba de Shapiro-Wilks para la normalidad. He sido feliz con eso.
La prueba de Anderson-Darling también es útil.
library(nortest)
ad.test(data)
Las pruebas de normalidad no hacen lo que la mayoría piensa que hacen. La prueba de Shapiro, Anderson Darling, y otros son pruebas de hipótesis nulas EN CONTRA de la suposición de la normalidad. No se deben usar para determinar si se deben usar procedimientos estadísticos teóricos normales. De hecho, prácticamente no tienen valor para el analista de datos. ¿En qué condiciones estamos interesados en rechazar la hipótesis nula de que los datos se distribuyen normalmente? Nunca me he encontrado con una situación en la que una prueba normal sea lo correcto. Cuando el tamaño de la muestra es pequeño, incluso las grandes desviaciones de la normalidad no se detectan, y cuando el tamaño de la muestra es grande, incluso la desviación más pequeña de la normalidad dará lugar a un nulo rechazado.
Por ejemplo:
> set.seed(100)
> x <- rbinom(15,5,.6)
> shapiro.test(x)
Shapiro-Wilk normality test
data: x
W = 0.8816, p-value = 0.0502
> x <- rlnorm(20,0,.4)
> shapiro.test(x)
Shapiro-Wilk normality test
data: x
W = 0.9405, p-value = 0.2453
Entonces, en ambos casos (variables binomiales y lognormales), el valor de p es> 0.05, lo que provoca que no se rechace el valor nulo (que los datos sean normales). ¿Significa esto que debemos concluir que los datos son normales? (sugerencia: la respuesta es no). La falta de rechazo no es lo mismo que aceptar. Esta es la prueba de hipótesis 101.
Pero, ¿qué pasa con los tamaños de muestra más grandes? Tomemos el caso donde la distribución es casi normal.
> library(nortest)
> x <- rt(500000,200)
> ad.test(x)
Anderson-Darling normality test
data: x
A = 1.1003, p-value = 0.006975
> qqnorm(x)
Aquí estamos usando una distribución t con 200 grados de libertad. La gráfica qq muestra que la distribución es más cercana a la normal que cualquier distribución que probablemente veas en el mundo real, pero la prueba rechaza la normalidad con un alto grado de confianza.
¿La prueba significativa contra la normalidad significa que no deberíamos usar estadísticas teóricas normales en este caso? (Otra sugerencia: la respuesta es no :))
También recomendaría mucho SnowsPenultimateNormalityTest
en el paquete TeachingDemos
. La documentación de la función es mucho más útil para usted que la prueba en sí misma. Léalo a fondo antes de usar la prueba.
biblioteca (DnE)
x <-rnorm (1000,0,1)
is.norm (x, 10,0.05)
cuando realizas una prueba, siempre tienes la probabilidad de rechazar la hipótesis nula cuando es verdadera.
Ver el siguiente código R:
p=function(n){
x=rnorm(n,0,1)
s=shapiro.test(x)
s$p.value
}
rep1=replicate(1000,p(5))
rep2=replicate(1000,p(100))
plot(density(rep1))
lines(density(rep2),col="blue")
abline(v=0.05,lty=3)
El gráfico muestra que si tiene un tamaño de muestra pequeño o grande un 5% de las veces tiene la oportunidad de rechazar la hipótesis nula cuando es verdadera (un error de tipo I)
SnowsPenultimateNormalityTest
ciertamente tiene sus virtudes, pero es posible que también desee ver qqnorm
.
X <- rlnorm(100)
qqnorm(X)
qqnorm(rnorm(100))