Búsqueda de sitios web

Mostrar distribución de Pareto en estadísticas usando Python


La distribución de Pareto es un tipo de distribución de probabilidad de ley de potencia comúnmente empleada para describir fenómenos mensurables, como datos sociales, científicos, geofísicos o actuariales. Lleva el nombre de Vilfredo Pareto, economista, sociólogo e ingeniero civil italiano. La distribución de Pareto se utiliza a menudo para modelar la distribución de diversos conjuntos de datos, como el tamaño de las ciudades, el tráfico de sitios web y las citas de publicaciones científicas.

El principio de Pareto, conocido como regla 80/20, sugiere que el 20% de los insumos contribuye al 80% del resultado en cada escenario o sistema. Python ofrece varias bibliotecas para trabajar con distribuciones de probabilidad, como la biblioteca scipy.stats. Para calcular la distribución de Pareto en Python, se puede utilizar la función de Pareto de la biblioteca scipy.stats con el parámetro de forma alfa y el parámetro de escala xm como argumentos.

Sintaxis

La siguiente sintaxis se utiliza para generar 500 números aleatorios a partir de una distribución de Pareto:

import numpy as np
   from scipy.stats import pareto
   data = pareto.rvs(alpha_value, 500, scale_value)
print(np.mean(data))

Algoritmo

  • Paso 1 - Importe las bibliotecas.

  • Paso 2 - Defina el parámetro de forma (alfa) y el parámetro de escala (xm)

  • Paso 3 : proporcione un tamaño específico para generar el número aleatorio y utilice la función 'pareto.rvs'.

  • Paso 4 : imprime el número aleatorio generado.

Método 1: aquí estamos usando la biblioteca scipy.stats

Ejemplo 1

Para generar 500 números aleatorios a partir de una distribución de Pareto con alfa=2 y xm=1, podemos usar el siguiente código:

import numpy as np
from scipy.stats import pareto
data = pareto.rvs(2, size=500, scale=1)
print(np.mean(data))

Producción

1.9138055526628364

Este código genera 500 números aleatorios a partir de una distribución de Pareto definida por la operación numérica y el primo. Se calcula e imprime el promedio (media) de los números generados. Esto puede resultar útil para organizar estadísticas de distribución y realizar análisis primarios en Python.

Ejemplo 2

Para generar 700 números aleatorios a partir de una distribución de Pareto con alfa=3 y xm=2, podemos usar el siguiente código:

import numpy as np
from scipy.stats import pareto
data = pareto.rvs(3, size=700, scale=2)
print(np.median(data))

Producción

2.517223926313278

Este código genera 700 números aleatorios utilizando la distribución de Pareto con el parámetro de tamaño establecido en 3 y el parámetro de escala establecido en 2. La mediana (puntaje medio) de los números generados se calcula e imprime. Esto se puede utilizar para verificar el dígito medio de los números generados.

Ejemplo 3

Para generar 1000 números aleatorios a partir de una distribución de Pareto con alfa=5 y xm=1, podemos usar el siguiente código:

import numpy as np
from scipy.stats import pareto
data = pareto.rvs(5, size=1000, scale=1)
print(np.median(data))

Producción

1.1557246772718455

En este código, se generan 1000 números aleatorios a partir de la distribución de Pareto con el parámetro de tamaño establecido en 3 y el parámetro de escala establecido en 2. Después de esto, se calcula e imprime la mediana de los números generados. Esto da la mediana de los números generados.

Método 2: aquí estamos usando la biblioteca Numpy

Ejemplo 1

Para generar 500 números aleatorios a partir de una distribución de Pareto con alfa=2 y xm=1, podemos usar el siguiente código:

import numpy as np
alpha = 2
xm = 1
size = 500
data = np.random.pareto(alpha, size) + xm
print(np.mean(data))

Producción

1.8557392857152564

Este código genera 500 números aleatorios a partir de una distribución de Pareto definida por la operación numérica y prima. Calcula e imprime el promedio (media) de los números generados.

Ejemplo 2

Para generar 500 números aleatorios a partir de una distribución de Pareto con alfa=4 y xm=2, podemos usar el siguiente código:

import numpy as np
alpha = 4
xm = 2
size = 500
data = np.random.pareto(alpha, size) + xm
print(np.mean(data))

Producción

2.33759634002971

Este código genera 500 números aleatorios a partir de una distribución de Pareto definida por la operación numérica y prima. Calcula e imprime el promedio (media) de los números generados.

Ejemplo 3

Para generar 700 números aleatorios a partir de una distribución de Pareto con alfa=4 y xm=2, podemos usar el siguiente código:

import numpy as np
alpha = 4
xm = 2
size = 700
data = np.random.pareto(alpha, size) + xm
print(np.median(data))

Producción

2.202691921458917

En este código, el parámetro alfa para la distribución de Pareto se establece en 4 y la escala (xm) en 2. Después de esto, se generan 700 números aleatorios que se determinan según la distribución de Pareto. La mediana de los números generados se calcula e imprime. Esto da la mediana de los números generados.

Nota − Todos los programas/códigos anteriores darán resultados diferentes cada vez porque generan números aleatorios en los programas.

Ejemplo 4

En este programa/ejemplo, estamos calculando la función de densidad de probabilidad (PDF) y la función de distribución acumulativa (CDF) de la distribución de Pareto usando los métodos pdf y cdf, respectivamente, y trazamos la PDF y la CDF usando matplotlib para visualizar la distribución.

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import pareto
 
alpha = 2  # define shape parameter
xm = 1 	# define scale parameter
 
# Generate random numbers from a Pareto distribution
random_numbers = pareto.rvs(alpha, scale=xm, size=1000)
 
data = np.linspace(pareto.ppf(0.10, alpha, scale=xm), pareto.ppf(0.90, alpha, scale=xm), 100)
pdf = pareto.pdf(data, alpha, scale=xm) # Calculate the PDF
cdf = pareto.cdf(data, alpha, scale=xm) # Calculate the CDF
 
# Plotting the PDF and CDF
plt.figure(figsize=(10, 4))
plt.subplot(1, 2, 1)
plt.plot(data, pdf, 'r', lw=2, label='PDF')
plt.xlabel('x')
plt.ylabel('Probability Density')
plt.title('Pareto Distribution PDF')
plt.legend()
 
plt.subplot(1, 2, 2)
plt.plot(data, cdf, 'b', lw=2, label='CDF')
plt.xlabel('x')
plt.ylabel('Cumulative Probability')
plt.title('Pareto Distribution CDF')
plt.legend() 
plt.show()

Producción

Conclusión

En conclusión, la distribución de Pareto es una herramienta estadística eficaz para simular eventos con un número limitado de valores extremos y un gran número de valores menores. La distribución de Pareto tiene muchos usos en diversos campos, ya que puede simular la disparidad de ingresos, el tamaño de las ciudades y otros factores económicos. Podemos calcular, ajustar, visualizar y analizar rápidamente la distribución de Pareto y obtener información importante sobre dichos casos mediante el uso de módulos de Python como scipy.stats, Numpy y matplotlib.

Artículos relacionados: