4 votos

¿Métodos para comprobar si mis datos se ajustan a una función de distribución?

Mis datos abreviados son:

y <- c (2,2,1,5,6,7,1,2,1,6,6,7,3,2,4,4,4,4,3,3,9,1,1,9)

En primer lugar, normalizo mis datos:

y_scale <- scale(y)

A continuación, genero un conjunto de datos modelo con una distribución normal basada en la media y el desvío estándar de y_scale:

y_norm <- rnorm(n=24, m=mean(y_scale), sd=sd(y_scale))

Para comprobar si mis datos se ajustan a la distribución normal, hago lo siguiente

ks.test(y_scale,y_norm)

El resultado es el siguiente:

Two-sample Kolmogorov-Smirnov test

data:  y_scale and y_norm 
D = 0.2083, p-value = 0.6749
alternative hypothesis: two-sided 

Warning message:
In ks.test(y_scale, y_norm) : cannot compute correct p-values with ties

Aquí, mi pregunta es:

(1) Mi conjunto de datos reales tiene ~ 700.000 números, he descubierto que no puedo utilizar shapiro.test.

shapiro.test(y_scale)
Error in shapiro.test(y_scale) : sample size must be between 3 and 5000

(2) ¿Es erróneo el valor p calculado anteriormente mediante ks.test? ¿Cómo resolver este problema de los valores p?

Warning message:
In ks.test(y_scale, y_norm) : cannot compute correct p-values with ties

(3) Las razones por las que intenté utilizar ks.test en lugar de otros métodos, es porque quiero comparar con otros conjuntos de datos modelo que tienen otras funciones de distribución. Me parece que puedo simplemente reemplazar y_norm con otro conjunto de datos modelo, y comparar sus valores p o valores D (cuanto más pequeños mejor), para elegir qué función de distribución se ajusta más a mis datos.

(4) ¿Es imprescindible normalizar primero los datos?

5voto

Eero Puntos 1612

¿Por qué se comprueba la normalidad?

Como dice @user603 la discreción de tus datos sugiere que no es normal. Pero, ¿te interesa lo suficientemente normal?

Con 700.000 puntos de datos tendrás poder para detectar diferencias respecto a la normalidad que son muy pequeñas y probablemente no importantes (acabo de comparar una muestra de una distribución t con 100 df y he obtenido un valor p de 0,011). Si usted está haciendo la prueba de normalidad en la preparación para el uso de la inferencia de la teoría normal (pruebas t, intervalos de confianza, etc), entonces para la mayoría de las distribuciones de población 700.000 debe ser suficiente para el teorema del límite central para que pueda utilizar la inferencia de la teoría normal, pero el conocimiento acerca de la población es probablemente más importante aquí que cualquier prueba de normalidad.

Además, si los datos son realmente discretos, la normalización arruina la discreción y puede inducir a error. Para obtener resultados significativos no se debe normalizar.

Calcular la media y la desviación típica después de la normalización no tiene sentido, ya que se ha fijado la media en 0 y la desviación típica en 1.

La prueba KS está diseñada para comparar con una distribución totalmente especificada, normalizar los datos primero equivale a comparar con una distribución con parámetros estimados, lo que también invalidará el valor p.

2voto

Patrick Puntos 183
  1. Si los datos son discretos, no es posible extraerlos de una distribución continua.
  2. Pruebe ks.test(y,"pnorm",mean(y),sd(y)) .

2voto

romandas Puntos 1782

Como sugiere user603, puedes hacer la prueba directamente comparando con la distribución normal.
Como puede ver en página de ayuda el $p$ -no son exactos si hay empates porque "las distribuciones continuas no los generan". Así que la teoría (y por tanto el algoritmo) no permite empates.
Hice algunas pruebas utilizando
x <- rnorm(N)
ks.test(x, "pnorm")
y aumentó el tamaño de $N$ . Me di cuenta de la $p$ -valor es poco fiable, saltando arriba y abajo aleatoriamente. Y no hubo empates (hay que reconocer el mérito de R). Sin embargo, el $D$ -valor es constante y disminuye con el aumento del tamaño. Así que le sugiero que utilice el $D$ -valor.
Y sobre lo de normalizar, no existe tal requisito. Así que no le veo sentido a hacerlo.

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