R: Student t Distribution

studentt {VGAM} | R Documentation

## Student t Distribution

### Description

Estimating the parameters of a Student t distribution.

### Usage

    studentt (ldf = "logloglink", idf = NULL, tol1 = 0.1, imethod = 1)
    studentt2(df = Inf, llocation = "identitylink", lscale = "loglink",
              ilocation = NULL, iscale = NULL, imethod = 1, zero = "scale")
    studentt3(llocation = "identitylink", lscale = "loglink", ldf = "logloglink",
              ilocation = NULL, iscale = NULL, idf = NULL,
              imethod = 1, zero = c("scale", "df"))

### Arguments

`llocation, lscale, ldf` | Parameter link functions for each parameter, e.g., for degrees of freedom nu. See `Links` for more choices. The defaults ensures the parameters are in range. A `loglog` link keeps the degrees of freedom greater than unity; see below.
`ilocation, iscale, idf` | Optional initial values. If given, the values must be in range. The default is to compute an initial value internally.
`tol1` | A positive value, the tolerance for testing whether an initial value is 1. Best to leave this argument alone.
`df` | Numeric, user-specified degrees of freedom. It may be of length equal to the number of columns of a response matrix.
`imethod, zero` | See `CommonVGAMffArguments`.

### Details

The Student t density function is

f(y;nu) = (gamma((nu+1)/2) / (sqrt(nu*pi) gamma(nu/2))) * (1 + y^2 / nu)^{-(nu+1)/2}

for all real y. Then E(Y)=0 if nu>1 (returned as the fitted values), and Var(Y)= nu/(nu-2) for nu > 2. When nu=1 then the Student t-distribution corresponds to the standard Cauchy distribution, `cauchy1`. When nu=2 with a scale parameter of `sqrt(2)` then the Student t-distribution corresponds to the standard (Koenker) distribution, `sc.studentt2`. The degrees of freedom can be treated as a parameter to be estimated, and as a real and not an integer. The Student t distribution is used for a variety of reasons in statistics, including robust regression.

Let Y = (T - mu) / sigma where mu and sigma are the location and scale parameters respectively. Then `studentt3` estimates the location, scale and degrees of freedom parameters. And `studentt2` estimates the location, scale parameters for a user-specified degrees of freedom, `df`. And `studentt` estimates the degrees of freedom parameter only. The fitted values are the location parameters. By default the linear/additive predictors are (mu, log(sigma), log log(nu))^T or subsets thereof.

In general convergence can be slow, especially when there are covariates.

### Value

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

### Note

`studentt3()` and `studentt2()` can handle multiple responses.

Practical experience has shown reasonably good initial values are required. If convergence failure occurs try using arguments such as `idf`. Local solutions are also possible, especially when the degrees of freedom is close to unity or the scale parameter is close to zero.

A standard normal distribution corresponds to a t distribution with infinite degrees of freedom. Consequently, if the data is close to normal, there may be convergence problems; best to use `uninormal` instead.

### Author(s)

T. W. Yee

### References

Student (1908). The probable error of a mean. Biometrika, 6, 1–25.

Zhu, D. and Galbraith, J. W. (2010). A generalized asymmetric Student-t distribution with application to financial econometrics. Journal of Econometrics, 157, 297–305.

### See Also

`uninormal`, `cauchy1`, `logistic`, `huber2`, `sc.studentt2`, `TDist`, `simulate.vlm`.

### Examples

    tdata <- data.frame(x2 = runif(nn <- 1000))
    tdata <- transform(tdata, y1 = rt(nn, df = exp(exp(0.5 - x2))),
                              y2 = rt(nn, df = exp(exp(0.5 - x2))))
    fit1 <- vglm(y1 ~ x2, studentt, data = tdata, trace = TRUE)
    coef(fit1, matrix = TRUE)

    fit2 <- vglm(y1 ~ x2, studentt2(df = exp(exp(0.5))), data = tdata)
    coef(fit2, matrix = TRUE)  # df inputted into studentt2() not quite right

    fit3 <- vglm(cbind(y1, y2) ~ x2, studentt3, data = tdata, trace = TRUE)
    coef(fit3, matrix = TRUE)

[Package VGAM version 1.1-3 Index]