Я заинтересован в поиске метода для генерации коррелированных, ненормальных данных. Таким образом, в идеале это некое распределение, которое принимает в качестве параметра ковариационную (или корреляционную) матрицу и генерирует данные, которые приближаются к ней. Но здесь есть одна загвоздка: метод, который я пытаюсь найти, должен иметь гибкость, чтобы также контролировать его многомерную асимметрию и / или эксцесс.
Я знаком с методом Флейшмана и использованием метода степеней нормальных вариаций, но я полагаю, что большинство из этих расширений разрешают пользователю только определенные комбинации маргинальной асимметрии и эксцесса, оставляя многомерную асимметрию / эксцесс только там. Мне было интересно, есть ли метод, который помогает определять многомерную асимметрию и / или эксцесс, наряду с некоторой структурой корреляции / ковариации.
Около года назад я провел семинар по распространению связок, и я помню, как профессор небрежно упоминал, что с помощью связок виноградной лозы можно генерировать данные, которые, скажем, симметричны по каждому из своих одномерных маргиналов, но совместно искажены и порочны. -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.
Спасибо!
Ответы:
После долгих поисков, прыгая вокруг интернет - форумы, консультации с преподавателями и делать много обзора литературы, я пришел к выводу , что , вероятно , единственный способ решения этой проблемы лежит через использование связках лозы действительно. Это дает вам некоторый контроль над попарной асимметрией и эксцессом (или любыми более высокими моментами) - для случайного вектора с p-вариацией и свободой для указания пары связок p-1 и оставшихся p * (p-1) / 2 - ( р-1) размеры могут быть указаны в какой-то условной связке.
Я приветствую другие методы, с которыми люди могли столкнуться, но, по крайней мере, я собираюсь оставить этот указатель на ответ, потому что я, по жизни, не могу найти другие способы решения этой проблемы.
источник
Вы могли бы решить эту проблему, изменив алгоритм Ruscio и Kaczetow (2008). В их статье представлен итерационный алгоритм (с кодом R), который минимизирует разницу между фактической и предполагаемой формами полей. Вы можете изменить его так, чтобы он нацеливался на многовариантные (а не маргинальные) моменты.
Ruscio, J. & Kaczetow, W. (2008). Моделирование многомерных ненормальных данных с использованием итерационного алгоритма. Многомерное поведенческое исследование, 43 (3), 355‐381. DOI: 10,1080 / 00273170802285693
источник
Возможно, вы захотите проверить обобщенное эллиптическое распределение , которое допускает «классическую» матрицу формы с гибкостью для других функций.
источник
Я придумал простой метод для этого, который не включает коплас и другие сложные конструкции. Я боюсь, что у меня нет никакой официальной ссылки, хотя метод, кажется, очень эффективен.
Идея проста. 1. Нарисуйте любое количество переменных из совместного нормального распределения. 2. Примените одномерный нормальный CDF переменных для получения вероятностей для каждой переменной. 3. Наконец, примените обратный CDF любого дистрибутива для имитации ничьих из этого дистрибутива.
Я придумал этот метод в 2012 году и продемонстрировал использование Stata . Я также написал недавний пост , показывающий один и тот же метод с использованием R .
источник
Я полагаю, что метод, представленный в следующих статьях, позволяет генерировать случайные многовариантные значения с любой (возможной) комбинацией среднего значения, дисперсии, асимметрии и эксцесса.
Отказ от ответственности: я не один из авторов.
источник