Я хотел бы генерировать пары случайных чисел с определенной корреляцией. Однако обычный подход использования линейной комбинации двух нормальных переменных здесь недопустим, поскольку линейная комбинация равномерных переменных больше не является равномерно распределенной переменной. Мне нужно, чтобы две переменные были одинаковыми.
Любая идея о том, как генерировать пары однородных переменных с заданной корреляцией?
correlation
random-generation
uniform
Onturenio
источник
источник
Ответы:
Я не знаю универсального метода для генерации коррелированных случайных величин с любым заданным предельным распределением. Итак, я предложу специальный метод для генерации пар равномерно распределенных случайных величин с заданной (Pearson) корреляцией. Без ограничения общности я предполагаю, что желаемое предельное распределение является стандартным равномерным (т. Е. Поддержка[0,1] ).
Предлагаемый подход основан на следующем:U1 U2 F1 F2 Fi(Ui)=Ui i=1,2
Таким образом, коэффициенты корреляции Спирмена и Пирсона равны (примерные версии могут отличаться).
a) Для стандартных равномерных случайных величин и U 2 с соответствующими функциями распределения F 1 и F 2 имеем F i ( U i ) = U i , для i = 1 , 2 . Таким образом, по определению число Спирмена равно ρ S ( U 1 , U 2 ) = c o r r ( F
б) Если являются случайными величинами с непрерывными полями и гауссовой копулой с коэффициентом корреляции (Пирсона) ρ , то число Спирмена равно ρ S ( X 1 , X 2 ) = 6X1,X2 ρ
Это позволяет легко генерировать случайные величины, которые имеют желаемое значение ро Спирмена.
Подход заключается в том, чтобы генерировать данные из гауссовой связки с подходящим коэффициентом корреляции , так что относительное число Спирмена соответствует желаемой корреляции для однородных случайных величин.ρ
Алгоритм моделированияr n
Пусть обозначает желаемый уровень корреляции, а n - количество генерируемых пар. Алгоритм:
Примерr=0.6 n=500
Следующий код является примером реализации этого алгоритма с использованием R с целевой корреляцией и n = 500 пар.
На рисунке ниже, диагональные графики показывают гистограммы переменных и U 2 , а недиагональные графики показывают графики рассеяния U 1 и U 2 .U1 U2 U1 U2
По построению случайные величины имеют одинаковые поля и коэффициент корреляции (близкий к) . Но из-за эффекта выборки коэффициент корреляции смоделированных данных не точно равен r .r r
Обратите внимание, что
gen.gauss.cop
функция должна работать с более чем двумя переменными, просто указав большую корреляционную матрицу.источник
gen.gauss.cop
функция будет работать для более чем двух переменных с (тривиальной) настройкой. Если вам не нравится дополнение или вы хотите поставить его по-другому, пожалуйста, отмените или измените его по мере необходимости.источник
If you want pairs with negative correlation, use(u1,u2)=I(w1,1−w1)+(1−I)(w2,w3) , and the correlation will be −p .
источник