I have three variables with correlation coefficient of respectively 0.3; -0.2 and 0.1. I want to fit a T copula but when I use the fitCopula function it gives me a single value for rho, which leads to a poor fit to the data.
zCop<-tCopula(dim=3)
set.seed(500)
m <- pobs(as.matrix(cbind(IG, HY,GOV)))
fit <- fitCopula(zCop,m,method='ml')
coef(fit)
rho.1 df
0.06940047 6.30347241
I have tried to fit bivariate copulas for each couple, and in that case the rho is close to the empirical one, but I get very different results for the df which can only be a single parameter.
When I do IG,HY I get the following, which is close to the empirical correlation:
zCop<-tCopula(dim=2)
set.seed(500)
m <- pobs(as.matrix(cbind(IG,HY)))
cor(m, method="spearman")
fit <- fitCopula(zCop,m,method='ml')
coef(fit)
rho.1 df
0.3417333 10.6678394
I wonder whether I could impose the correlation structure and then use the df estimated from the multivariate copula (6.3 here) as down below (weher coef1 is the rho fitted for IG-HY, coef2 for IG-GOV and coef3 for HY-GOV)
u <- rCopula(3965,tCopula(dim=3,c(coef1,coef2,coef3),df=6.3,dispstr='un'))
I wonder whether I could use this:
zCop<-tCopula(dim=3, dispstr = 'un')
set.seed(500)
m <- pobs(as.matrix(cbind(IG, HY,GOV)))
fit <- fitCopula(zCop,m,method='itau.mpl')
coef(fit)
rho.1 rho.2 rho.3 df
0.33823924 -0.19170082 0.07088704 13.89581598