R: Truncated Weibull Distribution Family Function

truncweibull {VGAM} | R Documentation

## Truncated Weibull Distribution Family Function

### Description

Maximum likelihood estimation of the 2-parameter Weibull distribution with lower truncation. No observations should be censored.

### Usage

    truncweibull(lower.limit = 1e-5,
                 lAlpha = "loglink", lBetaa = "loglink",
                 iAlpha = NULL,   iBetaa = NULL,
                 nrfs = 1, probs.y = c(0.2, 0.5, 0.8),
                 imethod = 1, zero = "Betaa")

### Arguments

`lower.limit` | Positive lower truncation limits. Recycled to the same dimension as the response, going across rows first. The default, being close to 0, should mean effectively the same results as `weibullR` if there are no response values that are smaller.
`lAlpha, lBetaa` | Parameter link functions applied to the (positive) parameters `Alpha` (called α below) and (positive) `Betaa` (called β below). See `Links` for more choices.
`iAlpha, iBetaa` | See `CommonVGAMffArguments`.
`imethod, nrfs, zero, probs.y` | Details at `weibullR` and `CommonVGAMffArguments`.

### Details

MLE of the two parameters of the Weibull distribution are computed, subject to lower truncation. That is, all response values are greater than `lower.limit`, element-wise. For a particular observation this is any known positive value. This function is currently based directly on Wingo (1989) and his parameterization is used (it differs from `weibullR`.) In particular, β = a and α = (1/b)^a where a and b are as in `weibullR` and `dweibull`.

Upon fitting the `extra` slot has a component called `lower.limit` which is of the same dimension as the response. The fitted values are the mean, which are computed using `pgamma.deriv` and `pgamma.deriv.unscaled`.

### 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 converted to the same parameterization as `weibullR` at any time. Yet to do: one element of the EIM may be wrong (due to two interpretations of a formula; but it seems to work). Convergence is slower than usual and this may imply something is wrong; use argument `maxit`. In fact, it's probably because `pgamma.deriv.unscaled` is inaccurate at `q = 1` and `q = 2`. Also, convergence should be monitored, especially if the truncation means that a large proportion of the data is lost compared to an ordinary Weibull distribution.

### Note

More improvements need to be made, e.g., initial values are currently based on no truncation. This VGAM family function handles multiple responses.

### Author(s)

T. W. Yee

### References

Wingo, D. R. (1989). The left-truncated Weibull distribution: theory and computation. Statistical Papers, 30(1), 39–48.

### See Also

`weibullR`, `dweibull`, `pgamma.deriv`, `pgamma.deriv.unscaled`.

### Examples

    nn <- 5000; prop.lost <- 0.40   # Proportion lost to truncation
    wdata <- data.frame(x2 = runif(nn))  # Complete Weibull data
    wdata <- transform(wdata,
                       Betaa = exp(1))  # > 2 is okay (satisfies regularity conds)
    wdata <- transform(wdata, Alpha = exp(0.5 - 1 * x2))
    wdata <- transform(wdata, Shape = Betaa,
    #                         aaa   = Betaa,
    #                         bbb   = 1 / Alpha^(1 / Betaa),
                              Scale = 1 / Alpha^(1 / Betaa))
    wdata <- transform(wdata, y2 = rweibull(nn, shape = Shape, scale = Scale))
    summary(wdata)

    lower.limit2 <- with(wdata, quantile(y2, prob = prop.lost))  # Proportion lost
    wdata <- subset(wdata, y2 > lower.limit2)  # Smaller due to truncation

    fit1 <- vglm(y2 ~ x2, maxit = 100, trace = TRUE,
                 truncweibull(lower.limit = lower.limit2), data = wdata)
    coef(fit1, matrix = TRUE)
    summary(fit1)
    vcov(fit1)
    head(fit1@extra$lower.limit)

[Package VGAM version 1.1-3 Index]