Pruebas de normalidad y asunciones de los modelos lineares Diseño experimental 2137 Juan C. Benavides Tomado en parte de: http://webspace.ship.edu/pgmarr/Geo441/Lectures/
Tres criterios fundamentales Independencia de las muestras (replicación) Distribución normal de los residuos Homogeneidad de varianzas
Porque normalidad La inferencia estadística esta basada en la distribución normal o la distribución F Anova es el análisis de las varianzas Las varianzas se asumen vienen de una distribución normal Desviaciones de la normalidad tienen un alto impacto en Error tipo II Pruebas detectan cambios cuando estos no existen Tu decisión La verdad Dios existe Dios no existe Rechazo la existencia de Dios Tremendo error Correcto Acepto la existencia de Dios Correcto y super bien Error menor
R-Studio Una distribución normal se puede dividir acorde a la desviación estandard
Observados vs esperados La distribución teórica normal puede ser comparada con la distribución de una variable de interés Distribución de la variable medida Media=66.51 DS=18.27 Distribución normal calculada Media=66.51 DS=18.27
Metodos de evaluación Gráficos Estadísticos Gráficos de probabilidad QQ Gráficos de frecuencias acumuladas P-P Estadísticos Shapiro-Wilks Kolmogorov-Smirnov Otros W/S test Jarque-Bera test D’Agostino test
Test de normalidad visual Gráfico de residuos normalizados qq #distribución normal usando las proporciones de datos entre los cuantiles data(cars) qqnorm(cars$dist) qqline(cars$dist) data(PlantGrowth) qqnorm(PlantGrowth$weight) qqline(PlantGrowth$weight) par(mfrow=c(2,1)) qqnorm(cars$dist);qqline(cars$dist) qqnorm(PlantGrowth$weight);qqline(PlantGrowth$weight)
Test de normalidad visual par(mfrow=c(1,2)) qqnorm(cars$dist);qqline(cars$dist) qqnorm(PlantGrowth$weight);qqline(PlantGrowth$weight)
Test de normalidad visual Son de poco uso cuando el n es pequeño Datos son normales acorde a Shapiro-Wilks pero la forma del histograma es no normal (al menos para los rangos escogidos)
Pruebas de normalidad Precisión: calculan la probabilidad de que la muestra provenga de una población normal Pruebas de normalidad buscan ver si la distribución de la variable NO es diferente de lo normal, por lo tanto el objetivo es no rechazar la hipótesis nula p>0.05
Dos pruebas de normalidad Shapiro-wilks Kolomogorov- Smirnov
Shapiro-Wilks par(mfrow=c(3,1)) #distribución normal media=5 shapiro.test(a<-rnorm(100, mean = 5, sd = 3)) qqnorm(rnorm(100, mean = 5, sd = 3));qqline(a) #distribución t, con 300 grados de libertad shapiro.test(b<-rt(1000,df=300)) qqnorm(rt(1000,df=300));qqline(b) #distribución uniforme shapiro.test(c<-runif(100, min = 2, max = 4)) qqnorm(runif(100, min = 2, max = 4));qqline(c)
Distribución normal Distribución t Distribución Uniforme
Kolmogorov-Smirnov Prueba de bondad de ajuste #comparar si dos variables tienen la misma distribución x <- rnorm(50) y <- runif(30) ks.test(x, y) #comparar si una variable sigue la distribución normal (uso de funciones internas de r) ks.test(x, pnorm) ks.test(y, pnorm)
Remedios para no normalidad Transformaciones Pueden cambiar la relación entre las variables Modificar el tipo de prueba estadística Ajustar grados de libertad Pruebas aleatorias y modelos nulos Pruebas F por rangos (Kruskall Wallis)
Observados vs esperados La distribución teórica normal puede ser comparada con la distribución de una variable de interés Distribución de la variable medida Media=66.51 DS=18.27 Distribución normal calculada Media=66.51 DS=18.27
Homogeneidad de varianzas El modelo ANOVA se basa en la proporción de los cuadrados medios de los factores y los cuadrados medios residuales El cuadrado medio residual es el estimador imparcial de 2 La varianza de una sola observación Si hubo una varianza no constante entre los tratamientos, podemos reemplazar el cuadrado medio residual con una varianza total, a2, y una varianza de tratamiento, t2, que es una versión ponderada de a2 La “belleza" de la ANOVA se pierde
Homogeneidad de varianzas
Homogeneidad de varianzas
Prueba de Levenne Realiza una Anova sobre las varianzas set.seed(9719) # produce el mismo ejemplo g1 = rnorm( 50, mean=2, sd=2) # set de datos con dif. varianzas g2 = rnorm(100, mean=3, sd=3) # y tamaños diferentes my.data = stack(list(g1=g1, g2=g2)) # getting the data into 'stacked' format #install.packages("car") #si es necesario library(car) # la funcion esta en este paquete leveneTest(values~ind, my.data)
Prueba de Bartlett Similar a Levenne pero es afectado por distribuciones no normales set.seed(9719) # produce el mismo ejemplo g1 = rnorm( 50, mean=2, sd=2) # set de datos con dif. varianzas g2 = rnorm(100, mean=3, sd=3) # y tamaños diferentes my.data = stack(list(g1=g1, g2=g2)) # getting the data into 'stacked' format bartlett.test(values~ind, my.data)
Dataset Lecturas de cambios en la atmosfera en el observatorio de Mauna Loa https://lepicolea.wordpress.com/cursos/diseno- experimental/clases-diseno-experimental/ http://cdiac.ornl.gov/images/mauna_loa_observatory.jpg
Dataset Lecturas de cambios en el CO2 de la atmosfera en Mauna Loa
Dataset Lecturas de cambios en el CO2 de la atmosfera en Mauna Loa
Ejercicio Identificar si las siguientes variables son normales Concentración de CO2 Cuales tipos de transformación sugiere ustedes realizar sobre estas variables para que se ajusten a una distribución normal Determinar si las varianzas son iguales antes de 2000 y después del 2000
Editar el encabezado del archivo #leer archivo del wd remover las dos primeras filas #no usar encabezado dataset<-read.table("ftp://aftp.cmdl.noaa.gov/products/trends/co2/co2_mm_mlo.txt") names(dataset)<-c("Year","month", "decimal_year","average_date", "interpolated date","trend","days") plot(dataset$decimal_year,dataset$trend,ylab=expression(paste("CO"[2]," Concentration (ppm)",sep=""))) hist(dataset$trend) qqnorm(dataset$trend) shapiro.test(dataset$trend)
Transformaciones #intentar una transformación box muller x=rep(0,size) y=rep(0,size) #a for (i in 1:size){ x[i] = sqrt(2*log(dataset1900$trend[i]))*cos(2*pi*dataset2000$trend[i]) y[i] = sqrt(2*log(dataset1900$trend[i]))*sin(2*pi*dataset2000$trend[i]) } qqnorm(c(x,y)) hist(c(x,y)) shapiro.test(c(x,y)) plot(dataset$trend,ylim=c(-10,420)) points(c(x,y),col="red") plot(c(x,y),col="red") Comparen como la transformación afecta la naturaleza de los datos
Homogeneidad de varianzas #crear vector de clasificacion-TRATAMIENTOS dataset$siglo<-ifelse(dataset$decimal_year<2000,"XIX","XX") library(car) leveneTest(trend~siglo,dataset) #primera anova de toda la vida aov1<-aov(trend~siglo,dataset) plot(aov1) Comparen como la transformación afecta la naturaleza de los datos
Homogeneidad de varianzas #crear vector de clasificacion-TRATAMIENTOS dataset$siglo<-ifelse(dataset$decimal_year<2000,"XIX","XX") library(car) leveneTest(trend~siglo,dataset) #primera anova de toda la vida aov1<-aov(trend~siglo,dataset) plot(aov1)
Homogeneidad de varianzas #hagamos tiempo una variable continua mas razonable dataset$time<-max(dataset$decimal_year)-dataset$decimal_year #levenne no funciona en variables cuantitativas leveneTest(trend~time,dataset) #pruebas de regresion usando categorias de siglo aov3<-lm(trend~siglo,dataset) #pruebas de regresion usando tiempo continuo aov4<-lm(log(trend)~time,dataset) #regresion vs anova par(mfrow=c(2,2)) plot(aov3) plot(aov4) summary(aov3) summary(aov4)