Bivariate Normal Distribution Family Function
Maximum likelihood estimation of the five parameters of a bivariate normal distribution.
binormal(lmean1 = "identitylink", lmean2 = "identitylink", lsd1 = "loglink", lsd2 = "loglink", lrho = "rhobitlink", imean1 = NULL, imean2 = NULL, isd1 = NULL, isd2 = NULL, irho = NULL, imethod = 1, eq.mean = FALSE, eq.sd = FALSE, zero = c("sd", "rho"))
lmean1, lmean2, lsd1, lsd2, lrho |
Link functions applied to the means, standard deviations and
|
imean1, imean2, isd1, isd2, irho, imethod, zero |
See |
eq.mean, eq.sd |
Logical or formula. Constrains the means or the standard deviations to be equal. |
For the bivariate normal distribution,
this fits a linear model (LM) to the means, and
by default,
the other parameters are intercept-only.
The response should be a two-column matrix.
The correlation parameter is rho
,
which lies between -1 and 1
(thus the rhobitlink
link is a reasonable choice).
The fitted means are returned as the fitted values, which is in
the form of a two-column matrix.
Fisher scoring is implemented.
An object of class "vglmff"
(see vglmff-class
).
The object is used by modelling functions such as vglm
,
and vgam
.
This function may be renamed to normal2()
or something like that
at a later date.
If both equal means and equal standard deviations are desired
then use something like
constraints = list("(Intercept)" = matrix(c(1,1,0,0,0, 0,0,1,1,0 ,0,0,0,0,1), 5, 3))
and maybe
zero = NULL
etc.
T. W. Yee
set.seed(123); nn <- 1000 bdata <- data.frame(x2 = runif(nn), x3 = runif(nn)) bdata <- transform(bdata, y1 = rnorm(nn, 1 + 2 * x2), y2 = rnorm(nn, 3 + 4 * x2)) fit1 <- vglm(cbind(y1, y2) ~ x2, binormal(eq.sd = TRUE), data = bdata, trace = TRUE) coef(fit1, matrix = TRUE) constraints(fit1) summary(fit1) # Estimated P(Y1 <= y1, Y2 <= y2) under the fitted model var1 <- loglink(2 * predict(fit1)[, "loglink(sd1)"], inverse = TRUE) var2 <- loglink(2 * predict(fit1)[, "loglink(sd2)"], inverse = TRUE) cov12 <- rhobitlink(predict(fit1)[, "rhobitlink(rho)"], inverse = TRUE) head(with(bdata, pbinorm(y1, y2, mean1 = predict(fit1)[, "mean1"], mean2 = predict(fit1)[, "mean2"], var1 = var1, var2 = var2, cov12 = cov12)))
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.