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))
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")
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].
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)