Prawie każda dwuwymiarowa kopuła wytworzy parę normalnych losowych zmiennych z pewną niezerową korelacją (niektóre dadzą zero, ale są to przypadki szczególne). Większość (prawie wszystkie) z nich wygeneruje niestandardową sumę.
W niektórych rodzinach kopul można uzyskać dowolną pożądaną (populacyjną) korelację Spearmana ; trudność polega jedynie na znalezieniu korelacji Pearsona dla normalnych marginesów; jest to w zasadzie wykonalne, ale algebra może być dość skomplikowana. [Jeśli jednak masz populacyjną korelację Spearmana, korelacja Pearsona - przynajmniej w przypadku lekkich marginesów ogonowych, takich jak gaussowski - w wielu przypadkach może nie być zbyt daleko.]
Wszystkie oprócz dwóch pierwszych przykładów na wykresie kardynała powinny dawać sumy nienormalne.
Kilka przykładów - pierwsze dwa pochodzą z tej samej rodziny kopul, co piąty przykład dwuwymiarowych rozkładów kardynałów, trzeci jest zdegenerowany.
Przykład 1:
θ=−0.7
Tutaj suma jest bardzo wyraźnie pikowana i dość silnie pochylona
Przykład 2:
θ=2
−(x+y)
X∗=−XY∗=−Y
Z drugiej strony, jeśli po prostu zanegujemy jeden z nich, zmienilibyśmy związek między siłą wypaczenia ze znakiem korelacji (ale nie jego kierunkiem).
Warto również pobawić się kilkoma różnymi kopulami, aby zorientować się, co może się stać z rozkładem dwuwymiarowym i normalnymi marginesami.
Marginesy gaussowskie z kopułą t można eksperymentować, nie martwiąc się zbytnio o szczegóły kopuł (generuj z skorelowanej dwuwymiarowej t, co jest łatwe, a następnie przekształcaj w jednolite marginesy za pomocą transformacji całkowej prawdopodobieństwa, a następnie przekształcaj jednolite marginesy w gaussowską za pomocą odwrotny normalny cdf). Będzie miała nietypową, ale symetryczną sumę. Więc nawet jeśli nie masz ładnych pakietów copula, nadal możesz robić pewne rzeczy dość łatwo (np. Gdybym próbował szybko pokazać przykład w Excelu, prawdopodobnie zacznę od t-copula).
-
Przykład 3 : (bardziej przypomina to, od czego powinienem zacząć)
UV=U0≤U<12V=32−U12≤U≤1UVX=Φ−1(U),Y=Φ−1(V)X+Y
W tym przypadku korelacja między nimi wynosi około 0,66.
XY
U(12−c,12+c)c[0,12]V
Jakiś kod:
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")))
Drugi przykład:
#--
# 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))
Kod dla trzeciego przykładu:
#--
# Example 3:
u <- runif(10000)
v <- ifelse(u<.5,u,1.5-u)
x <- qnorm(u)
y <- qnorm(v)
hist(x+y,n=100)