Estimates the location and scale parameters of a scaled Student t distribution with 2 degrees of freedom, by maximum likelihood estimation.
sc.studentt2(percentile = 50, llocation = "identitylink", lscale = "loglink",
ilocation = NULL, iscale = NULL, imethod = 1, zero = "scale")
A numerical vector containing values between 0 and 100, which are the quantiles and expectiles. They will be returned as `fitted values'.
See Links
for more choices,
and CommonVGAMffArguments
.
See CommonVGAMffArguments
for details.
An object of class "vglmff"
(see vglmff-class
).
The object is used by modelling functions such as vglm
,
rrvglm
and vgam
.
Koenker (1993) solved for the distribution whose quantiles are equal to its expectiles. Its canonical form has mean and mode at 0, and has a heavy tail (in fact, its variance is infinite).
The standard (``canonical'') form of this
distribution can be endowed with a location and scale parameter.
The standard form has a density
that can be written as
percentile
are returned as the fitted values;
in particular, percentile = 50
corresponds to the mean
(0.5 expectile) and median (0.5 quantile).
Note that if dsc.t2
then studentt2
by specifying df = 2
and making
an adjustment for the scale parameter, however, this VGAM
family function is more efficient since the EIM is known
(Fisher scoring is implemented.)
Koenker, R. (1993) When are expectiles percentiles? (solution) Econometric Theory, 9, 526--527.
# NOT RUN {
set.seed(123); nn <- 1000
kdata <- data.frame(x2 = sort(runif(nn)))
kdata <- transform(kdata, mylocat = 1 + 3 * x2,
myscale = 1)
kdata <- transform(kdata, y = rsc.t2(nn, loc = mylocat, scale = myscale))
fit <- vglm(y ~ x2, sc.studentt2(perc = c(1, 50, 99)), data = kdata)
fit2 <- vglm(y ~ x2, studentt2(df = 2), data = kdata) # 'same' as fit
coef(fit, matrix = TRUE)
head(fitted(fit))
head(predict(fit))
# Nice plot of the results
# }
# NOT RUN {
plot(y ~ x2, data = kdata, col = "blue", las = 1,
sub = paste("n =", nn),
main = "Fitted quantiles/expectiles using the sc.studentt2() distribution")
matplot(with(kdata, x2), fitted(fit), add = TRUE, type = "l", lwd = 3)
legend("bottomright", lty = 1:3, lwd = 3, legend = colnames(fitted(fit)),
col = 1:3)
# }
# NOT RUN {
fit@extra$percentile # Sample quantiles
# }
Run the code above in your browser using DataLab