Kendall’s function for copulas

September 12, 2012
By

(This article was first published on Freakonometrics - Tag - R-english, and kindly contributed to R-bloggers)

As mentioned in the course on copulas, a nice tool to describe dependence it Kendall's cumulative function. Given a random pair http://i0.wp.com/freakonometrics.blog.free.fr/public/perso6/conc-19.gif?w=456 with distribution  http://i2.wp.com/freakonometrics.blog.free.fr/public/perso6/conc-17.gif?w=456, define random variable http://i1.wp.com/freakonometrics.blog.free.fr/public/perso6/conc-30.gif?w=456. Then Kendall's cumulative function is

http://i0.wp.com/freakonometrics.blog.free.fr/public/perso6/kendall-01.gif?w=456

Genest and Rivest (1993) introduced that function to choose among Archimedean copulas (we'll get back to this point below).

From a computational point of view, computing such a function can be done as follows,

  • for all http://i1.wp.com/freakonometrics.blog.free.fr/public/perso6/kendall-02.gif?w=456, compute http://i0.wp.com/freakonometrics.blog.free.fr/public/perso6/kendall-03.gif?w=456 as the proportion of observation in the lower quadrant, with upper corner http://i0.wp.com/freakonometrics.blog.free.fr/public/perso6/kendall-4.gif?w=456, i.e.

http://i0.wp.com/freakonometrics.blog.free.fr/public/perso6/kendall-06.gif?w=456

  • then compute the cumulative distribution function of http://i0.wp.com/freakonometrics.blog.free.fr/public/perso6/kendall-03.gif?w=456's.

To visualize the construction of that cumulative distribution function, consider the following animation

Thus, here the code to compute simply that cumulative distribution function is

n=nrow(X)
i=rep(1:n,each=n)
j=rep(1:n,n)
S=((X[i,1]>X[j,1])&(X[i,2]>X[j,2]))
Z=tapply(S,i,sum)/(n-1)

The graph can be obtain either using

plot(ecdf(Z))

or

plot(sort(Z),(1:n)/n,type="s",col="red")

The interesting point is that for an Archimedean copula with generator http://i1.wp.com/freakonometrics.blog.free.fr/public/perso6/kendall-7.gif?w=456, then Kendall's function is simply

http://i1.wp.com/freakonometrics.blog.free.fr/public/perso6/kendall-8.gif?w=456

If we're too lazy to do the maths, at least, it is possible to compute those functions numerically. For instance, for Clayton copula,

h=.001
phi=function(t){(t^(-alpha)-1)}
dphi=function(t){(phi(t+h)-phi(t-h))/2/h}
k=function(t){t-phi(t)/dphi(t)}
Kc=Vectorize(k)

Similarly, let us consider Gumbel copula,

phi=function(t){(-log(t))^(theta)}
dphi=function(t){(phi(t+h)-phi(t-h))/2/h}
k=function(t){t-phi(t)/dphi(t)}
Kg=Vectorize(k)

If we plot the empirical Kendall's function (obtained from the sample), with different theoretical ones, derived from Clayton copulas (on the left, in blue) or Gumbel copula (on the right, in purple), we have the following,

http://i0.wp.com/freakonometrics.blog.free.fr/public/perso6/kendall-function-anim.gif?resize=456%2C228

Note that the different curves were obtained when Clayton copula has Kendall's tau equal to 0, .1, .2, .3, ..., .9, 1, and similarly for Gumbel copula (so that Figures can be compared). The following table gives a correspondence, from Kendall's tau to the underlying parameter of a copula (for different families)

as well as Spearman's rho,


To conclude, observe that there are two important particular cases that can be identified here: the case of perfect dependent, on the first diagonal when http://i2.wp.com/freakonometrics.blog.free.fr/public/perso6/kennnn-04.gif?w=456, and the case of independence, the upper green curve, http://i1.wp.com/freakonometrics.blog.free.fr/public/perso6/kennnnn-05.gif?w=456. It should also be mentioned that it is also common to plot not function http://i0.wp.com/freakonometrics.blog.free.fr/public/perso6/kennnn-01.gif?w=456, but function http://i1.wp.com/freakonometrics.blog.free.fr/public/perso6/kennnn-02.gif?w=456, defined as http://i1.wp.com/freakonometrics.blog.free.fr/public/perso6/kennnn-03.gif?w=456,



To leave a comment for the author, please follow the link and comment on his blog: Freakonometrics - Tag - R-english.

R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...



If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Tags: , , , , , , ,

Comments are closed.