R: Gaussian Copula (Bivariate) Family Function

binormalcop {VGAM} | R Documentation

## Gaussian Copula (Bivariate) Family Function

### Description

Estimate the correlation parameter of the (bivariate) Gaussian copula distribution by maximum likelihood estimation.

### Usage

    binormalcop(lrho = "rhobit", irho = NULL, imethod = 1,
                parallel = FALSE, zero = NULL)

### Arguments

`lrho, irho, imethod` | Details at `CommonVGAMffArguments`. See `Links` for more link function choices.
`parallel, zero` | Details at `CommonVGAMffArguments`. If `parallel = TRUE` then the constraint is applied to the intercept too.

### Details

The cumulative distribution function is

P(Y1 <= y1, Y2 <= y2) = Phi_2(Φ^(-1)(y_1), Φ^(-1)(y_2); ρ)

for -1 < rho < 1, Phi_2 is the cumulative distribution function of a standard bivariate normal (see `pbinorm`), and Phi is the cumulative distribution function of a standard univariate normal (see `pnorm`).

The support of the function is the interior of the unit square; however, values of 0 and/or 1 are not allowed. The marginal distributions are the standard uniform distributions. When rho=0 the random variables are independent.

This VGAM family function can handle multiple responses, for example, a six-column matrix where the first 2 columns is the first out of three responses, the next 2 columns being the next response, etc.

### Value

An object of class `"vglmff"` (see `vglmff-class`). The object is used by modelling functions such as `vglm` and `vgam`.

### Note

The response matrix must have a multiple of two-columns. Currently, the fitted value is a matrix with the same number of columns and values equal to 0.5. This is because each marginal distribution corresponds to a standard uniform distribution.

This VGAM family function is fragile; each response must be in the interior of the unit square. Setting `crit = "coef"` is sometimes a good idea because inaccuracies in `pbinorm` might mean unnecessary half-stepping will occur near the solution.

### Author(s)

T. W. Yee

### References

Schepsmeier, U. and Stober, J. (2013) Derivatives and Fisher information of bivariate copulas. Statistical Papers.

### See Also

`rbinormcop`, `pnorm`, `kendall.tau`.

### Examples

    nn <- 1000
    ymat <- rbinormcop(n = nn, rho = rhobit(-0.9, inverse = TRUE))
    bdata <- data.frame(y1 = ymat[, 1],
                        y2 = ymat[, 2],
                        y3 = ymat[, 1],
                        y4 = ymat[, 2],
                        x2 = runif(nn))

    summary(bdata)
    ## Not run:  plot(ymat, col = "blue")
    fit1 <- vglm(cbind(y1, y2, y3, y4) ~ 1,  # 2 responses, e.g., (y1,y2) is the first
                 fam = binormalcop,
                 crit = "coef",  # Sometimes a good idea
                 data = bdata, trace = TRUE)

    coef(fit1, matrix = TRUE)
    Coef(fit1)
    head(fitted(fit1))
    summary(fit1)

    # Another example; rho is a linear function of x2
    bdata <- transform(bdata, rho = -0.5 + x2)
    ymat <- rbinormcop(n = nn, rho = with(bdata, rho))
    bdata <- transform(bdata, y5 = ymat[, 1],
                              y6 = ymat[, 2])
    fit2 <- vgam(cbind(y5, y6) ~ s(x2), data = bdata,
                 binormalcop(lrho = "identitylink"), trace = TRUE)
    ## Not run:  plot(fit2, lcol = "blue", scol = "orange", se = TRUE, las = 1)

[Package VGAM version 1.0-3 Index]