相関する非正規データを生成する方法を見つけることに興味があります。理想的には、共分散(または相関)行列をパラメーターとして受け取り、それに近似するデータを生成するある種の分布です。しかし、ここに問題があります。私が見つけようとしている方法には、その多変量歪度や尖度も制御できる柔軟性が必要です。
Fleishmanの方法と通常の変量のべき乗法の使用はおなじみですが、これらの拡張機能のほとんどは、ユーザーが限界歪度と尖度の特定の組み合わせのみを許可し、多変量歪度/尖度をそのまま残していると思います。私が疑問に思ったのは、相関/共分散構造とともに、多変量歪度および/または尖度を指定するのに役立つ方法があるかどうかです。
約1年前、コピュラの分布に関するセミナーを受講しましたが、教授がぶどうのコピュラを使用することで、たとえば1次元の周辺それぞれで対称的であるが、共同で歪曲されたデータを生成できることをさりげなく言及したことを覚えています-その逆。または、さらに低い次元の余白には、最大の次元を対称(または非対称)に保ちながら、ゆがみや尖度を持たせることができます。私はそのような柔軟性が存在する可能性があるというアイデアに驚いていました。私は、前述の方法を説明する何らかの記事または会議論文を見つけようとしましたが、失敗しました:(。コピュラを使用する必要はありません。うまくいくものなら何でもオープンです。
編集:私が意味することを示すために、いくつかの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'の等高線と経験的な2変量密度プロットを調べると、どれも対称に見えないことがわかります。それは、これがおそらく私が思っていたよりも少し複雑だと気づいたときです。
多変量歪度/尖度の定義はマルディアだけではないことを知っているので、マルディアの定義のみを満たす方法を見つけることに限定しているわけではありません。
ありがとうございました!