Почти любая двумерная связка будет производить пару нормальных случайных величин с некоторой ненулевой корреляцией (некоторые будут давать ноль, но это особые случаи). Большинство (почти все) из них будут давать ненормальную сумму.
В некоторых семействах связок может быть получена любая желаемая (популяционная) корреляция Спирмена ; трудность заключается только в нахождении корреляции Пирсона для нормальных полей; в принципе это выполнимо, но в общем случае алгебра может быть довольно сложной. [Однако, если у вас есть корреляция численности Спирмена, корреляция Пирсона - по крайней мере, для полей с легкими хвостами, таких как гауссианы - может быть не слишком далека от нее во многих случаях.]
Все, кроме первых двух примеров в заговоре кардинала, должны давать ненормальные суммы.
Некоторые примеры - первые два принадлежат к тому же семейству копул, что и пятый пример двумерного распределения кардинала, третий - вырожденный.
Пример 1:
θ=−0.7
Здесь сумма очень отчетливо достигает пика и довольно сильно искажена
Пример 2:
θ=2
−(x+y)
X∗=−XY∗=−Y
С другой стороны, если мы просто отрицаем одну из них, мы изменили бы связь между силой асимметрии и знаком корреляции (но не ее направлением).
Стоит также поиграть с несколькими различными копулами, чтобы понять, что может произойти с двумерным распределением и нормальными полями.
Можно поэкспериментировать с гауссовыми полями с t-копулой, не беспокоясь о деталях связок (генерировать из коррелированного двумерного t, что легко, затем преобразовать в однородные поля с помощью интегрального преобразования вероятности, а затем преобразовать однородные поля в гауссовский через обратный нормальный cdf). Он будет иметь ненормальную, но симметричную сумму. Поэтому, даже если у вас нет хороших пакетов copula, вы все равно можете делать некоторые вещи довольно легко (например, если бы я пытался быстро показать пример в Excel, я бы, вероятно, начал с t-copula).
-
Пример 3 : (это больше похоже на то, с чего я должен был начать изначально)
UV=U0≤U<12V=32−U12≤U≤1UVX=Φ−1(U),Y=Φ−1(V)X+Y
В этом случае корреляция между ними составляет около 0,66.
XY
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")))
Второй пример:
#--
# 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)