Включая код, который я написал ниже. По какой-то причине верхняя граница 0,804 по сравнению с начальным распределением чрезмерно сбраживается. Это происходит для обоих распределений, которые я использую.Почему scipy.stats.rv_continuous выбирает верхнюю границу слишком много раз?
Это обычная проблема для rv_continuous или я что-то упускаю?
import matplotlib.pyplot as plt
import scipy.stats as st
class Disk_pdf(st.rv_continuous):
def _pdf(self,x):
return (x*(1-np.exp((x-0.804)/0.2539)))/((1+x)*(x**2+0.0256**2)**0.5)
Disk_cv = Disk_pdf(a=0,b=0.804,name='Disk_pdf')
Disk_dist = Disk_cv.rvs(size = 10000)
plt.figure()
plt.hist(Disk_dist,100)
class Bulge_pdf(st.rv_continuous):
def _pdf(self,x):
return x*np.exp(-2.368*x-6.691*x**2)
Bulge_cv = Bulge_pdf(a=0,b=0.804,name='Bulge_pdf')
Bulge_dist = Bulge_cv.rvs(size = 10000)
plt.figure()
plt.hist(Bulge_dist,100)
Изображения начальных распределений и гистограмм, созданных с использованием rv_continuous, доступны ниже. У меня есть два изображения гистограмм, один из которых увеличен, чтобы показать, что распределение захватывается методом, отличным от верхней границы выборки. На другом изображении показана гистограмма по шкале y, которая показывает, насколько плохая проблема с выборкой.
Brilliant спасибо за помощь. У меня был немного тупой момент, и я думал, что уже включил константу нормализации в PDF. Мой код работает отлично, теперь я включил нормализацию. Спасибо! – nium14