Этот пример показывает, как использовать связку и порядковую корреляцию, чтобы сгенерировать сопоставленные данные от распределений вероятностей, которые не имеют инверсии cdf функцией доступный, такой как Пирсон гибкое семейство распределений.
Сгенерируйте 1 000 случайных чисел от двух различных дистрибутивов Пирсона, с помощью функции pearsrnd
. Первое распределение имеет значения параметров mu равный 0, сигма, равная 1, скос, равный 1, и эксцесс, равный 4. Второе распределение имеет значения параметров mu равный 0, сигма, равная 1, скос, равный 0,75, и эксцесс, равный 3.
rng default % For reproducibility p1 = pearsrnd(0,1,-1,4,1000,1); p2 = pearsrnd(0,1,0.75,3,1000,1);
На данном этапе p1
и p2
являются независимыми выборками от их соответствующих дистрибутивов Пирсона и являются некоррелироваными.
Создайте график scatterhist
визуализировать случайные числа Пирсона.
figure scatterhist(p1,p2)
Гистограммы показывают предельные распределения для p1
и p2
. scatterplot показывает совместное распределение для p1
и p2
. Отсутствие шаблона к scatterplot показывает, что p1
и p2
независимы.
Используйте copularnd
, чтобы сгенерировать 1 000 коррелированых случайных чисел с коэффициентом корреляции, равным –0.8, с помощью Гауссовой связки. Создайте график scatterhist
визуализировать случайные числа, сгенерированные из связки.
u = copularnd('Gaussian',-0.8,1000);
figure
scatterhist(u(:,1),u(:,2))
Гистограммы показывают, что данные в каждом столбце связки имеют крайнее равномерное распределение. scatterplot показывает, что данные в этих двух столбцах негативно сопоставляются.
Используя порядковую корреляцию Копьеносца, преобразуйте две независимых выборки Пирсона в сопоставленные данные.
Используйте функцию sort
, чтобы отсортировать случайные числа связки от самого маленького до самого большого, и возвратить вектор индексов, описывающих перестроенный порядок чисел.
[s1,i1] = sort(u(:,1)); [s2,i2] = sort(u(:,2));
s1
и s2
содержат числа из первых и вторых столбцов связки, u
, отсортированного по порядку от самого маленького до самого большого. i1
и i2
являются индексными векторами, которые описывают перестроенный порядок элементов в s1
и s2
. Например, если первое значение в отсортированном векторном s1
является третьим значением в исходном неотсортированном векторе, то первое значение в индексном векторе i1
равняется 3.
Создайте два вектора нулей, x1
и x2
, которые одного размера как отсортированные векторы связки, s1
и s2
. Сортировка значений в p1
и p2
от самого маленького до самого большого. Поместите значения в x1
и x2
в том же порядке как индексы i1
и i2
, сгенерированный путем сортировки случайных чисел связки.
x1 = zeros(size(s1)); x2 = zeros(size(s2)); x1(i1) = sort(p1); x2(i2) = sort(p2);
Создайте график scatterhist
визуализировать сопоставленные данные Пирсона.
figure scatterhist(x1,x2)
Гистограммы показывают крайние дистрибутивы Пирсона для каждого столбца данных. scatterplot показывает совместное распределение p1
и p2
, и указывает, что данные теперь негативно сопоставляются.
Подтвердите, что коэффициент порядковой корреляции Копьеносца является тем же самым для случайных чисел связки и коррелированых случайных чисел Пирсона.
copula_corr = corr(u,'Type','spearman')
copula_corr = 2×2
1.0000 -0.7858
-0.7858 1.0000
pearson_corr = corr([x1,x2],'Type','spearman')
pearson_corr = 2×2
1.0000 -0.7858
-0.7858 1.0000
Порядковая корреляция Копьеносца является тем же самым для связки и случайных чисел Пирсона.