Intervalos de igual frecuencia en Python

En estadística, el binning es el proceso de colocar valores numéricos en bins .

La forma más común de agrupación se conoce como agrupación de igual ancho , en la que dividimos un conjunto de datos en k agrupaciones de igual ancho.

Una forma de agrupación menos utilizada se conoce como agrupación de igual frecuencia , en la que dividimos un conjunto de datos en k agrupaciones que tienen el mismo número de frecuencias.

Este tutorial explica cómo realizar agrupaciones de igual frecuencia en Python.

Intervalos de igual frecuencia en Python

Supongamos que tenemos un conjunto de datos que contiene 100 valores:

importar numpy como np
 importar matplotlib.pyplot como plt

#crear datos
np.random.seed (1)
datos = np.random.randn (100)

#ver datos de los primeros 5 valores
 [: 5]

matriz ([1.62434536, -0.61175641, -0.52817175, -1.07296862, 0.86540763])

Intervalos de igual ancho:

Si creamos un histograma para mostrar estos valores, Python usará agrupaciones de igual ancho de forma predeterminada:

#crear histograma con bandejas de igual ancho
n, bins, parches = plt.hist (data, edgecolor = 'black')
plt.show ()

#muestra los límites y la frecuencia de los contenedores por contenedor 
contenedores, m

(matriz ([- 2.3015387, -1.85282729, -1.40411588, -0.95540447, -0.50669306,
        -0.05798165, 0.39072977, 0.83944118, 1.28815259, 1.736864,
         2.18557541]),
 matriz ([3., 1., 6., 17., 19., 20., 14., 12., 5., 3.]))

Cada contenedor tiene un ancho igual de aproximadamente .4487, pero cada contenedor no contiene la misma cantidad de observaciones. Por ejemplo:

  • El primer intervalo se extiende desde -2,3015387 a -1,8528279 y contiene 3 observaciones.
  • El segundo intervalo se extiende desde -1,8528279 a -1,40411588 y contiene 1 observación.
  • El tercer intervalo se extiende desde -1,40411588 hasta -0,95540447 y contiene 6 observaciones.

Y así.

Intervalos de igual frecuencia:

Para crear bins que contengan un número igual de observaciones, podemos usar la siguiente función:

#define función para calcular bins de igual frecuencia  
def equalObs (x, nbin):
    nlen = len (x)
    return np.interp (np.linspace (0, nlen, nbin + 1),
                     np.arange (nlen),
                     np.sort (x))

#crear histograma con contenedores de igual frecuencia 
n, bins, parches = plt.hist (data, equalObs (data, 10), edgecolor = 'negro')
plt.show ()

#muestra los límites y la frecuencia de los contenedores por contenedor 
contenedores, m

(matriz ([- 2.3015387, -0.93576943, -0.67124613, -0.37528495, -0.20889423,
         0.07734007, 0.2344157, 0.51292982, 0.86540763, 1.19891788,
         2.18557541]),
 matriz ([10., 10., 10., 10., 10., 10., 10., 10., 10., 10.]))

Binning de igual frecuencia en el ejemplo de Python

Cada bin no tiene una anchura igual, pero cada bin hace contener una cantidad igual de observaciones. Por ejemplo:

  • El primer contenedor se extiende desde -2.3015387 a -0.93576943 y contiene 10 observaciones.
  • El segundo intervalo se extiende desde -0,93576943 hasta -0,67124613 y contiene 10 observaciones.
  • El tercer intervalo se extiende desde -0,67124613 a -0,37528495 y contiene 10 observaciones.

Y así.

Podemos ver en el histograma que cada contenedor claramente no tiene el mismo ancho, pero cada contenedor contiene la misma cantidad de observaciones, lo que se confirma por el hecho de que la altura de cada contenedor es igual.

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Redactor del artículo

  • Luis Benites
    Directo & CEO de Statologos LSI

    Tengo una Maestría en Ciencias en Estadística Aplicada y he trabajado en algoritmos de aprendizaje automático para empresas profesionales tanto en el sector de la salud como en el comercio minorista.

    Ver todas las entradas

Deja un comentario

A menudo, puede estar interesado en calcular la suma de una o más filas en un DataFrame de pandas. Afortunadamente,…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!