几乎所有的双变量语系都会产生一对具有一些非零相关性的正常随机变量(有些会给出零,但它们是特殊情况)。它们中的大多数(几乎全部)将产生非正常的总和。
在一些copula家族中,可以产生任何期望的(种群)Spearman相关性。困难仅在于找到正常边距的皮尔逊相关性;从原理上讲这是可行的,但代数通常可能相当复杂。[但是,如果您具有总体Spearman相关性,则在许多情况下,至少对于像高斯这样的轻尾边缘,Pearson相关性可能相距太远。]
除基数的前两个示例外,所有示例均应给出非正态和。
一些示例-前两个都与红衣主教的示例双变量分布中的第五个来自同一系系,第三个是简并的。
范例1:
克莱顿copula()θ=−0.7
在这里,总和非常明显地达到峰值,并且非常偏右
范例2:
克莱顿copula()θ=2
在这里,总和略微偏斜。万一这不是所有人都知道的情况,在这里我翻转分布(即,我们用浅紫色显示的直方图)并将其叠加,这样我们可以更清楚地看到不对称性:−(x+y)
我们可以很容易地互换的偏度总和的方向,这样的负相关性与左侧歪斜的正相关关系对了歪斜(例如,通过采取和在每个在上述情况下-新变量的相关性与以前相同,但总和的分布将在0左右翻转,从而改变了偏度。Y ∗ = − YX∗=−XY∗=−Y
另一方面,如果我们只对其中之一取反,则将偏斜强度与相关符号(而不是相关方向)之间的关联更改。
值得一试的是使用一些不同的copula,以了解二元分布和正态余量会发生什么。
可以对带有t-copula的高斯边距进行实验,而不必担心copula的细节(从相关的双变量t生成,这很容易,然后通过概率积分变换将其转换为均匀的边距,然后通过逆法线cdf)。它将具有非正常但对称的和。因此,即使您没有好的copula软件包,您仍然可以相当轻松地做一些事情(例如,如果我试图在Excel中快速显示示例,则可能会从t-copula开始)。
-
示例3:(这更像是我最初应该开始的内容)
考虑一个基于标准统一的系动词,让表示而表示。结果对于和具有均匀的边距,但是双变量分布是退化的。将两个边距都转换为正常的,我们得到的分布如下:V = û 0 ≤ ù < 1UV=U V=30≤U<121V=32−UÙVX=Φ-1(Û),ÿ=Φ-1(V)12≤U≤1UVX=Φ−1(U),Y=Φ−1(V)X+Y
在这种情况下,它们之间的相关性约为0.66。
同样,和是具有(在这种情况下,显然是)非正规和的正态相关的-因为它们不是双变量正态。ÿXY
[可以通过翻转的中心(在中生成的),得到。这些将在0处有一个尖峰,然后在其两侧各有一个间隙,并带有正常的尾巴。](1UÇ[0,1(12−c,12+c)cV[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")))
第二个例子:
#--
# 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))
第三个示例的代码:
#--
# Example 3:
u <- runif(10000)
v <- ifelse(u<.5,u,1.5-u)
x <- qnorm(u)
y <- qnorm(v)
hist(x+y,n=100)