binormal {VGAM} | R Documentation |
Bivariate Normal Distribution Family Function
Description
Maximum likelihood estimation of the five parameters of a bivariate normal distribution.
Usage
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"), rho.arg = NA)
Arguments
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. |
rho.arg |
If |
Details
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.
Value
An object of class "vglmff"
(see vglmff-class
).
The object is used by modelling functions
such as vglm
,
and vgam
.
Warning
This function may be renamed to
normal2()
or something like that at
a later date.
Note
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.
Author(s)
T. W. Yee
See Also
uninormal
,
trinormal
,
pbinorm
,
bistudentt
,
rhobitlink
.
Examples
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), 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)"], inv = TRUE)
var2 <- loglink(2 * predict(fit1)[, "loglink(sd2)"], inv = TRUE)
cov12 <- rhobitlink(predict(fit1)[, "rhobitlink(rho)"], inv = TRUE)
head(with(bdata, pbinorm(y1, y2,
mean1 = predict(fit1)[, "mean1"],
mean2 = predict(fit1)[, "mean2"],
var1 = var1, var2 = var2, cov12 = cov12)))