3
$\begingroup$

I would like to use normal copulas to set the dependence of N random variables. That is, I want the correlation $\rho$ to be equal between all variables. I am doing this with the copula package in R. This seems straightforward enough when $\rho$ is positive or when N = 1, however I get odd results when $\rho$ is negative and N > 1:

library(psych)
library(copula)

N = 6  #The number of random variables or dimensions 
m = ((N-1)*N)/2 #Number of correlated pairs 
correlations = rep(-.95, m) #Set all correlations to be the same value, in this case -0.95
listExp = list(rate = 2)
lists = list(listExp, listExp, listExp, listExp, listExp, listExp) #A list of exponential distributions that is N long

mv.NE = mvdc(normalCopula(correlations, dim = N, dispstr = "un"), rep("exp",N),lists) #create multivariate distribution 

x.samp = rMvdc(1000, mv.NE) #sample from multivariate distribution 
pairs.panels(x.samp) #plot results 

enter image description here

As you can see, the measured spearman's correlations are well below the set $\rho$ of 0.95. Does this arise from an error in this script, or is this a fundamental limitation of normal copulas? If its the latter, is there a different method I could use instead?

$\endgroup$

1 Answer 1

4
$\begingroup$

This is indeed a fundamental limitation and not only one of the normal copula. Your variables are exchangeable as identical margins of a normal copula with constant $\rho$. The correlation of $n$ exchangeable random variables each having variance $\sigma^2$ is bounded from below to be larger than $-\frac{\sigma^2}{n-1}.$ See the simple proof in this Wikipedia article

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.