Función SciPy stats.skew

  1. La función scipy.stats.skew
  2. Cálculo de la asimetría usando numpy.linspace()
  3. Cálculo de la asimetría utilizando datos aleatorios

La asimetría en estadística se define como una medida de la simetría de la distribución de algunos datos. El punto que está en la parte superior de toda la distribución se conoce como la moda. La asimetría se calcula mediante la siguiente fórmula.

Skewness = 3(Mean - Median) / Standard Deviation

Condiciones de asimetría:

  • Si skewness = 0, los datos se distribuyen normalmente.
  • Si skewness > 0, entonces los datos se ponderan más en el lado izquierdo de la distribución.
  • Si skewness < 0, entonces los datos se ponderan más en el lado derecho de la distribución.

La función scipy.stats.skew

La función scipy.stats.skew de la biblioteca SciPy se utiliza para determinar el valor de asimetría de un dato dado. Esta función se define como scipy.stats.skew(a, axis, bias, nan_policy).

Los siguientes son los parámetros de la función scipy.stats.skew.

un (ndarray) Define el array de entrada, es decir, los datos de entrada.
axis (int) Define el eje a lo largo del cual la función calcula el valor de skewness. El valor predeterminado es 0, es decir, la función calcula sobre todo el array.
bais (bool) Si el valor de este parámetro se establece en False, todos los cálculos se corrigen por el sesgo estadístico.
nan_policy Decide cómo tratar cuando hay valores de NaN en los datos de entrada. Hay tres parámetros de decisión en el parámetro, propagate, raise, omit. El parámetro propagate simplemente devuelve el valor NaN, raise devuelve un error y omit simplemente ignora los valores NaN y la función continúa con el cálculo. Estos parámetros de decisión se definen entre comillas simples ' '. Además, el valor por defecto es propagate.

Todos los parámetros excepto el parámetro a (ndarray) son opcionales. Eso significa que no es necesario definirlos cada vez que se usa la función scipy.stats.skew.

Cálculo de la asimetría usando numpy.linspace()

La función linespace() de la biblioteca NumPy ayuda a crear secuencias numéricas aleatorias que están espaciadas uniformemente.

from scipy.stats import skew
import numpy as np 
import pylab as p 
  
x = np.linspace(-10, 10, 1000)
y = 1/(np.sqrt(4*np.pi)) * np.exp( -0.2*(x)**2  )
  
p.plot(x, y, '.')
p.show()
  
print('Skewness for the input data : ', skew(y))

Producción:

estadísticas de scipy prueba normal

Skewness for the input data :  1.458658437437705

Cálculo de la asimetría utilizando datos aleatorios

En este método se utiliza la función np.random.normal de la biblioteca NumPy. Esta función ayuda a crear una matriz de una forma y tamaño especificados que consta de valores aleatorios que en realidad son parte de la distribución gaussiana.

from scipy.stats import skew
import numpy as np 

s = np.random.normal(0, 5, 10000)
  
print ("S : ", s)
  
print('Skewness for input data : ', skew(s))
S :  [ 2.52232305  5.66398738  2.72036031 ...  0.53774684 -0.31164153
  1.99714612]
Skewness for input data :  0.0027004583356120505

Artículo relacionado - SciPy Stats

  • Función SciPy scipy.stats.binom
  • Función SciPy scipy.stats.mode
  • Función SciPy scipy.stats.sem
  • Función SciPy stats.beta