28 votos

Prueba t para datos muy asimétricos

Tengo un conjunto de datos con decenas de miles de observaciones de datos de costes médicos. Estos datos están muy sesgados a la derecha y tienen muchos ceros. Tiene este aspecto para dos conjuntos de personas (en este caso, dos franjas de edad con más de 3.000 observaciones cada una):

 Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
 0.0      0.0      0.0   4536.0    302.6 395300.0 
Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
 0.0      0.0      0.0   4964.0    423.8 721700.0 

Si realizo la prueba t de Welch con estos datos, obtengo un resultado:

Welch Two Sample t-test

data:  x and y
t = -0.4777, df = 3366.488, p-value = 0.6329
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -2185.896  1329.358
sample estimates:
mean of x mean of y 
 4536.186  4964.455 

Sé que no es correcto utilizar una prueba t con estos datos, ya que no son normales. Sin embargo, si utilizo una prueba de permutación para la diferencia de las medias, obtengo casi el mismo valor p todo el tiempo (y se acerca más con más iteraciones).

Uso del paquete perm en R y permTS con Monte Carlo exacto

    Exact Permutation Test Estimated by Monte Carlo

data:  x and y
p-value = 0.6188
alternative hypothesis: true mean x - mean y is not equal to 0
sample estimates:
mean x - mean y 
      -428.2691 

p-value estimated from 500 Monte Carlo replications
99 percent confidence interval on p-value:
 0.5117552 0.7277040 

¿Por qué el estadístico de la prueba de permutación se aproxima tanto al valor de la prueba t? Si tomo los registros de los datos, obtengo un valor p de la prueba t de 0,28 y lo mismo de la prueba de permutación. Pensaba que los valores de la prueba t serían más despreciables que los que obtengo aquí. Esto ocurre con muchos otros conjuntos de datos que tengo como éste y me pregunto por qué la prueba t parece funcionar cuando no debería.

Me preocupa que los costes individuales no sean i.i.d. Hay muchos subgrupos de personas con distribuciones de costes muy diferentes (mujeres frente a hombres, enfermedades crónicas, etc.) que parecen anular el requisito i.i.d. del teorema central del límite, ¿o no debería preocuparme por eso?

40voto

jldugger Puntos 7490

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. Así pues, ambos arrojan valores p anodinos que no indican ninguna significación. La cuestión no es que parezcan estar de acuerdo, sino que, como les cuesta detectar cualquier diferencia, ¡simplemente no pueden estar en desacuerdo!


A modo de intuición, considere lo que ocurriría si un cambio en un solo en un conjunto de datos. Supongamos que el máximo de 721.700 no se hubiera producido en el segundo conjunto de datos, por ejemplo. La media habría descendido aproximadamente 721700/3000, es decir, unos 240 puntos. Sin embargo, la diferencia entre las medias es de sólo 4964-4536 = 438, ni siquiera el doble. Esto sugiere (aunque no prueba) que cualquier comparación de las medias no encontraría la diferencia significativa.

Sin embargo, podemos comprobar que la prueba t no es aplicable. Generemos algunos conjuntos de datos con las mismas características estadísticas que éstos. Para ello 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 se organizan para reproducir las medias y los terceros cuartiles observados.

En estas simulaciones resulta que los valores máximos tampoco están lejos de los máximos comunicados.

Repliquemos el primer conjunto de datos 10.000 veces y sigamos su media. (Los resultados serán casi los mismos cuando hagamos esto con 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 errará la distribución t de Student. Así que, como referencia, también he dibujado (en rojo) la PDF de la distribución Normal ajustada a estos resultados.

Histogram 1

No podemos ver muchos detalles porque hay algunos valores atípicos muy grandes. (Es una manifestación de esta sensibilidad de los medios que he mencionado.) Hay 123 de ellos -el 1,23%- por encima de 10.000. Centrémonos en el resto para poder ver los detalles y porque estos valores atípicos pueden deberse a la supuesta lognormalidad de la distribución, que no es necesariamente el caso del conjunto de datos original.

Histogram 2

Esto sigue siendo muy sesgado y se desvía visiblemente de la aproximación Normal, lo que proporciona una explicación suficiente de los fenómenos relatados en la pregunta. También nos da una idea de la magnitud de la diferencia de medias que podría detectar una prueba: tendría que ser de alrededor de 3000 o más para parecer significativa. A la inversa, la diferencia real de 428 podría detectarse siempre que tuviera aproximadamente $(3000/428)^2 = 50$ veces más datos (en cada grupo). Con 50 veces más datos, estimo que la potencia para detectar esta diferencia a un nivel de significación del 5% sería de alrededor de 0,4 (lo cual no es bueno, pero al menos tendríamos una oportunidad).


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

5voto

vanslly Puntos 2219

Cuando n es grande (como 300, incluso mucho menos de 3000), la prueba t es esencialmente la misma que la prueba z. Es decir, la prueba t se convierte en nada más que una aplicación del teorema del límite central, que dice que la MEDIA de cada uno de los dos grupos se distribuye casi exactamente de forma normal (¡incluso si las observaciones subyacentes a las dos medias están muy lejos de distribuirse normalmente!) Esta es también la razón por la que la típica tabla t no se molesta en mostrar valores para n superiores a 1000 (por ejemplo, esta tabla t) . Por lo tanto, no me sorprende que obtenga unos resultados tan satisfactorios.

Edita: Parece que he subestimado el extremo de la asimetría y su importancia. Aunque mi punto anterior tiene mérito en circunstancias menos extremas, whuber es mucho mejor en general.

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