Construire une fonction de répartition et la tracer avec python

Published: 20 février 2018

DMCA.com Protection Status

Pour créer et tracer une fonction de repartition avec python, on peut utiliser la fonction numpy cumsum, exemple:

Construire une fonction de répartition et la tracer avec python Construire une fonction de répartition et la tracer avec python
Construire une fonction de répartition et la tracer avec python

from random import gauss

import matplotlib.pyplot as plt
import numpy as np

N = 10000

x = np.random.normal(size = N)

#----------------------------------------------------------------------------------------#

hist, bin_edges = np.histogram(x, bins=50, normed=True)

plt.bar(bin_edges[:-1], hist, width=bin_edges[1]-bin_edges[0], color='red', alpha=0.5)

plt.grid()
plt.title('Normal distribution \n with python')
plt.xlim(-4,4)

plt.savefig('cumulative_distribution_01.png', bbox_inches='tight')
plt.show()
plt.close()

#----------------------------------------------------------------------------------------#
# method 1 with numpy cumsum

dx = bin_edges[1] - bin_edges[0]

cumulative = np.cumsum(hist)*dx

plt.plot(bin_edges[:-1], cumulative, c='blue')

plt.grid()
plt.title('Cumulative distribution \n with numpy cumsum')
plt.xlim(-4,4)
plt.ylim(0,1)

plt.savefig('cumulative_distribution_cumsum.png', bbox_inches='tight')
plt.show()
plt.close()

On peut utiliser aussi la fonction numpy sort:

Construire une fonction de répartition et la tracer avec python size:50
Construire une fonction de répartition et la tracer avec python size:50

#----------------------------------------------------------------------------------------#
# method 2 with sort

X2 = np.sort(x)
F2 = np.array(range(N))/float(N)

plt.plot(X2, F2)

plt.grid()
plt.title('Cumulative distribution \n with numpy sort')
plt.xlim(-4,4)
plt.ylim(0,1)

plt.savefig('cumulative_distribution_sort.png', bbox_inches='tight')
plt.show()
plt.close()

Références

Image

of