Gaussian copula

Ben Abbott bpabbott at mac.com
Sun May 4 13:11:57 CDT 2008


On May 4, 2008, at 10:25 AM, Dorian wrote:
>
>> 2008/4/4 Ben Abbott <bpabbott at mac.com>:
>>
>> On Apr 3, 2008, at 11:44 AM, Dorian wrote:
>> hi all,
>>
>> Is there a simple way to plot a gaussian copula with octave ?
>>
>> Any hint will be very appreciated
>>
>> Thanks in advance
>>
>> In the event you're looking for a function to calculate the curve,  
>> there is one at the link below.
>>
>>        http://www.koders.com/matlab/fid26069CC4A023DEC477427496F77F5EB8A2A8412C.aspx
>>
>> You'll need the following function also.
>>
>>        http://www.koders.com/matlab/fid950678C6674B791F9548A1595C8CFC013A3F7FFC.aspx
>>
>> An example is below,
>>
>> u = linspace(0.01,0.99,101);
>> v = u;
>> alpha = 0.5;
>>
>> [u, v] = meshgrid (u, v);
>>
>> z = copulapdf ('gaussian', u, v, alpha);
>>
>> mesh (u, v, z)
>> xlabel ("u")
>> ylabel ("v")
>> zlabel ("copula")
>
> hello,
>
> I had used all the link you sent, and  I got many nice plot  for  
> different copula densities .
>
> Now I am dealing with matrices U and V which have entries 0 and 1.
> Is there a simple way to plot in that case the copula densities say   
> c(U,V) , depend on U and V.
>
> How could I set "alpha" .
> I'm getting error of size when  "alpha"  as an array according to  
> the range of copula .
>
> Thanks ,

I'm not familiar with these functions, or the underlying algorithms.,  
but it appears the help provided by the function answers your questions.

 > help  copulapdf

    FUNCTION C = COPULAPDF(FAMILY, U, ALPHA)

    Return c(u,v|ALPHA), the copula density.

    INPUTS
        FAMILY: one of {'ind', 'gaussian', 'gumbel' 'clayton' 'frank'  
'amh' 'joe' 'fgm' 'arch12' 'arch14'}
        U: Nx2 vector (u,v) in [0,1]^2.
        ALPHA: 1xM vector of copula parameters
            or
    COPULAPDF(FAMILY, U1, U2, ALPHA)
        U1, U2:  Matrices or row vectors.
                 If U1 is (1xN) and U2 is (1xM), c is (NxM)
                 If U1 is (NxM), U2 must be (N,M).
        ALPHA:   Scalar copula parameter

    OUTPUT
        C:       Copula density c(u,v|ALPHA) (NxM).

So if I've inferred what you're hoping to do, try

u = linspace(0.01,0.99,101);
v = linspace(0.01,0.99,101);

% the 2nd input contains both u & v
U = [u(:), v(:)];
% I don't know what a reasonable range for alpha is, but I'll try 0 to 1
alpha = linspace(0,1,11);
z = copulapdf ('gaussian', U, alpha);

[x, y] = meshgrid (alpha, u);
mesh (x, y, log10(z))
xlabel("Alpha")
ylabel("u")

There is no need for "u" and "v" to be identical, but they do need to  
be the same length.

Ben





More information about the Help-octave mailing list