Если у нас есть дискретный cdf для квантилей типа
quantiles = array([1.000e-04, 1.000e-03, 1.000e-02, 2.000e-02, 3.000e-02, 4.000e-02,
5.000e-02, 6.000e-02, 7.000e-02, 8.000e-02, 9.000e-02, 1.000e-01,
2.000e-01, 3.000e-01, 4.000e-01, 5.000e-01, 6.000e-01, 7.000e-01,
8.000e-01, 9.000e-01, 9.100e-01, 9.200e-01, 9.300e-01, 9.400e-01,
9.500e-01, 9.600e-01, 9.700e-01, 9.800e-01, 9.900e-01, 9.990e-01,
9.999e-01])
Допустимо ли создавать линейную интерполяцию с обратным отображением? То есть из квантилей cdf мы оцениваем значение случайной величины, удовлетворяющей условию cdf p(x < a) = p_a
. Затем мы получаем равномерно распределенные значения от 0 до 1 и генерируем рассматриваемую случайную переменную (представьте себе отображение от оси y до оси x на графике cdf). Будет ли PDF из этого хорошим приближением?
f = interp1d(quantiles, matching_discrete_cdf, kind='linear')
uni_rv = stats.uniform.rvs(loc=percentiles.min(),
scale=percentiles.max() - percentiles.min(), size=nof_items)
pdf = f(uni_rv)