Una curva en forma de campana en estadística corresponde a una distribución normal o una distribución gaussiana que lleva el nombre del matemático alemán Carl Friedrich Gauss. En una distribución normal, los puntos se concentran en los valores medios y la mayoría de los puntos se encuentran cerca de la media. La orientación de la curva de campana depende de los valores de media y desviación estándar de un conjunto dado de puntos de entrada. Al cambiar el valor de la media, podemos cambiar la ubicación de la curva en el eje y la forma de la curva se puede manipular cambiando los valores de desviación estándar. En este artículo, aprenderemos a trazar una curva de campana en Python.
En una distribución normal, la media, la mediana y la moda son todas iguales y la curva en forma de campana es simétrica con respecto a la media, es decir, el eje y. La función de densidad de probabilidad para una distribución normal se calcula mediante la fórmula:
Dónde:
x = puntos de entrada,
= mean
= standard deviation of the set of input values
Ejemplo 1: Creación de una curva de campana simple.
Enfoque: Haremos una lista de puntos en el eje x y pasaremos estos puntos dentro de nuestra función pdf personalizada para generar una función de distribución de probabilidad para producir valores y correspondientes a cada punto en x. Ahora trazamos la curva usando los métodos plot() y scatter() que están disponibles en la biblioteca matplotlib. El método plot() se usa para hacer un diagrama de líneas y el método scatter() se usa para crear puntos punteados dentro del gráfico.
Código:
Python
# Importing libraries import numpy as np import matplotlib.pyplot as plt # A custom function to calculate # probability distribution function def pdf(x): mean = np.mean(x) std = np.std(x) y_out = 1/(std * np.sqrt(2 * np.pi)) * np.exp( - (x - mean)**2 / (2 * std**2)) return y_out # To generate an array of x-values x = np.arange(-2, 2, 0.1) # To generate an array of # y-values using corresponding x-values y = pdf(x) # Plotting the bell-shaped curve plt.style.use('seaborn') plt.figure(figsize = (6, 6)) plt.plot(x, y, color = 'black', linestyle = 'dashed') plt.scatter( x, y, marker = 'o', s = 25, color = 'red') plt.show()
Producción:
Ejemplo 2: Rellene el área bajo la curva de campana.
También podemos rellenar el área debajo de la curva de campana, para eso vamos a usar la función fill_between() presente en la biblioteca matplotlib para colorear el área entre dos curvas.
La función fill_ between() acepta múltiples parámetros, como valores x, valores y, que son coordenadas de puntos y líneas en el gráfico. Además, admite algunos parámetros específicos del gráfico, como ‘alfa’, que decide la opacidad del color y el atributo ‘color’ acepta el nombre del color para llenar debajo de la curva.
Enfoque: Tomamos una lista de puntos en el eje x y pasamos estos puntos dentro de nuestra función pdf personalizada para generar una función de distribución de probabilidad para producir valores y correspondientes a cada punto en x. De manera similar, para completar el área bajo la curva, seleccionamos un rango de valores de x_fill y también generamos una distribución de probabilidad. Ahora trazamos la curva primero usando el método plot() y scatter() y llenamos el área debajo de la curva con el método fill_ between().
Código:
Python
# Importing libraries import numpy as np import matplotlib.pyplot as plt # A custom function to calculate # probability distribution function def pdf(x): mean = np.mean(x) std = np.std(x) y_out = 1/(std * np.sqrt(2 * np.pi)) * np.exp( - (x - mean)**2 / (2 * std**2)) return y_out # To generate an array of x-values x = np.arange(-2, 2, 0.1) # To generate an array of # y-values using corresponding x-values y = pdf(x) # To fill in values under the bell-curve x_fill = np.arange(-2, 2, 0.1) y_fill = pdf(x_fill) # Plotting the bell-shaped curve plt.style.use('seaborn') plt.figure(figsize = (6, 6)) plt.plot(x, y, color = 'black', linestyle = 'dashed') plt.scatter(x, y, marker = 'o', s = 25, color = 'red') plt.fill_between(x_fill, y_fill, 0, alpha = 0.2, color = 'blue') plt.show()
Producción:
Publicación traducida automáticamente
Artículo escrito por saurabh48782 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA