Tengo una tabla (X, Y), donde X es una matriz y y es un vector de clases. Aquí un ejemplo:

X = 0 0 1 0 1   and Y = 1
    0 1 0 0 0           1
    1 1 1 0 1           0

Quiero utilizar la prueba de Mann-Whitney para el cálculo de la función de la importancia(selección de función)

from scipy.stats import mannwhitneyu
results = np.zeros((X.shape[1],2))
for i in xrange(X.shape[1]):
    u, prob = mannwhitneyu(X[:,i], Y)
    results[i,:] = u, pro

No estoy seguro de si esto es correcto o no? He obtenido grandes valores de una tabla grande, u = 990 para algunas columnas.

InformationsquelleAutor Hocine Ben | 2013-06-01

1 Comentario

  1. 11

    No creo que el uso de U de Mann-Whitney es una buena manera de hacer la selección de características. De Mann-Whitney si las distribuciones de las dos variables son las mismas, no dice nada acerca de cómo se correlacionaron las variables. Por ejemplo:

    >>> from scipy.stats import mannwhitneyu
    >>> a = np.arange(100)
    >>> b = np.arange(100)
    >>> np.random.shuffle(b)
    >>> np.corrcoef(a,b)
       array([[ 1.        , -0.07155116],
              [-0.07155116,  1.        ]])
    >>> mannwhitneyu(a, b)
    (5000.0, 0.49951259627554112) # result for almost not correlated
    >>> mannwhitneyu(a, a)
    (5000.0, 0.49951259627554112) # result for perfectly correlated

    Porque a y b tienen las mismas distribuciones no podemos rechazar la hipótesis nula de que las distribuciones son idénticas.

    Y puesto en funciones de selección que usted está tratando de encontrar características que la mayoría de explicar Y, U de Mann-Whitney no ayudar con eso.

    • parece que hay un problema con el resultado en la última línea, no debe ser pvalue=1 ?
    • Como de la scipy doc: «valores Predeterminados para Ninguno, lo que resulta en un p-valor de la mitad del tamaño de las ‘dos caras’ p-valor y una diferente U estadística.» (docs.scipy.org/doc/scipy/reference/generated/…)

Dejar respuesta

Please enter your comment!
Please enter your name here