Necesito usar normaltest en scipy para probar si el conjunto de datos es normal distributet. Pero me parece que no puede encontrar cualquiera de los buenos ejemplos de cómo utilizar scipy.estadísticas.normaltest.

Mi conjunto de datos tiene más de 100 valores.

InformationsquelleAutor The Demz | 2012-10-11

2 Comentarios

  1. 71
    In [12]: import scipy.stats as stats
    
    In [13]: x = stats.norm.rvs(size = 100)
    
    In [14]: stats.normaltest(x)
    Out[14]: (1.627533590094232, 0.44318552909231262)

    normaltest devuelve una 2-tupla de la chi-cuadrado de estadística, y el correspondiente p-valor. Dada la hipótesis nula de que x provenían de una distribución normal, el valor de p representa la probabilidad de que un chi-cuadrado de la estadística que los grandes (o más grande) sería visto.

    Si el p-val es muy pequeña, esto significa que es poco probable que los datos provenían de una distribución normal. Por ejemplo:

    In [15]: y = stats.uniform.rvs(size = 100)
    
    In [16]: stats.normaltest(y)
    Out[16]: (31.487039026711866, 1.4543748291516241e-07)
    • ¿Cómo podemos cuantificar «muy pequeño» aquí?
    • Es una elección arbitraria: stats.stackexchange.com/a/55693/842. Sólo asegúrese de que usted decida cuál es su nivel de importancia es antes la aplicación de una prueba estadística.
  2. 12

    Primero me enteré de que scipy.estadísticas.normaltest es casi el mismo. El mstats biblioteca se utiliza para el enmascarado de matrices. Matrices donde puede marcar valores como inválido y no se toman en el cálculo.

    import numpy as np
    import numpy.ma as ma
    from scipy.stats import mstats
    
    x = np.array([1, 2, 3, -1, 5, 7, 3]) #The array needs to be larger than 20, just an example
    mx = ma.masked_array(x, mask=[0, 0, 0, 1, 0, 0, 0])
    z,pval = mstats.normaltest(mx)
    
    if(pval < 0.055):
        print "Not normal distribution"

    «Tradicionalmente, en las estadísticas, es necesario un valor de p menor de 0,05 a
    rechazar la hipótesis nula.» – http://mathforum.org/library/drmath/view/72065.html

    • Por qué < 0.055 en lugar de < 0.05?
    • Si el p-val es muy pequeña, esto significa que es poco probable que los datos provenían de una distribución normal. 0.05 es el umbral estándar, pero para estar más seguro de que usted puede aumentar la certeza de como 0.055 o algo más. Es sólo un umbral de decir que sí es una distribución normal.
    • El Demz, elevar el umbral para 0.055 significaría menos la certeza de que los datos provenían de una distribución normal. Usted quiere bajar de su p-valor umbral por debajo del estándar de 0.05 para disminuir la probabilidad de rechazar erróneamente la hipótesis nula de que la distribución es normal.

Dejar respuesta

Please enter your comment!
Please enter your name here