Skip to content
Santiago Alférez edited this page Jul 15, 2016 · 9 revisions

Explicación de las diferentes pruebas de normalidad (goodnes of fit test)

Preparación de los datos

Tomaré como ejemplo inicial, el descriptor NC_ratio para "todas" las identidades. El archivo del conjunto de datos utilizados es: 12960CellImages_WithOutliers_140Sel_LauraP_paper.mat (también podría ser .xls). Si se realiza una gráfica del histograma de este descriptor, haciendo una superposición con lo que debería ser una distribución (densidad) normal, resulta en:

Histogram of the NC_ratio

En esta figura claramente se ve que la distribución no tiene forma Gaussiana.

Pruebas de normalidad

Las pruebas de decisión para la normalidad de la distribución, tienen como hipótesis nula de que los datos provienen de una distribución normal, contra la alternativa de que no provienen de esta distribución. La prueba genera dos valore: h y p (p-value). El resulta de h es 1 si la prueba rechaza la hipótesis nula al 5% de significancia (se puede variar el nivel de significancia), o de lo contrario h es cero.

El p-value de las pruebas, es un valor escalar entre [0,1], donde p es la probabilidad de observar una prueba estadística tan extrema como, o más extrema que, el valor observado bajo la hipótesis nula. Esto es, valores pequeños de p ponen en duda la validez de la hipótesis nula (es decir, ponen en duda que la distribución sea normal).

One-sample Kolmogorov-Smirnov test

Lo más importante de esta prueba es que parte de que la distribución normal está estandarizada, es decir, que tiene media cero y desviación estándar igual a uno.

En matlab se realiza mediante:

[h,p] = kstest(x)

El resultado para el descriptor de NC_ratio es: h = 1, p = 0. Es decir, se rechaza la hipótesis nula (que es una distribución normal).

Chi-square goodness-of-fit test

En matlab se realiza mediante:

[h,p] = chi2gof(x,'Nbins', 20)

Donde el Nbins es el número de contenedores, que usualmente es 10, pero que los grados de libertad con este valor no eran suficientes.

El resultado para el descriptor de NC_ratio es: h = 1, p = 0. Es decir, se rechaza la hipótesis nula (que es una distribución normal).

Anderson-Darling test

En matlab se realiza mediante:

[h,p] = adtest(x)

El resultado para el descriptor de NC_ratio es: h = 1, p = 5E-4. Es decir, se rechaza la hipótesis nula (que es una distribución normal).

Jarque-Bera test

En matlab se realiza mediante:

[h,p] = jbtest(x)

El resultado para el descriptor de NC_ratio es: h = 1, p = 5E-3. Es decir, se rechaza la hipótesis nula (que es una distribución normal).


Con todas estas pruebas se puede ver claramente que el descriptor de NC_ratio no presenta una distribución normal.

Ahora, esto es algo muy común para la gran mayoría de descriptores, debido a la gran variabilidad de muestras. Por ejemplo, para los primeros 20 descriptores (importantes), usando la prueba de Anderson-Darling, produce la siguiente tabla:

      Feature          h      p   
___________________    _    ______

'NCratio'              1    0.0005
'Perimeter_nuc'        1    0.0005
'EquivDiameter_cel'    1    0.0005
'C_kurtoPgra_cel'      1    0.0005
'B_Skewness_cel'       1    0.0005
'M_IMC1_cel'           1    0.0005
'B_Std_cel'            1    0.0005
'M_Entropy_cel'        1    0.0005
'G_Skewness_cel'       1    0.0005
'K_meanPgra_cyt'       1    0.0005
'B_Mean_nuc'           1    0.0005
'S_CluShade_cel'       1    0.0005
'M_Mean_cyt'           1    0.0005
'M_Homogeneity_cel'    1    0.0005
'S_Kurtosis_cel'       1    0.0005
'C_IMC1_nuc'           1    0.0005
'Hairiness'            1    0.0005
'S_Std_cel'            1    0.0005
'circularity_nuc'      1    0.0005
'K_Homogeneity_cyt'    1    0.0005

La misma iteración anterior, pero solo para la entidad LLC, produce la siguiente tabla:

      Feature          h        p     
___________________    _    __________

'NCratio'              1        0.0005
'Perimeter_nuc'        1        0.0005
'EquivDiameter_cel'    1        0.0005
'C_kurtoPgra_cel'      0       0.60283
'B_Skewness_cel'       1        0.0005
'M_IMC1_cel'           1        0.0005
'B_Std_cel'            1        0.0005
'M_Entropy_cel'        1        0.0005
'G_Skewness_cel'       1        0.0005
'K_meanPgra_cyt'       1        0.0005
'B_Mean_nuc'           1        0.0005
'S_CluShade_cel'       1        0.0005
'M_Mean_cyt'           1        0.0005
'M_Homogeneity_cel'    1        0.0005
'S_Kurtosis_cel'       1        0.0005
'C_IMC1_nuc'           1        0.0005
'Hairiness'            1        0.0005
'S_Std_cel'            1    0.00056304
'circularity_nuc'      1        0.0005
'K_Homogeneity_cyt'    1        0.0005

En otras palabras sólo el descriptor C_kurtoPgra_cel para la LLC tiene posiblemente una distribución normal.

El histograma para este descriptor resulta en:

Lo cual evidentemente presenta una forma gaussiana.

Algunas referencias útiles:

http://blog.minitab.com/blog/the-statistical-mentor/anderson-darling-ryan-joiner-or-kolmogorov-smirnov-which-normality-test-is-the-best

http://blog.minitab.com/blog/the-statistical-mentor/normality-tests-and-rounding