我对寻找一种生成相关的非正常数据的方法感兴趣。因此,理想情况下,某种类型的分布将协方差(或相关)矩阵作为参数,并生成近似该分布的数据。但是这里有个要点:我试图找到的方法应该具有灵活性,也可以控制其多元偏度和/或峰度。
我熟悉Fleishman的方法和正态变量的幂方法的使用,但是我相信大多数扩展只允许用户使用边际偏度和峰度的某些组合,而将多元偏度/峰度留在那儿。我想知道的是,是否有一种方法可以帮助指定多元偏度和/或峰度,以及一些相关性/协方差结构。
大约一年前,我参加了一次关于系蝇分布的研讨会,我记得这位教授随便提到了通过使用葡萄系蝇,一个人可以产生的数据在其一维边缘中的每一个都对称,但共同偏斜,反之亦然。 -反之亦然。或者,甚至更进一步,任何维数较低的边距在保持最大维数对称(或不对称)的同时,可能会有些偏斜或峰度。我一直对这种灵活性可能存在的想法感到惊讶,我一直试图找到某种描述上述方法的文章或会议论文,但我没有成功:(。不必通过使用copulas,我愿意接受任何可行的方法。
编辑:我添加了一些R代码,以尝试显示我的意思。到目前为止,我只熟悉Mardia对多元偏斜和峰度的定义。当我第一次解决问题时,我天真地想到如果我使用具有偏斜边线(在本例中为beta)的对称copula(在本例中为高斯),则对边沿的单变量检验会产生显着性,但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”和“ cop2”的等高线以及经验性双变量密度图时,我还可以看到它们看起来都不对称。那时我意识到这可能比我想的要复杂一些。
我知道Mardia并不是多元偏度/峰度的唯一定义,因此我并不仅限于寻找一种满足Mardia定义的方法。
谢谢!