Генерация трех коррелированных равномерно распределенных случайных величин

15

Предположим, у нас есть

Икс1~UNIF(N,0,1),
Икс2~UNIF(N,0,1),

где - равномерная случайная выборка размером n, иUNIF(N,0,1)

Yзнак равноИкс1,

Zзнак равно0,4Икс1+1-0,4Икс2,

Тогда корреляция между и равна .YZ0,4

Как я могу расширить это до трех переменных: , , ?Икс1Икс2Икс3

user9292
источник
Я отредактировал ваш вопрос, чтобы его было легче читать. Пожалуйста, проверьте все в порядке. Что касается вашего вопроса, в каком смысле вы бы продлили процедуру? Корреляция определена для двух случайных величин, поэтому мне не понятно, что вы имеете в виду.
Октябрь
3
Z не является равномерным, поэтому, если вы пытаетесь обобщить этот результат, не похоже, что вы пытаетесь сгенерировать три коррелированных однородных RV. Вы задаетесь вопросом о том, как вычислить корреляцию между и ? a X 1 + b X 2 + c X 3Икс1aX1+bX2+cX3
MånsT
Предположим, у нас есть , , и , . Тогда что такое и ? X 2 X 3 u n i f ( n , 0 , 1 ) Y = f ( X 2 , X 3 ) Z = f ( X 1 , X 2 , X 3 ) Y ZX1X2X3  unif(n,0,1)Y=f(X2,X3)Z=f(X1,X2,X3)YZ
user9292
6
{Distributions of correlated uniforms}{Copulas}
кардинал
4
Почему не вступать в дискуссию? Если X1 и X2 - одномерные случайные величины, не являются ли они просто однородными на [0,1]?
Майкл Р. Черник

Ответы:

12

Вопрос содержит несколько ошибок, как отмечено в комментариях - как определено в вопросе, Z не является ни однородным, ни имеет указанную корреляцию.

кардинал упоминает связки, и это самый общий способ сделать это. Тем не менее, есть несколько довольно простых способов получить коррелированные формы (которые можно рассматривать как простые ярлыки для различных видов связок).

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

1) Если вы добавите две формы, результат будет треугольным, а не равномерным. Но вы можете использовать cdf результирующей переменной как преобразование, чтобы вернуть результат обратно в форму. Конечно, результат больше не имеет линейной корреляции.

Вот функция R для преобразования симметричного треугольника на (0,2) в стандартную форму

t2u = function(x) ifelse(x<1, x^2, 2-(2-x)^2)/2

Давайте проверим, что это дает форму

u1 = runif(30000)
u2 = runif(30000)
v1 = t2u(u1+u2)

введите описание изображения здесь

И это связано с u1 и u2:

> cor(cbind(u1,u2,v1))
            u1          u2        v1
u1 1.000000000 0.006311667 0.7035149
u2 0.006311667 1.000000000 0.7008528
v1 0.703514895 0.700852805 1.0000000

но не линейно, из-за монотонного преобразования в однородность

введите описание изображения здесь

Используя это в качестве инструмента, мы можем сгенерировать некоторые дополнительные переменные, чтобы получить три одинаковые формы:

u3 = runif(30000)
v2 = t2u(u1+u3)
v3 = t2u(u2+u3)

cor(cbind(v1,v2,v3))
          v1        v2        v3
v1 1.0000000 0.4967572 0.4896972
v2 0.4967572 1.0000000 0.4934746
v3 0.4896972 0.4934746 1.0000000

Все отношения между переменными v выглядят так:

введите описание изображения здесь

-

Второй альтернативой является получение путем взятия смеси . Вместо суммирования униформ, возьмите их с фиксированными вероятностями.

например

z = ifelse(rbinom(30000,1,.7),u1,u2)

cor(cbind(u1,z))
          u1         z
u1 1.0000000 0.7081533
z  0.7081533 1.0000000

введите описание изображения здесь

Который снова может быть использован для создания нескольких коррелированных униформ.

-

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

n1=rnorm(30000)
n2=rnorm(30000)
n3=rnorm(30000)
x=.6*n1+.8*n2
y=.6*n2+.8*n3
z=.6*n3+.8*n1
cor(cbind(x,y,z))

          x         y         z
x 1.0000000 0.4763703 0.4792897
y 0.4763703 1.0000000 0.4769403
z 0.4792897 0.4769403 1.0000000

Итак, теперь мы конвертируем в форму:

w1 = pnorm(x)
w2 = pnorm(y)
w3 = pnorm(z)
cor(cbind(w1,w2,w3))
          w1        w2        w3
w1 1.0000000 0.4606723 0.4623311
w2 0.4606723 1.0000000 0.4620257
w3 0.4623311 0.4620257 1.0000000

введите описание изображения здесь

Одна из приятных вещей в методах 2 и 3 заключается в том, что вы получаете множество вариантов выбора того, насколько коррелированными могут быть вещи (и они не должны быть равносильны, как в примерах здесь).

Конечно, существует множество других подходов, но все они быстрые и простые.

Сложная часть получает именно желаемое соотношение населения; это не так просто, как когда вы просто хотите коррелированных гауссиан. Ответ Quantibex в « Генерации пар случайных чисел, равномерно распределенных и коррелированных, дает подход, который модифицирует мой третий метод, который должен дать информацию о желаемой корреляции населения».

Glen_b - Восстановить Монику
источник
Glen_b. Спасибо, очень красивый и интересный ответ!
user9292
Я не понимаю, откуда 0,6 и 0,8 в вашем третьем подходе.
Мануэль
ρρNя+1-ρ2NJNяNJρNя1-ρ2NJИксYZ
2

Икс1,Икс2ZИкс1 0,40,4YYзнак равно0,4Икс1+1-(0,4)2Икс2

ρсоз23соз0

Это должно помочь вам разложить ряд на его компоненты так же, как вы разложили бы вектор на его ортогональные компоненты.

Дмитрий Рубанович
источник