Я заинтересован в поиске метода для генерации коррелированных, ненормальных данных. Таким образом, в идеале это некое распределение, которое принимает в качестве параметра ковариационную (или корреляционную) матрицу и генерирует данные, которые приближаются к ней. Но здесь есть одна загвоздка: метод, который я пытаюсь найти, должен иметь гибкость, чтобы также контролировать его многомерную асимметрию и / или эксцесс.
Я знаком с методом Флейшмана и использованием метода степеней нормальных вариаций, но я полагаю, что большинство из этих расширений разрешают пользователю только определенные комбинации маргинальной асимметрии и эксцесса, оставляя многомерную асимметрию / эксцесс только там. Мне было интересно, есть ли метод, который помогает определять многомерную асимметрию и / или эксцесс, наряду с некоторой структурой корреляции / ковариации.
Около года назад я провел семинар по распространению связок, и я помню, как профессор небрежно упоминал, что с помощью связок виноградной лозы можно генерировать данные, которые, скажем, симметричны по каждому из своих одномерных маргиналов, но совместно искажены и порочны. -versa. Или, что еще важнее, любые нижние поля могут иметь некоторую асимметрию или эксцесс, сохраняя симметричность (или нет) максимальных размеров. Меня поразила идея, что такая гибкость может существовать. Я пытался найти какую-то статью или документ для конференции, в котором описан указанный метод, но у меня ничего не получилось :(. Это не обязательно из-за использования связок, Я открыт для всего, что работает.
Изменить: я добавил код R, чтобы попытаться показать, что я имею в виду. До сих пор я хорошо знаком с определением Mardia многомерной асимметрии и эксцессов. Когда я впервые подошел к своей проблеме, я наивно подумал, что, если бы я использовал симметричную связку (в данном случае гауссову) с перекошенными маргиналами (бета, в этом примере), одномерные тесты на маргиналах дали бы значение, но тест Мардии для многовариантной асимметрии / эксцессов быть незначительным. Я попробовал это, и это не вышло, как я ожидал:
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», а также эмпирических двумерных графиков плотности, я также вижу, что ни один из них не выглядит симметричным вообще. Вот тогда я понял, что это, вероятно, немного сложнее, чем я думал.
Я знаю, что Mardia - не единственное определение многомерной асимметрии / эксцесса, поэтому я не ограничиваю себя поиском метода, который удовлетворяет только определениям Mardia.
Спасибо!