¿Cómo trazar la distribución normal sobre el histograma en Python?

En este artículo, discutiremos cómo trazar una distribución normal sobre un histograma usando Python. Primero, discutiremos los gráficos de histograma y distribución normal por separado, y luego fusionaremos ambos gráficos. 

Histograma

Un histograma es una representación gráfica de un conjunto de puntos de datos dispuestos en un rango definido por el usuario. Similar a un gráfico de barras, un gráfico de barras comprime una serie de datos en objetos visuales fáciles de interpretar al agrupar múltiples puntos de datos en áreas lógicas o contenedores.

Para dibujar esto usaremos:

  • método random.normal() para encontrar la distribución normal de los datos. Tiene tres parámetros:  
    • loc – (promedio) donde se encuentra la parte superior de la campana.
    • Escala : (desviación estándar) qué tan uniforme desea que se distribuya el gráfico.
    • tamaño : forma de la array que regresa
  • La función hist() en el módulo Pyplot de la biblioteca Matplotlib se usa para dibujar histogramas. Tiene parámetros como:  
    • data : este parámetro es una secuencia de datos.
    • bin : este parámetro es opcional y contiene números enteros, secuencias o strings.
    • Densidad : este parámetro es opcional y contiene un valor booleano.
    • Alfa : el valor es un número entero entre 0 y 1, que representa la transparencia de cada histograma. Cuanto menor sea el valor de n, más transparente será el histograma.

Python3

import numpy as np
import matplotlib.pyplot as plt
  
# Generating some random data
# for an example
data = np.random.normal(170, 10, 250)
  
# Plotting the histogram.
plt.hist(data, bins=25, density=True, alpha=0.6, color='b')
  
plt.show()

Producción:

Distribución normal

El gráfico de distribución normal se caracteriza por dos parámetros: 

  • El valor medio, que representa el valor máximo del gráfico, y el gráfico siempre es simétrico. 
  • Y la desviación estándar, que determina la cantidad de cambio más allá de la media. Las desviaciones estándar más pequeñas (en comparación con la media) parecen más pronunciadas, mientras que las desviaciones estándar más grandes (en comparación con la media) parecen planas.

Trazar la distribución normal

  • NumPy arange() se usa para crear y devolver una referencia a una instancia de ndarray distribuida uniformemente. 
  • Con la ayuda del método mean() y stdev() , calculamos la media y la desviación estándar y las inicializamos a la variable  media y sd .
  • Dentro del método plot(), usamos un método pdf() para mostrar la función de densidad de probabilidad. Este método pdf() presente dentro de scipy.stats.norm. 

Ejemplo:

Python3

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
import statistics
    
# Plot between -30 and 30 with
# 0.1 steps.
x_axis = np.arange(-30, 30, 0.1)
    
# Calculating mean and standard 
# deviation
mean = statistics.mean(x_axis)
sd = statistics.stdev(x_axis)
    
plt.plot(x_axis, norm.pdf(x_axis, mean, sd))
plt.show()

Producción:

Distribución normal sobre histograma

Ahora, hemos terminado de separar el histograma y la discusión del gráfico de distribución normal, pero sería genial si pudiéramos visualizarlos en un gráfico con la misma escala. Esto se puede lograr fácilmente accediendo a dos gráficos en la misma celda y luego usando plt.show(). Ahora, analicemos cómo trazar la distribución normal sobre el histograma usando Python. 

Creemos que el histograma de algunos datos sigue una distribución normal. SciPy tiene una variedad de métodos que se pueden usar para estimar la mejor distribución de variables aleatorias, así como parámetros que pueden simular mejor esta adaptabilidad. Por ejemplo, para los datos de este problema, la media y la desviación estándar de la distribución normal que mejor se ajusta se pueden encontrar de la siguiente manera:

# Make the normal distribution fit the data: 
mu, std = norm.fit (data) # mean and standard deviation

La función xlim() dentro del módulo Pyplot de la biblioteca Matplotlib se usa para obtener o establecer el límite x de este eje.

Sintaxis: matplotlib.pyplot.xlim (*args, **kwargs)  

Parámetros:   este método utiliza los siguientes parámetros, como se describe a continuación:  

  • left : use este parámetro para establecer xlim a la izquierda.
  • Derecha : use este parámetro para configurar xlim a la derecha.
  • ** kwargs : este parámetro es un atributo de texto que controla la apariencia de la etiqueta.

Valor de retorno:  

  • izquierda, derecha: devuelve una tupla del nuevo valor límite del eje x.

Python3

import numpy as np
from scipy.stats import norm
import matplotlib.pyplot as plt
  
# Generate some data for this 
# demonstration.
data = np.random.normal(170, 10, 250)
  
# Fit a normal distribution to
# the data:
# mean and standard deviation
mu, std = norm.fit(data) 
  
# Plot the histogram.
plt.hist(data, bins=25, density=True, alpha=0.6, color='b')
  
# Plot the PDF.
xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 100)
p = norm.pdf(x, mu, std)
  
plt.plot(x, p, 'k', linewidth=2)
title = "Fit Values: {:.2f} and {:.2f}".format(mu, std)
plt.title(title)
  
plt.show()

Producción:

Publicación traducida automáticamente

Artículo escrito por shubhanshuarya007 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *