Quasi ogni copula bivariata produrrà una coppia di variate casuali normali con una correlazione diversa da zero (alcune daranno zero ma sono casi speciali). La maggior parte (quasi tutti) produrrà una somma non normale.
In alcune famiglie di copule può essere prodotta qualsiasi correlazione desiderata (popolazione) di Spearman ; la difficoltà sta solo nel trovare la correlazione di Pearson per i margini normali; è fattibile in linea di principio, ma l'algebra può essere abbastanza complicata in generale. [Tuttavia, se si dispone della correlazione di Spearman della popolazione, la correlazione di Pearson - almeno per i margini di coda leggera come il gaussiano - potrebbe non essere troppo lontana da essa in molti casi.]
Tutti tranne i primi due esempi nella trama del cardinale dovrebbero dare somme non normali.
Alcuni esempi: i primi due appartengono entrambi alla stessa famiglia di copule del quinto esempio di distribuzione bivariata del cardinale, il terzo è degenerato.
Esempio 1:
Clayton copula ( )θ=−0.7
Qui la somma ha un picco molto distinto e un sbilanciamento abbastanza fortemente corretto
Esempio 2:
Clayton copula ( )θ=2
Qui la somma è leggermente inclinata. Nel caso non fosse del tutto ovvio per tutti, qui ho capovolto la distribuzione (ovvero abbiamo un istogramma di in viola chiaro) e l'ho sovrapposta in modo da poter vedere l'asimmetria più chiaramente:−(x+y)
Potremmo facilmente scambiare la direzione dell'asimmetria della somma in modo che la correlazione negativa sia andata con l'inclinazione a sinistra e la correlazione positiva con l'inclinazione a destra (ad esempio, prendendo e in ciascuno di i casi precedenti: la correlazione delle nuove variabili sarebbe la stessa di prima, ma la distribuzione della somma verrebbe capovolta di 0, invertendo l'asimmetria).X∗=−XY∗=−Y
D'altra parte, se ne negassimo uno, cambieremmo l'associazione tra la forza dell'asimmetria e il segno della correlazione (ma non la sua direzione).
Vale anche la pena di giocare con alcune copule diverse per avere un'idea di cosa può accadere con la distribuzione bivariata e i margini normali.
I margini gaussiani con una t-copula possono essere sperimentati, senza preoccuparsi molto dei dettagli delle copule (generare da bivariata correlata t, che è facile, quindi trasformarsi in margini uniformi tramite la trasformazione integrale di probabilità, quindi trasformare margini uniformi in gaussiano tramite il cdf normale inverso). Avrà una somma non normale ma simmetrica. Quindi, anche se non hai dei bei pacchetti copula, puoi comunque fare alcune cose abbastanza prontamente (ad esempio se stavo provando a mostrare un esempio in modo rapido in Excel, probabilmente inizierei con t-copula).
-
Esempio 3 : (è più simile a quello che avrei dovuto iniziare inizialmente)
Considera una copula basata su un'uniforme standard , e lasciando per e per . Il risultato ha margini uniformi per e , ma la distribuzione bivariata è degenerata. Trasformando entrambi i margini nella normale otteniamo una distribuzione per simile a questa:UV=U0≤U<12V=32−U12≤U≤1UVX=Φ−1(U),Y=Φ−1(V)X+Y
In questo caso la correlazione tra loro è di circa 0,66.
Quindi, ancora una volta, e sono normali correlate con una somma (in questo caso distintamente) non normale - perché non sono normali bivariati.YXY
[Si potrebbe generare un intervallo di correlazioni lanciando il centro di (in , per in ), per ottenere . Questi avrebbero un picco a 0 quindi uno spazio ai lati, con code normali.]( 1Uc[0,1(12−c,12+c)cV[0,12]V
Qualche codice:
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")))
Il secondo esempio:
#--
# 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))
Codice per il terzo esempio:
#--
# Example 3:
u <- runif(10000)
v <- ifelse(u<.5,u,1.5-u)
x <- qnorm(u)
y <- qnorm(v)
hist(x+y,n=100)