ほとんどすべての2変量コピュラは、いくつかの非ゼロの相関を持つ通常のランダム変量のペアを生成します(ゼロを与えるものもありますが、それらは特殊なケースです)。それらのほとんど(ほぼすべて)は、通常ではない合計を生成します。
一部のコピュラ科では、任意の(集団)スピアマン相関を生成できます。困難は、通常のマージンのピアソン相関を見つけることだけです。原理的には実行可能ですが、代数は一般的にかなり複雑かもしれません。[ただし、人口スピアマン相関がある場合、ピアソン相関-少なくともガウスのような軽いテールマージンでは-多くの場合、ピアソン相関はそれほど遠くないかもしれません。]
枢機卿のプロットの最初の2つの例以外はすべて、非正規和を与えるはずです。
いくつかの例-最初の2つは両方とも、枢機卿の例の2変量分布の5番目と同じコピュラファミリーに属し、3番目は縮退です。
例1:
クレイトンコピュラ()θ=−0.7
ここで合計は非常にはっきりとピークに達し、かなり強い右スキューです
例2:
クレイトンコピュラ()θ=2
ここで、和はわずかに左スキューです。万人に明らかでない場合に備えて、ここで分布を反転させ(つまり、ヒストグラムが淡い紫色になっている)、それを重ね合わせて、非対称性をより明確に確認できるようにします。−(x+y)
負の相関は、右スキューを有する(例えば、取って左スキューと正の相関を用いて行っているので、容易に和の歪度の方向を入れ替えることができし、の各々において上記の場合-新しい変数の相関関係は以前と同じですが、合計の分布は0を中心に反転し、歪度が反転します)。X∗=−XY∗=−Y
一方、それらのうちの1つを単に否定する場合は、歪度の強さと相関の符号との関連を変更します(ただし、方向は変更しません)。
2変量分布と正規マージンで何が起こるかを理解するために、いくつかの異なるコピュラをいじってみる価値もあります。
コピュラの詳細をあまり気にすることなく、t-copulaを使用したガウスマージンを試すことができます(相関二変量tから生成するのは簡単です)、確率積分変換を介して均一マージンに変換し、次にを介して均一マージンをガウスに変換します逆正規累積分布関数)。これは、正規ではないが対称的な合計になります。したがって、適切なコピュラパッケージがない場合でも、かなり簡単にいくつかのことを実行できます(たとえば、Excelで簡単に例を表示しようとした場合、おそらくt-copulaから始めます)。
-
例3:(これは私が最初に始めるべきものに似ています)
標準均一に基づいコピュラ検討、及びせるための及びため。結果のとマージンは均一ですが、2変量分布は縮退しています。両方のマージンを通常のに変換すると、次のような分布が得られます。UV=U0≤U<12V=32−U12≤U≤1UVX=Φ−1(U),Y=Φ−1(V)X+Y
この場合、それらの間の相関は約0.66です。
つまり、とは、相関関係のある法線であり、(この場合は明確に)非正規和です-それらは2変量正規ではないためです。XY
【一つは中心反転させることによって相関の範囲を生成することができる中に(のために、で)、を取得します。これらは、0でスパイクがあり、その後、通常のテールでその両側にギャップがあります。]U(12−c,12+c)c[0,12]V
いくつかのコード:
library("copula")
par(mfrow=c(2,2))
# Example 1
U <- rCopula(100000, claytonCopula(-.7))
x <- qnorm(U[,1])
y <- qnorm(U[,2])
cor(x,y)
hist(x,n=100)
hist(y,n=100)
xysum <- rowSums(qnorm(U))
hist(xysum,n=100,main="Histogram of x+y")
plot(x,y,cex=.6,
col=rgb(0,100,0,70,maxColorValue=255),
main="Bivariate distribution")
text(-3,-1.2,"cor = -0.68")
text(-2.5,-2.8,expression(paste("Clayton: ",theta," = -0.7")))
2番目の例:
#--
# Example 2:
U <- rCopula(100000, claytonCopula(2))
x <- qnorm(U[,1])
y <- qnorm(U[,2])
cor(x,y)
hist(x,n=100)
hist(y,n=100)
xysum <- rowSums(qnorm(U))
hist(xysum,n=100,main="Histogram of x+y")
plot(x,y,cex=.6,
col=rgb(0,100,0,70,maxColorValue=255),
main="Bivariate distribution")
text(3,-2.5,"cor = 0.68")
text(2.5,-3.6,expression(paste("Clayton: ",theta," = 2")))
#
par(mfrow=c(1,1))
3番目の例のコード:
#--
# Example 3:
u <- runif(10000)
v <- ifelse(u<.5,u,1.5-u)
x <- qnorm(u)
y <- qnorm(v)
hist(x+y,n=100)