Припустимо, у нас є
де є рівномірною випадковою вибіркою розміру n та
Тоді кореляція між і Z дорівнює 0,4 .
Як я можу поширити це на три змінні: , X 2 , X 3 ?
Припустимо, у нас є
де є рівномірною випадковою вибіркою розміру n та
Тоді кореляція між і Z дорівнює 0,4 .
Як я можу поширити це на три змінні: , X 2 , X 3 ?
Відповіді:
Питання містить декілька помилок, як зазначено в коментарях - як визначено в запитанні, 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 полягає в тому, що ви отримуєте велику різноманітність у виборі того, наскільки можуть бути співвіднесені речі (і вони не повинні бути однорідними, як приклади тут).
Звичайно, існує велика кількість інших підходів, але все це швидко і просто.
Хитра частина - отримання саме бажаного співвідношення населення; це не так просто, як коли ти просто хочеш співвіднести гауссів. Відповідь Квантебекса на “Згеневувати пари випадкових чисел, рівномірно розподілених та співвіднесених, дає підхід, який модифікує мій третій метод тут, який повинен дати бажану кореляцію сукупності.
По-перше, чи вважаєте ви це? незалежні? Якщо вони є, то коефіцієнт кореляції між і не є . Це було б якщо були визначені як .
Простий погляд на визначення формули коефіцієнта кореляції та закону косинусів повинен переконати вас у цьому це між серія, якщо серії розглядаються як вектори, кожна точка даних обробляється як розмірність вектора. Якщо у вас є парний незалежний ряд, це три вектори, всі вони ортогональні один одному (тому що Кути між ними всі 's.
Це повинно розпочати вас на шляху до декомпозиції серії на її компоненти так само, як ви розкладете вектор на його ортогональні компоненти.