exponenta event banner

johnsrnd

Системные случайные числа Джонсона

Синтаксис

r = johnsrnd(quantiles,m,n)
r = johnsrnd(quantiles)
[r,type] = johnsrnd(...)
[r,type,coefs] = johnsrnd(...)

Описание

r = johnsrnd(quantiles,m,n) возвращает mоколо-n матрица случайных чисел, взятых из распределения в системе Джонсона, которое удовлетворяет спецификации квантиля, заданной quantiles. quantiles является четырехэлементным вектором квантилей для требуемого распределения, которые соответствуют стандартным нормальным квантилям [-1.5 -0.5 0.5 1.5]. Другими словами, вы указываете распределение, из которого нужно получить случайные значения, обозначая квантили, которые соответствуют кумулятивным вероятностям [0,067 0,309 0,691 0,933]. quantiles также может быть 2около-4 матрица, первая строка которой содержит четыре стандартных нормальных квантиля, и вторая строка которой содержит соответствующие квантили требуемого распределения. Стандартные нормальные квантили должны быть расположены равномерно.

Примечание

Поскольку r является случайной выборкой, ее дискретизированные квантили обычно несколько отличаются от определенных квантилей распределения.

r = johnsrnd(quantiles) возвращает скалярное значение.

r = johnsrnd(quantiles,m,n,...) или r = johnsrnd(quantiles,[m,n,...]) возвращает mоколо-nоколо-... массив.

[r,type] = johnsrnd(...) возвращает тип указанного распределения в системе Джонсона. type является 'SN', 'SL', 'SB', или 'SU'. Набор m и n ноль, чтобы определить тип распределения без генерации случайных значений.

Четыре типа распределения в системе Джонсона соответствуют следующим преобразованиям нормальной случайной вариации:

[r,type,coefs] = johnsrnd(...) возвращает коэффициенты coefs преобразования, определяющего распределение. coefs является [gamma, eta, epsilon, lambda]. Если z является стандартной нормальной случайной величиной и h является одним из преобразований, определенных выше, r = lambda*h((z-gamma)/eta)+epsilon является случайной вариацией из типа распределения, соответствующего h.

Примеры

свернуть все

В этом примере показано несколько различных подходов к использованию системы Джонсона гибких распределительных семейств для генерации случайных чисел и подгонки распределения к выборочным данным.

Создание случайных значений с более длинными хвостами, чем стандартная нормаль.

rng default;  % For reproducibility
r = johnsrnd([-1.7 -.5 .5 1.7],1000,1);
figure;
qqplot(r);

Figure contains an axes. The axes with title QQ Plot of Sample Data versus Standard Normal contains 3 objects of type line.

Создание случайных значений, скошенных вправо.

r = johnsrnd([-1.3 -.5 .5 1.7],1000,1);
figure;
qqplot(r);

Figure contains an axes. The axes with title QQ Plot of Sample Data versus Standard Normal contains 3 objects of type line.

Создайте случайные значения, которые хорошо соответствуют некоторым данным выборки в правом хвосте.

load carbig;
qnorm = [.5 1 1.5 2];
q = quantile(Acceleration, normcdf(qnorm));
r = johnsrnd([qnorm;q],1000,1);
[q;quantile(r,normcdf(qnorm))]
ans = 2×4

   16.7000   18.2086   19.5376   21.7263
   16.6986   18.2220   19.9078   22.0918

Определите тип распределения и коэффициенты.

[r,type,coefs] = johnsrnd([qnorm;q],0)
r =

     []
type = 
'SU'
coefs = 1×4

    1.0920    0.5829   18.4382    1.4494

Представлен в R2006a