R: Censored Normal Distribution

cens.normal {VGAM} | R Documentation

## Censored Normal Distribution

### Description

Maximum likelihood estimation for the normal distribution with left and right censoring.

### Usage

    cens.normal(lmu = "identitylink", lsd = "loge", imethod = 1, zero = "sd")

### Arguments

`lmu, lsd` | Parameter link functions applied to the mean and standard deviation parameters. See `Links` for more choices. The standard deviation is a positive quantity, therefore a log link is the default.
`imethod` | Initialization method. Either 1 or 2, this specifies two methods for obtaining initial values for the parameters.
`zero` | A vector, e.g., containing the value 1 or 2; if so, the mean or standard deviation respectively are modelled as an intercept only. Setting `zero = NULL` means both linear/additive predictors are modelled as functions of the explanatory variables. See `CommonVGAMffArguments` for more information.

### Details

This function is like `uninormal` but handles observations that are left-censored (so that the true value would be less than the observed value) else right-censored (so that the true value would be greater than the observed value). To indicate which type of censoring, input `extra = list(leftcensored = vec1, rightcensored = vec2)` where `vec1` and `vec2` are logical vectors the same length as the response. If the two components of this list are missing then the logical values are taken to be `FALSE`. The fitted object has these two components stored in the `extra` slot.

### Value

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

### Note

This function, which is an alternative to `tobit`, cannot handle a matrix response and uses different working weights. If there are no censored observations then `uninormal` is recommended instead.

### Author(s)

T. W. Yee

### See Also

`tobit`, `uninormal`, `double.cens.normal`.

### Examples

    ## Not run:
    cdata <- data.frame(x2 = runif(nn <- 1000))  # ystar are true values
    cdata <- transform(cdata, ystar = rnorm(nn, m = 100 + 15 * x2, sd = exp(3)))
    with(cdata, hist(ystar))
    cdata <- transform(cdata, L = runif(nn,  80,  90),  # Lower censoring points
                              U = runif(nn, 130, 140))  # Upper censoring points
    cdata <- transform(cdata, y = pmax(L, ystar))  # Left  censored
    cdata <- transform(cdata, y = pmin(U, y))      # Right censored
    with(cdata, hist(y))
    Extra <- list(leftcensored  = with(cdata, ystar < L),
                  rightcensored = with(cdata, ystar > U))
    fit1 <- vglm(y ~ x2, cens.normal, data = cdata, crit = "c", extra = Extra)
    fit2 <- vglm(y ~ x2, tobit(Lower = with(cdata, L), Upper = with(cdata, U)),
                data = cdata, crit = "c", trace = TRUE)
    coef(fit1, matrix = TRUE)
    max(abs(coef(fit1, matrix = TRUE) -
            coef(fit2, matrix = TRUE)))  # Should be 0
    names(fit1@extra)

    ## End(Not run)

[Package VGAM version 1.0-3 Index]