Saturday, 14 February 2015

Copulalib: How to use copulas in Python

When dealing with copulas, R is a better option in my opinion, however, what could you do if you wish to use Python instead? There’s a good starting package called Copulalib which you can easily download here.


The package is really simple to use and very user-friendly I would say, it basically handles everything (pseudo-observations etc…) once you fed in the raw data. There is a simple example of implementation in the download page. Once the data has been fed into the function, the fitting is done automatically and the following parameters are generated:
-Spearman’s rho
-Kendall’s tau
-Theta (the parameter of the copula)

As of my understanding of the package, only Frank, Gumbel and Clayton copulas are available, and this of course could be a limitation, however it is for sure a good start. Another point which is problematic is that multidimensional copulas seem not to be supported.


Now for the real complaints: for some reason once the sample size is larger than 300 observations per variable (say 300 x and 300 y) the script raises an error saying that x and y must be of the same dimensions which is strange since they are already of the same size. Anyway maybe I did something incorrect.

Here below is the short piece of code which generated the plots of the data and of the available copulas

Next I’m going to post a class for copulas.

1 comment:

  1. Thanks for the nice post. I am also trying to move my R copula script to Python.

    I agree that the current copulalib is quite limited, and I think that size greater than 300 problem is a bug.

    Also wonder why the fitting procedure is not taking U and V values in [0,1] and instead taking raw data values. Suppose I have X and Y raw data and fitted in certain (but different) distributions that I preferred, I would want to use my own set of Us and Vs to fit the copula.