Learn R Programming

VGAM (version 1.1-5)

binormalcop: Gaussian Copula (Bivariate) Family Function

Description

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

Usage

binormalcop(lrho = "rhobitlink", 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.

Value

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

Details

The cumulative distribution function is $$P(Y_1 \leq y_1, Y_2 \leq y_2) = \Phi_2 ( \Phi^{-1}(y_1), \Phi^{-1}(y_2); \rho ) $$ 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.

References

Schepsmeier, U. and Stober, J. (2014). Derivatives and Fisher information of bivariate copulas. Statistical Papers 55, 525--542.

See Also

rbinormcop, pnorm, kendall.tau.

Examples

Run this code
# NOT RUN {
nn <- 1000
ymat <- rbinormcop(n = nn, rho = rhobitlink(-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") 
# }
# NOT RUN {
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) 
# }

Run the code above in your browser using DataLab