uninormal: Univariate Normal Distribution

View source: R/family.normal.R

uninormalR Documentation

Univariate Normal Distribution

Description

Maximum likelihood estimation of the two parameters of a univariate normal distribution.

Usage

uninormal(lmean = "identitylink", lsd = "loglink", lvar =
          "loglink", var.arg = FALSE, imethod = 1, isd = NULL,
          parallel = FALSE, vfl = FALSE, Form2 = NULL,
 smallno = 1e-05, zero = if (var.arg)
          "var" else "sd")

Arguments

lmean, lsd, lvar

Link functions applied to the mean and standard deviation/variance. See Links for more choices. Being positive quantities, a log link is the default for the standard deviation and variance (see var.arg).

var.arg

Logical. If TRUE then the second parameter is the variance and lsd and esd are ignored, else the standard deviation is used and lvar and evar are ignored.

smallno

Numeric, positive but close to 0. Used specifically for quasi-variances; if the link for the mean is explink then any non-positive value of eta is replaced by this quantity (hopefully, temporarily and only during early iterations).

imethod, parallel, isd, zero

See CommonVGAMffArguments for information. If lmean = loglink then try imethod = 2. If parallel = TRUE then the parallelism constraint is not applied to the intercept.

vfl, Form2

See CommonVGAMffArguments for information.

Details

This fits a linear model (LM) as the first linear/additive predictor. So, by default, this is just the mean. By default, the log of the standard deviation is the second linear/additive predictor. The Fisher information matrix is diagonal. This VGAM family function can handle multiple responses.

Value

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

Warning

gaussianff() was deprecated but has been brought back into VGAM nominally. It should be called Mickey Mouse. It gives a warning and calls uninormal instead (hopefully all the arguments should pass in correctly). Users should avoid calling gaussianff(); use glm with gaussian instead. It is dangerous to treat what is an uninormal fit as a gaussianff() object.

Note

Yet to do: allow an argument such as eq.sd that enables the standard devations to be the same. Also, this function used to be called normal1() too, but it has been decommissioned.

Author(s)

T. W. Yee

References

Forbes, C., Evans, M., Hastings, N. and Peacock, B. (2011). Statistical Distributions, Hoboken, NJ, USA: John Wiley and Sons, Fourth edition.

See Also

posnormal, mix2normal, ordsup, N1binomial, N1poisson, Qvar, tobit, cens.normal, foldnormal, skewnormal, double.cens.normal, SURff, AR1, huber2, studentt, binormal, trinormal, dnorm, simulate.vlm, hdeff.vglm.

Examples

udata <- data.frame(x2 = rnorm(nn <- 200))
udata <- transform(udata,
           y1  = rnorm(nn, m = 1 - 3*x2, sd = exp(1 + 0.2*x2)),
           y2a = rnorm(nn, m = 1 + 2*x2, sd = exp(1 + 2.0*x2)^0.5),
           y2b = rnorm(nn, m = 1 + 2*x2, sd = exp(1 + 2.0*x2)^0.5))
fit1 <- vglm(y1 ~ x2, uninormal(zero = NULL), udata, trace = TRUE)
coef(fit1, matrix = TRUE)
fit2 <- vglm(cbind(y2a, y2b) ~ x2, data = udata, trace = TRUE,
             uninormal(var = TRUE, parallel = TRUE ~ x2,
                       zero = NULL))
coef(fit2, matrix = TRUE)

# Generate data from N(mu=theta=10, sigma=theta) and estimate theta.
theta <- 10
udata <- data.frame(y3 = rnorm(100, m = theta, sd = theta))
fit3a <- vglm(y3 ~ 1, uninormal(lsd = "identitylink"), data = udata,
             constraints = list("(Intercept)" = rbind(1, 1)))
fit3b <- vglm(y3 ~ 1, uninormal(lsd = "identitylink",
                        parallel = TRUE ~ 1, zero = NULL), udata)
coef(fit3a, matrix = TRUE)
coef(fit3b, matrix = TRUE)  # Same as fit3a

VGAM documentation built on Sept. 18, 2024, 9:09 a.m.