Ni la prueba t ni la prueba de permutación tienen mucho poder para identificar una diferencia de medias entre dos distribuciones tan extraordinariamente sesgadas. Por lo tanto, ambos dan valores p anodinos que no indican ningún significado en absoluto. El problema no es que parezcan estar de acuerdo; es que, debido a que les resulta difícil detectar cualquier diferencia, ¡simplemente no pueden estar en desacuerdo!
Para cierta intuición, considere lo que sucedería si ocurriera un cambio en un solo valor en un conjunto de datos. Supongamos que, por ejemplo, no se hubiera producido un máximo de 721.700 en el segundo conjunto de datos. La media habría caído en aproximadamente 721700/3000, que es aproximadamente 240. Sin embargo, la diferencia en las medias es solo 4964-4536 = 438, ni siquiera el doble. Eso sugiere (aunque no prueba) que cualquier comparación de las medias no encontraría la diferencia significativa.
Sin embargo, podemos verificar que la prueba t no es aplicable. Generemos algunos conjuntos de datos con las mismas características estadísticas que estos. Para hacerlo, he creado mezclas en las que
- 5 / 8 de los datos son ceros en cualquier caso.
- Los datos restantes tienen una distribución lognormal.
- Los parámetros de esa distribución están dispuestos para reproducir las medias observadas y los terceros cuartiles.
Resulta en estas simulaciones que los valores máximos tampoco están lejos de los máximos informados.
Repitamos el primer conjunto de datos 10,000 veces y rastreemos su media. (Los resultados serán casi los mismos cuando hagamos esto para el segundo conjunto de datos). El histograma de estas medias estima la distribución muestral de la media. La prueba t es válida cuando esta distribución es aproximadamente Normal; la medida en que se desvía de la Normalidad indica la medida en que la distribución t de Student errará. Entonces, como referencia, también dibujé (en rojo) el PDF de la distribución Normal ajustado a estos resultados.
No podemos ver muchos detalles porque hay algunos grandes valores atípicos. (Esa es una manifestación de esta sensibilidad de los medios que mencioné). Hay 123 de ellos, 1.23%, por encima de 10,000. Centrémonos en el resto para que podamos ver los detalles y porque estos valores atípicos pueden resultar de la lognormalidad supuesta de la distribución, que no es necesariamente el caso para el conjunto de datos original.
Eso todavía está fuertemente sesgado y se desvía visiblemente de la aproximación Normal, proporcionando una explicación suficiente para los fenómenos relatados en la pregunta. También nos da una idea de cuán grande podría detectarse una diferencia de medias mediante una prueba: tendría que ser de alrededor de 3000 o más para parecer significativa. Por el( 3,000 / 428 )2= 50 contrario, la diferencia real de 428 podría detectarse siempre que tuviera aproximadamente veces más datos (en cada grupo). Con 50 veces más datos, calculo que el poder de detectar esta diferencia a un nivel de significancia del 5% sería de alrededor de 0.4 (lo cual no es bueno, pero al menos tendría una posibilidad)
Aquí está el R
código que produjo estas cifras.
#
# Generate positive random values with a median of 0, given Q3,
# and given mean. Make a proportion 1-e of them true zeros.
#
rskew <- function(n, x.mean, x.q3, e=3/8) {
beta <- qnorm(1 - (1/4)/e)
gamma <- 2*(log(x.q3) - log(x.mean/e))
sigma <- sqrt(beta^2 - gamma) + beta
mu <- log(x.mean/e) - sigma^2/2
m <- floor(n * e)
c(exp(rnorm(m, mu, sigma)), rep(0, n-m))
}
#
# See how closely the summary statistics are reproduced.
# (The quartiles will be close; the maxima not too far off;
# the means may differ a lot, though.)
#
set.seed(23)
x <- rskew(3300, 4536, 302.6)
y <- rskew(3400, 4964, 423.8)
summary(x)
summary(y)
#
# Estimate the sampling distribution of the mean.
#
set.seed(17)
sim.x <- replicate(10^4, mean(rskew(3367, 4536, 302.6)))
hist(sim.x, freq=FALSE, ylim=c(0, dnorm(0, sd=sd(sim.x))))
curve(dnorm(x, mean(sim.x), sd(sim.x)), add=TRUE, col="Red")
hist(sim.x[sim.x < 10000], xlab="x", freq=FALSE)
curve(dnorm(x, mean(sim.x), sd(sim.x)), add=TRUE, col="Red")
#
# Can a t-test detect a difference with more data?
#
set.seed(23)
n.factor <- 50
z <- replicate(10^3, {
x <- rskew(3300*n.factor, 4536, 302.6)
y <- rskew(3400*n.factor, 4964, 423.8)
t.test(x,y)$p.value
})
hist(z)
mean(z < .05) # The estimated power at a 5% significance level