exponenta event banner

Создание коррелированных данных с помощью ранговой корреляции

В этом примере показано, как использовать копулу и ранговую корреляцию для генерации коррелированных данных из вероятностных распределений, которые не имеют доступной обратной cdf-функции, такой как семейство гибких распределений Пирсона.

Шаг 1. Создание случайных чисел Пирсона.

Создайте 1000 случайных чисел из двух различных распределений Пирсона, используя 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 являются независимыми выборками из их соответствующих распределений Пирсона и являются некоррелированными.

Шаг 2. Постройте график случайных чисел Пирсона.

Создать scatterhist график для визуализации случайных чисел Пирсона.

figure
scatterhist(p1,p2)

Figure contains an axes. The axes contains an object of type line.

Гистограммы показывают предельные распределения для p1 и p2. Точечная диаграмма показывает распределение соединения для p1 и p2. Отсутствие узора для точечной диаграммы показывает, что p1 и p2 независимы.

Шаг 3. Генерация случайных чисел с помощью гауссовой копулы.

Использовать copularnd для генерации 1000 коррелированных случайных чисел с коэффициентом корреляции, равным -0,8, используя гауссову копулу. Создать scatterhist график для визуализации случайных чисел, сгенерированных из копулы.

u = copularnd('Gaussian',-0.8,1000);
figure
scatterhist(u(:,1),u(:,2))

Figure contains an axes. The axes contains an object of type line.

Гистограммы показывают, что данные в каждом столбце копулы имеют маргинальное равномерное распределение. Скеттерплот показывает, что данные в двух столбцах отрицательно коррелированы.

Шаг 4. Сортируйте случайные числа.

Используя ранговую корреляцию Спирмена, преобразуйте две независимые выборки Пирсона в коррелированные данные.

Используйте sort функция для сортировки совокупных случайных чисел от наименьшего к наибольшему и для возврата вектора индексов, описывающих переупорядоченный порядок чисел.

[s1,i1] = sort(u(:,1));
[s2,i2] = sort(u(:,2));

s1 и s2 содержат числа из первого и второго столбцов копулы, u, отсортирован по порядку от наименьшего до наибольшего. i1 и i2 - индексные векторы, которые описывают переупорядоченный порядок элементов в s1 и s2. Например, если первое значение в отсортированном векторе s1 третье значение в исходном несортированном векторе, затем первое значение в индексном векторе i1 равно 3.

Шаг 5. Преобразование выборок Пирсона с использованием ранговой корреляции Спирмена.

Создайте два вектора нулей, 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);

Шаг 6. Постройте график коррелированных случайных чисел Пирсона.

Создать scatterhist график для визуализации коррелированных данных Пирсона.

figure
scatterhist(x1,x2)

Figure contains an axes. The axes contains an object of type line.

Гистограммы показывают предельные распределения Пирсона для каждого столбца данных. Точечная диаграмма показывает совместное распределение p1 и p2и указывает, что данные теперь отрицательно коррелированы.

Шаг 7. Подтвердите значения коэффициента ранговой корреляции Спирмена.

Подтвердите, что коэффициент ранговой корреляции Спирмана одинаков для случайных чисел копулы и коррелированных случайных чисел Пирсона.

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

Ранговая корреляция Спирмена одинакова для копулы и случайных чисел Пирсона.

См. также

| |

Связанные темы