Этот пример показывает, как сгенерировать данные с помощью систем Пирсона и Джонсона дистрибутивов.
Как описано в Работе с Распределениями вероятностей, выбирая соответствующее параметрическое семейство распределений, чтобы смоделировать ваши данные может быть на основе априорного или по опыту знания производящего процесса данных, но выбор является часто трудным. Системы Пирсона и Джонсона могут сделать такой ненужный выбор. Каждая система является гибким параметрическим семейством распределений, которое включает широкий спектр форм распределения, и часто возможно найти распределение в одной из этих двух систем, которая предоставляет хорошее соответствие вашим данным.
Ввод данных
Следующие параметры задают каждого члена систем Пирсона и Джонсона.
Эти статистические данные могут также быть вычислены с функцией moment
. Система Джонсона, в то время как на основе этих четырех параметров, более естественно описана с помощью квантилей, оцененных функцией quantile
.
pearsrnd
и функции johnsrnd
берут входные параметры, задающие распределение (параметры или квантили, соответственно), и возвращают тип и коэффициенты распределения в соответствующей системе. Обе функции также генерируют случайные числа от заданного распределения.
Как пример, загрузите данные в carbig.mat
, который включает переменную MPG
, содержащую измерения расхода бензина для каждого автомобиля.
load carbig
MPG = MPG(~isnan(MPG));
histogram(MPG,15)
Следующие два раздела моделируют распределение с членами систем Пирсона и Джонсона, соответственно.
Статистик Карл Пирсон создал систему или семейство, дистрибутивов, который включает уникальное распределение, соответствующее каждой допустимой комбинации среднего значения, стандартного отклонения, скошенности и эксцесса. Если вы вычисляете демонстрационные значения в течение каждого из этих моментов от данных, легко найти распределение в системе Пирсона, которая совпадает с этими четырьмя моментами и сгенерировать случайную выборку.
Система Пирсона встраивает семь основных типов распределения вместе в одной параметрической среде. Это включает общие дистрибутивы такой как нормальное и дистрибутивы, простые преобразования стандартных дистрибутивов, такие как переключенное и масштабированное бета распределение и обратное гамма распределение, и одно распределение — IV Типа — который не является простым преобразованием никакого стандартного распределения.
Для данного набора моментов существуют дистрибутивы, которые не находятся в системе, которые также имеют те те же первые четыре момента, и распределение в системе Пирсона не может быть хорошим соответствием к вашим данным, особенно если данные многомодальны. Но система действительно покрывает широкий спектр форм распределения, и включая симметричные и включая скошенные дистрибутивы.
Чтобы сгенерировать выборку от, распределение Пирсона, которое тесно совпадает с данными MPG
, просто вычислите четыре демонстрационных момента и обработайте тех как параметры распределения.
moments = {mean(MPG),std(MPG),skewness(MPG),kurtosis(MPG)}; rng('default') % For reproducibility [r,type] = pearsrnd(moments{:},10000,1);
Дополнительный второй вывод от pearsrnd
указывает, какой тип распределения в системе Пирсона совпадает с комбинацией моментов.
type
type = 1
В этом случае pearsrnd
решил, что данные лучше всего описаны с Типом I распределение Пирсона, которое является переключенным, масштабированным бета распределением.
Проверьте, что выборка напоминает исходные данные путем накладывания эмпирических кумулятивных функций распределения.
ecdf(MPG); [Fi,xi] = ecdf(r); hold on; stairs(xi,Fi,'r'); hold off
Статистик Норман Джонсон создал различную систему дистрибутивов, которая также включает уникальное распределение для каждой допустимой комбинации среднего значения, стандартного отклонения, скошенности и эксцесса. Однако, поскольку более естественно описать дистрибутивы в системе Джонсона с помощью квантилей, работание с этой системой отличается, чем работа с системой Пирсона.
Система Джонсона основана на трех возможных преобразованиях нормальной случайной переменной плюс единичное преобразование. Три нетривиальных случая известны как SL
, SU
и SB
, соответствуя экспоненциальным, логистическим преобразованиям, и гиперболического синуса. Все три могут быть записаны как
где стандартная нормальная случайная переменная, преобразование, и , , , и масштабные коэффициенты и параметры положения. Четвертый случай, SN
, является единичным преобразованием.
Чтобы сгенерировать выборку от, распределение Джонсона, которое совпадает с данными MPG
, сначала задайте эти четыре квантиля, к которым должны быть преобразованы четыре равномерно расположенных с интервалами стандартных нормальных квантиля-1.5,-0.5, 0.5, и 1.5. Таким образом, вы вычисляете демонстрационные квантили данных для интегральных вероятностей 0,067, 0.309, 0.691, и 0.933.
probs = normcdf([-1.5 -0.5 0.5 1.5])
probs = 1×4
0.0668 0.3085 0.6915 0.9332
quantiles = quantile(MPG,probs)
quantiles = 1×4
13.0000 18.0000 27.2000 36.0000
Затем обработайте те квантили как параметры распределения.
[r1,type] = johnsrnd(quantiles,10000,1);
Дополнительный второй вывод от johnsrnd
указывает, какой тип распределения в системе Джонсона совпадает с квантилями.
type
type = 'SB'
Можно проверить, что выборка напоминает исходные данные путем накладывания эмпирических кумулятивных функций распределения.
ecdf(MPG); [Fi,xi] = ecdf(r1); hold on; stairs(xi,Fi,'r'); hold off
В некоторых приложениях может быть важно совпадать с квантилями лучше в некоторых областях данных, чем в других. Чтобы сделать это, задайте четыре равномерно расположенных с интервалами стандартных нормальных квантиля, в которых вы хотите совпадать с данными, вместо значения по умолчанию-1.5,-0.5, 0.5, и 1.5. Например, вы можете заботиться больше о соответствии с данными в правом хвосте, чем в левых, и таким образом, вы задаете стандартные нормальные квантили, который подчеркивает правый хвост.
qnorm = [-.5 .25 1 1.75]; probs = normcdf(qnorm); qemp = quantile(MPG,probs); r2 = johnsrnd([qnorm; qemp],10000,1);
Однако, в то время как новая выборка совпадает с исходными данными лучше в правом хвосте, это соответствует намного хуже в левом хвосте.
[Fj,xj] = ecdf(r2); hold on; stairs(xj,Fj,'g'); hold off