R: The Tobit Distribution

Tobit {VGAM} | R Documentation

## The Tobit Distribution

### Description

Density, distribution function, quantile function and random generation for the Tobit model.

### Usage

    dtobit(x, mean = 0, sd = 1, Lower = 0, Upper = Inf, log = FALSE)
    ptobit(q, mean = 0, sd = 1, Lower = 0, Upper = Inf,
           lower.tail = TRUE, log.p = FALSE)
    qtobit(p, mean = 0, sd = 1, Lower = 0, Upper = Inf,
           lower.tail = TRUE, log.p = FALSE)
    rtobit(n, mean = 0, sd = 1, Lower = 0, Upper = Inf)

### Arguments

`x, q` | vector of quantiles.
`p` | vector of probabilities.
`n` | number of observations. If `length(n) > 1` then the length is taken to be the number required.
`Lower, Upper` | vector of lower and upper thresholds.
`mean, sd, lower.tail, log, log.p` | see `rnorm`.

### Details

See `tobit`, the VGAM family function for estimating the parameters, for details. Note that the density at `Lower` and `Upper` is the the area to the left and right of those points. Thus there are two spikes (but less in value); see the example below. Consequently, `dtobit(Lower) + dtobit(Upper) +` the area in between equals unity.

### Value

`dtobit` gives the density, `ptobit` gives the distribution function, `qtobit` gives the quantile function, and `rtobit` generates random deviates.

### Author(s)

T. W. Yee

### See Also

`tobit`, `rnorm`.

### Examples

    mu <- 0.5; x <- seq(-2, 4, by = 0.01)
    Lower <- -1; Upper <- 2.0

    integrate(dtobit, lower = Lower, upper = Upper,
              mean = mu, Lower = Lower, Upper = Upper)$value +
    dtobit(Lower, mean = mu, Lower = Lower, Upper = Upper) +
    dtobit(Upper, mean = mu, Lower = Lower, Upper = Upper)  # Adds to unity

    ## Not run:
    plot(x, ptobit(x, m = mu, Lower = Lower, Upper = Upper),
         type = "l", ylim = 0:1, las = 1, col = "orange",
         ylab = paste("ptobit(m = ", mu, ", sd = 1, Lower =", Lower,
                      ", Upper =", Upper, ")"),
         main = "Orange is cumulative distribution function; blue is density",
         sub = "Purple lines are the 10,20,...,90 percentiles")
    abline(h = 0)
    lines(x, dtobit(x, m = mu, Lower = Lower, Upper = Upper), col = "blue")

    probs <- seq(0.1, 0.9, by = 0.1)
    Q <- qtobit(probs, m = mu, Lower = Lower, Upper = Upper)
    lines(Q, ptobit(Q, m = mu, Lower = Lower, Upper = Upper),
          col = "purple", lty = "dashed", type = "h")
    lines(Q, dtobit(Q, m = mu, Lower = Lower, Upper = Upper),
          col = "darkgreen", lty = "dashed", type = "h")
    abline(h = probs, col = "purple", lty = "dashed")
    max(abs(ptobit(Q, m = mu, Lower = Lower, Upper = Upper) - probs))  # Should be 0

    endpts <- c(Lower, Upper)  # Endpoints have a spike (not quite, actually)
    lines(endpts, dtobit(endpts, m = mu, Lower = Lower, Upper = Upper),
          col = "blue", lwd = 3, type = "h")

    ## End(Not run)

[Package VGAM version 1.1-3 Index]