1 votos

¿Puedo utilizar la prueba de Kolmogorov Smirnov de esta manera para determinar la normalidad?

Hola Tengo el siguiente conjunto de datos de edad de 69 personas, deseo determinar si es normal o no utilizando la prueba de Kolmogorov Smirnov:

age <- c(67, 63, 45, 10, 8, 41, 75, 68, 63, 60, 55, 58, 58, 38, 40, 
63, 70, 38, 40, 38, 36, 6, 42, 63, 65, 63, 65, 38, 40, 39, 38, 
38, 40, 50, 42, 45, 16, 20, 41, 2, 38, 39, 36, 39, 34, 40, 44, 
88, 39, 41, 35, 35, 68, 65, 36, 35, 38, 40, 42, 10, 8, 44, 38, 
40, 68, 63, 19, 34, 38)

¿Puedo generar sintéticamente datos normales utilizando synthetic_age <- rnorm(length(age), mean = mean(age), sd = sd(age)) y posteriormente comparar mis datos de edad con los datos normales generados sintéticamente de la siguiente manera:

ks.test(age, synthetic_age)

He representado ambos conjuntos en un ECDF y la variable de la edad parece ser algo normal. También he ejecutado la prueba KS y dice que los dos conjuntos de datos (observados y sintéticos) proceden de la misma distribución, por lo tanto, ¿puedo decir que porque uno es normal, el otro también lo será?

Conozco el test de Shapiro Wilk, pero no quiero utilizarlo aquí. También me dice que los datos de edad que tengo no son normales. No sé qué creer.

7voto

manku Puntos 111

Las descripciones de los datos parecen inconsistentes con la normalidad: Dejando de lado las pruebas formales, hay fuertes indicios de que su age observaciones no son una muestra aleatoria de una población normal. En R, obtenemos un boxplot y un gráfico de probabilidad normal (gráfico Q-Q):

age = c(67, 63, 45, 10,  8, 41, 75, 68, 63, 60, 
        55, 58, 58, 38, 40, 63, 70, 38, 40, 38, 
        36,  6, 42, 63, 65, 63, 65, 38, 40, 39, 
        38, 38, 40, 50, 42, 45, 16, 20, 41,  2, 
        38, 39, 36, 39, 34, 40, 44, 88, 39, 41, 
        35, 35, 68, 65, 36, 35, 38, 40, 42, 10, 
         8, 44, 38, 40, 68, 63, 19, 34, 38)

par(mfrow=c(1,2))
 boxplot(age, col="skyblue2", pch=20)
 qqnorm(age, pch=10)
  abline(a=mean(age), b=sd(age))
par(mfrow=c(1,1))

enter image description here

En concreto, no hay observaciones entre el 21 y el 33. Esto hace que el cuartil inferior y la mediana sean casi iguales (como se muestra en el boxplot) y explica el "salto" en el gráfico de probabilidad normal.

summary(age);  sd(age)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    2.0    38.0    40.0    43.2    58.0    88.0 
[1] 17.75038  # sd

Sería extremadamente raro que una muestra de tamaño $n = 69$ de una población normal con $\mu$ cerca de 43,2 y la desviación estándar cerca de 17,75 para no tener ninguna observación en dicho intervalo. (Por supuesto, cada muestra tendrá sus propias peculiaridades, pero esta rareza parece demasiado extraña como para no mencionarla).

 ( 1 -  diff( pnorm(c(21,33), mean(age), sd(age)) ) )^69
[1] 1.427818e-06

Como usted dice, la prueba de Shapiro-Wilk rechaza la hipótesis nula de normalidad a cualquier nivel de significación razonable:

shapiro.test(age)$p.value
[1] 0.0007492721

La aplicación de ks.test en R es inapropiado aquí porque no conocemos los parámetros $\mu$ y $\sigma$ de la distribución de la población y porque hay muchos empates entre las 69 observaciones. (Además de los enlaces sugeridos por @whuber, por favor, lea la documentación del procedimiento R ks.test cuidadosamente).

Un histograma de la age datos y la estimación de la densidad del núcleo por defecto en R de la población me hacen preguntarme si su muestra podría proceder de una distribución mixta de tres componentes (i) personas menores de 21 años, (ii) personas de unos 40 años, y (iii) personas de unos 65 años.

hist(age, prob=T, br=30, col="skyblue2")
 lines(density(age), lwd=2, col="blue")
 curve(dnorm(x, mean(age), sd(age)), add=T, col="red", lwd=2, lty="dotted")

enter image description here

Intervalos de confianza para la media de la población. Sin embargo, si se quiere encontrar un intervalo de confianza del 95% para $\mu,$ entonces un procedimiento de intervalo de confianza t sería lo suficientemente robusto contra la la no normalidad para dar un resultado útil. El tamaño de la muestra es moderadamente grande, no hay evidencia de asimetría extrema en la muestra y no hay valores atípicos extremos. El intervalo de confianza t del 95% para $\mu$ (tomado de la t.test procedimiento en R) es $(38.84, 47,47).$

Por el contrario, un tipo de intervalo de confianza bootstrap no paramétrico del 95% para $\mu$ da $(39.12, 47.29)$ y el IC del 95% no paramétrico de Wilcoxon para el población mediana es $(39.0, 49.0).$

t.test(age)$conf.int
[1] 38.93879 47.46700
attr(,"conf.level")
[1] 0.95

set.seed(529)
d = replicate(10^5,  mean(sample(age, 71, rep=T)) - 43.2)
43.2 - quantile(d, c(.975,.025))
   97.5%     2.5% 
39.11831 47.28732 

wilcox.test(age, conf.int=T, conf.lev=.95)$conf.int
[1] 38.99994 49.00005
attr(,"conf.level")
[1] 0.95

Adenda: @whuber señala con razón el carácter subjetivo de juzgar si un determinado gráfico Q-Q normal parece "demasiado lejos" de la normalidad. Un método que he visto para proporcionar un marco para tales de la muestra en cuestión con los gráficos Q-Q de varias muestras del mismo tamaño. Q-Q de varias muestras del mismo tamaño tomadas de una población normal población normal con medias y DE que coinciden con la media y DE observadas de la muestra en cuestión.

En la figura siguiente, vemos que algunos puntos del gráfico Q-Q de age (azul oscuro) parecen se encuentran ligeramente más allá de la nube de puntos de los gráficos Q-Q de 19 muestras de comparación de este tipo (gris claro). [Como en todas las simulaciones, diferentes semillas pueden dar resultados ligeramente diferentes]. semillas pueden dar resultados ligeramente diferentes].

enter image description here

set.seed(4321)
qqnorm(age, col="white") # to set up axes
for(i in 1:19) {
  x = sort( rnorm(69, mean(age), sd(age)) )
  points( qnorm(ppoints(1:69)), x, col="lightgrey", pch=20) 
  }
points(qnorm(ppoints(1:69)), sort(age),  col="blue", pch=19)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X