Fast jede bivariate Kopula erzeugt ein Paar normaler Zufallsvariablen mit einer Korrelation ungleich Null (einige geben Null, aber es handelt sich um Sonderfälle). Die meisten (fast alle) von ihnen produzieren eine nicht normale Summe.
In einigen Kopula-Familien kann jede gewünschte (Populations-) Spearman- Korrelation erzeugt werden; Die Schwierigkeit besteht nur darin, die Pearson-Korrelation für normale Ränder zu finden. Es ist im Prinzip machbar, aber die Algebra kann im Allgemeinen ziemlich kompliziert sein. [Wenn Sie jedoch die Populations-Spearman-Korrelation haben, ist die Pearson-Korrelation - zumindest für Ränder mit leichtem Schwanz wie die Gaußsche - in vielen Fällen möglicherweise nicht zu weit davon entfernt.]
Alle außer den ersten beiden Beispielen in der Darstellung des Kardinals sollten nicht normale Summen ergeben.
Einige Beispiele - die ersten beiden stammen beide aus derselben Kopula-Familie wie die fünfte der bivariaten Verteilungen des Kardinals, die dritte ist entartet.
Beispiel 1:
Clayton Copula ( )θ=−0.7
Hier ist die Summe sehr deutlich spitz und ziemlich stark nach rechts geneigt
Beispiel 2:
Clayton Copula ( )θ=2
Hier ist die Summe leicht schief. Nur für den Fall, dass dies nicht für alle offensichtlich ist, habe ich hier die Verteilung umgedreht (dh wir haben ein Histogramm von in hellviolett) und es überlagert, damit wir die Asymmetrie klarer sehen können:−(x+y)
Wir könnten die Richtung der Schiefe der Summe leicht austauschen , so dass die negative Korrelation ging mit der linken Schrägstellung und positiver Korrelation mit dem richtigen Schrägstellung (beispielsweise , indem man und in jedem die obigen Fälle - die Korrelation der neuen Variablen wäre dieselbe wie zuvor, aber die Verteilung der Summe würde um 0 gedreht, was die Schiefe umkehrt).X∗=−XY∗=−Y
Wenn wir dagegen nur einen von ihnen negieren, ändern wir die Assoziation zwischen der Stärke der Schiefe und dem Vorzeichen der Korrelation (aber nicht der Richtung).
Es lohnt sich auch, mit ein paar verschiedenen Copulas herumzuspielen, um ein Gefühl dafür zu bekommen, was mit der bivariaten Verteilung und den normalen Rändern passieren kann.
Die Gaußschen Ränder mit einer t-Copula können experimentiert werden, ohne sich um Details von Copulas zu kümmern (aus korreliertem bivariaten t erzeugen, was einfach ist, dann über die Wahrscheinlichkeitsintegraltransformation in einheitliche Ränder transformieren und dann über die Gaußsche Ränder in Gaußsche transformieren inverses normales cdf). Es wird eine nicht normale, aber symmetrische Summe haben. Selbst wenn Sie keine netten Copula-Pakete haben, können Sie einige Dinge ziemlich schnell erledigen (z. B. wenn ich versuchen würde, ein Beispiel schnell in Excel zu zeigen, würde ich wahrscheinlich mit der T-Copula beginnen).
- -
Beispiel 3 : (Dies ist eher das, womit ich anfangs hätte beginnen sollen)
Betrachten Sie eine Kopula, die auf einer einheitlichen Standard- basiert , und lassen Sie für und für . Das Ergebnis hat einheitliche Ränder für und , aber die bivariate Verteilung ist entartet. Wenn wir beide Ränder in normales transformieren , erhalten wir eine Verteilung für , die folgendermaßen aussieht:UV=U0≤U<12V=32−U12≤U≤1UVX=Φ−1(U),Y=Φ−1(V)X+Y
In diesem Fall beträgt die Korrelation zwischen ihnen etwa 0,66.
Also noch einmal, und sind zueinander in Beziehung stehenden Normalen mit einem (in diesem Fall deutlich) nicht-normale Summe - weil sie normale nicht bivariate sind.Y.XY
[Man könnte einen Bereich von Korrelationen erzeugen, indem man das Zentrum von (in für in ), um zu erhalten . Diese hätten eine Spitze bei 0 und dann eine Lücke zu beiden Seiten mit normalen Schwänzen.]( 1Uc[0,1(12−c,12+c)cV.[0,12]V
Etwas Code:
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")))
Das zweite Beispiel:
#--
# 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))
Code für das dritte Beispiel:
#--
# Example 3:
u <- runif(10000)
v <- ifelse(u<.5,u,1.5-u)
x <- qnorm(u)
y <- qnorm(v)
hist(x+y,n=100)