Мені цікаво дізнатись спосіб генерації корельованих, ненормальних даних. Тому в ідеалі якийсь розподіл, який приймає коваріаційну (або кореляційну) матрицю як параметр і генерує дані, які її наближають. Але ось ось у чому: метод, який я намагаюся знайти, повинен мати гнучкість також контролювати його багатоваріантність косості та / або куртозу.
Мені знайомий метод Флейшмана та використання методу потужності нормальних змінних, але я вважаю, що більшість цих розширень дозволяють користувачеві лише певних комбінацій граничної косості та куртозу, залишаючи багатоваріантну косисть / куртоз просто там. Мені було цікаво, чи існує метод, який допомагає визначити багатоваріантність косості та / або куртозу, поряд із деякою структурою кореляції / коваріації.
Близько року тому я взяв семінар з розподілу копули, і я пам’ятаю, що професор випадково зазначив, що завдяки використанню копул виноградної лози можна було генерувати дані, які, скажімо, симетричні у кожному з його 1-D маргіналів, але спільно перекошені та пороки -верса. Або, ще більше, що будь-які нижньомірні межі можуть мати деяку косисть або куртоз, зберігаючи найвищі розміри симетричними (чи ні). Мене здивувала думка, що така гнучкість може існувати. Я намагався знайти якийсь статтю чи конференцію, в якій описується зазначений метод, але я був невдалий :(. Це не повинно бути через використання копул, Я відкритий до всього, що працює.
Редагувати: Я додав код R, щоб спробувати показати, що я маю на увазі. Поки я лише добре знайомий з визначенням Мардії щодо багатоваріантної косості та куртозу. Коли я вперше підійшов до своєї проблеми, я наївно подумав, що якби я використовував симетричну копулу (в даному випадку Гаусса) із перекошеними маргіналами (бета, у цьому прикладі), одновимірні тести на маргіналах отримають значення, але тест Мардії на мультиварітну косоту / куртоз бути несуттєвими. Я спробував це, і не вийшло так, як я очікував:
library(copula)
library(psych)
set.seed(101)
cop1 <- {mvdc(normalCopula(c(0.5), dim=2, dispstr="un"),
c("beta", "beta"),list(list(shape1=0.5, shape2=5),
list(shape1=0.5, shape2=5)))}
Q1 <- rmvdc(cop1, 1000)
x1 <- Q1[,1]
y1 <- Q1[,2]
cop2 <- {mvdc(normalCopula(c(0.5), dim=2, dispstr="un"),
c("norm", "norm"),list(list(mean=0, sd=1),
list(mean = 0, sd=1)))}
Q2 <- rmvdc(cop2, 1000)
x2 <- Q2[,1]
y2 <- Q2[,2]
mardia(Q1)
Call: mardia(x = Q1)
Mardia tests of multivariate skew and kurtosis
Use describe(x) the to get univariate tests
n.obs = 1000 num.vars = 2
b1p = 10.33 skew = 1720.98 with probability = 0
small sample skew = 1729.6 with probability = 0
b2p = 22.59 kurtosis = 57.68 with probability = 0
mardia(Q2)
Call: mardia(x = Q2)
Mardia tests of multivariate skew and kurtosis
Use describe(x) the to get univariate tests
n.obs = 1000 num.vars = 2
b1p = 0.01 skew = 0.92 with probability = 0.92
small sample skew = 0.92 with probability = 0.92
b2p = 7.8 kurtosis = -0.79 with probability = 0.43
Оглядаючи контури 'cop1' VS 'cop2', а також емпіричні двовимірні графіки щільності, я також можу побачити, що жоден з них зовсім не виглядає симетричним. Ось тоді я зрозумів, що це, мабуть, трохи складніше, ніж я думав.
Я знаю, що Мардія - не єдине визначення багатоваріантної косості / куртозу, тому я не обмежую себе пошуком методу, який задовольняє лише визначення Мардії.
Дякую!