Je veux créer une distribution personnalisée basée sur une loi tronquée de Levy, qui litPython: comment définir des distributions personnalisées?
p(r) = (r + r0)**(-beta)*exp(-r/k)
.
I Il définit de la manière suivante:
import numpy as np
import scipy.stats as st
class LevyPDF(st.rv_continuous):
def _pdf(self,r):
r0 = 100
k = 1500
beta = 1.6
return (r + r0)**(-beta)*np.exp(-r/k)
Supposons que je veux trouver la répartition des distances entre r = 0
et r = 50km
. Puis:
nmin = 0
nmax = 50
my_cv = LevyPDF(a=nmin, b=nmax, name='LevyPDF')
x = np.linspace(nmin, nmax, (nmax-nmin)*2)
Je ne comprends pas pourquoi:
sum(my_cv.cdf(x)) = 2.22
au lieu de 1
.
Alors, comment puis-je définir un histogramme de N = 2000000
distances aléatoires sur la base de la distribution que je définissais?
Pourquoi attendez-vous 'su m (my_cv.cdf (x)) 'être unitaire? C'est la zone sous le PDF qui est unitaire, votre calcul n'est pas lié à la zone de distribution. – jlandercy
Je voudrais que la somme de la fréquence relative serait '1' – emax
pdf doit avoir une aire de 1, mais leur magnitude peut dépasser 1. Un exemple de ceci est une distribution de triangle sur la gamme [0,1]. Puisque l'aire d'un triangle est 'base * height/2', avec une base de longueur 1, la hauteur doit être 2 au mode. Une somme non pondérée de valeurs pdf échantillonnées dépasserait clairement 1. – pjs