Title: | Regression Modeling Using Vasicek Distribution |
---|---|
Description: | Vasicek density, cumulative distribution, quantile functions and random deviate generation of Vasicek distribution. In addition, there are two functions for fitting the Generalized Additive Models for Location Scale and Shape introduced by Rigby and Stasinopoulos (2005, <doi:10.1111/j.1467-9876.2005.00510.x>). Some functions are written in C++ using 'Rcpp', developed by Eddelbuettel and Francois (2011, <doi:10.18637/jss.v040.i08>). |
Authors: | Josmar Mazucheli [aut, cre], Bruna Alves [ctb] |
Maintainer: | Josmar Mazucheli <[email protected]> |
License: | MIT + file LICENSE |
Version: | 1.0.1 |
Built: | 2025-02-03 05:40:20 UTC |
Source: | https://github.com/cran/vasicekreg |
The vasicekreg package implements the probability density function, quantile function, cumulative distribution function and random number generation function for Vasicek distribution parameterized, either, as a function of its mean or its -th quantile,
. In addition, two gamlss frameworks for regression analysis are available. Some function are written in C++ using Rcpp.
bodyfat
: Body fat data set.
VASIM
: For mean modeling (con/in)ditional on covariate(s).
VASIQ
: For quantile modeling (con/in)ditional on covariate(s).
Josmar Mazucheli [email protected]
Bruna Alves [email protected]
The body fat percentage of individuals assisted in a public hospital in Curitiba, Paraná, Brazil.
data(bodyfat, package = "vasicekreg")
data(bodyfat, package = "vasicekreg")
A data-frame with 298 observations and 9 columns:
ARMS
: arms fat percentage.
LEGS
: legs fat percentage.
BODY
: body fat percentage.
ANDROID
: android fat percentage.
GYNECOID
: ginecoid fat percentage.
AGE
: age of individuals.
BMI
: body mass index.
SEX
: 1 for female, 2 for male.
IPAQ
: 0 for IPAQ = sedentary, 1 for IPAQ = insufficiently active and 2 for IPAQ = active.
Josmar Mazucheli [email protected]
Bruna Alves [email protected]
http://www.leg.ufpr.br/doku.php/publications:papercompanions:multquasibeta
Mazucheli, J., Leiva, V., Alves, B., and Menezes A. F. B., (2021). A new quantile regression for modeling bounded data under a unit Birnbaum-Saunders distribution with applications in medicine and politics. Symmetry, 13(4) 1–21.
Petterle, R. R., Bonat, W. H., Scarpin, C. T., Jonasson, T., and Borba, V. Z. C., (2020). Multivariate quasi-beta regression models for continuous bounded data. The International Journal of Biostatistics, 1–15, (preprint).
data(bodyfat, package = "vasicekreg") bodyfat$BMI <- bodyfat$BMI / 100 bodyfat$SEX <- as.factor(bodyfat$SEX) bodyfat$IPAQ<- as.factor(bodyfat$IPAQ) library(gamlss) # mean fit fitmean.logit <- gamlss(ARMS ~ AGE + BMI + SEX + IPAQ, data = bodyfat, family = VASIM(mu.link = "logit", sigma.link = "logit")) fitmean.probit <- gamlss(ARMS ~ AGE + BMI + SEX + IPAQ, data = bodyfat, family = VASIM(mu.link = "probit", sigma.link = "logit")) # quantile fit - tau = 0.5 tau <- 0.50 fitquant.logit <- gamlss(ARMS ~ AGE + BMI + SEX + IPAQ, data = bodyfat, family = VASIQ(mu.link = "logit", sigma.link = "logit")) fittaus <- lapply(c(0.10, 0.25, 0.50, 0.75, 0.90), function(Tau) { tau <<- Tau; gamlss(ARMS ~ AGE + BMI + SEX + IPAQ, data = bodyfat, family = VASIQ(mu.link = "logit", sigma.link = "logit")) }) sapply(fittaus, summary, USE.NAMES = TRUE)
data(bodyfat, package = "vasicekreg") bodyfat$BMI <- bodyfat$BMI / 100 bodyfat$SEX <- as.factor(bodyfat$SEX) bodyfat$IPAQ<- as.factor(bodyfat$IPAQ) library(gamlss) # mean fit fitmean.logit <- gamlss(ARMS ~ AGE + BMI + SEX + IPAQ, data = bodyfat, family = VASIM(mu.link = "logit", sigma.link = "logit")) fitmean.probit <- gamlss(ARMS ~ AGE + BMI + SEX + IPAQ, data = bodyfat, family = VASIM(mu.link = "probit", sigma.link = "logit")) # quantile fit - tau = 0.5 tau <- 0.50 fitquant.logit <- gamlss(ARMS ~ AGE + BMI + SEX + IPAQ, data = bodyfat, family = VASIQ(mu.link = "logit", sigma.link = "logit")) fittaus <- lapply(c(0.10, 0.25, 0.50, 0.75, 0.90), function(Tau) { tau <<- Tau; gamlss(ARMS ~ AGE + BMI + SEX + IPAQ, data = bodyfat, family = VASIQ(mu.link = "logit", sigma.link = "logit")) }) sapply(fittaus, summary, USE.NAMES = TRUE)
The function VASIM()
define the Vasicek distribution for a gamlss.family
object to be used in GAMLSS fitting. VASIM()
has mean equal to the parameter mu and sigma as shape parameter. The functions dVASIM
, pVASIM
, qVASIM
and rVASIM
define the density, distribution function, quantile function and random generation for Vasicek distribution.
dVASIM(x, mu, sigma, log = FALSE) pVASIM(q, mu, sigma, lower.tail = TRUE, log.p = FALSE) qVASIM(p, mu, sigma, lower.tail = TRUE, log.p = FALSE) rVASIM(n, mu, sigma) VASIM(mu.link = "logit", sigma.link = "logit")
dVASIM(x, mu, sigma, log = FALSE) pVASIM(q, mu, sigma, lower.tail = TRUE, log.p = FALSE) qVASIM(p, mu, sigma, lower.tail = TRUE, log.p = FALSE) rVASIM(n, mu, sigma) VASIM(mu.link = "logit", sigma.link = "logit")
x , q
|
vector of quantiles on the (0,1) interval. |
mu |
vector of the mean parameter values. |
sigma |
vector of shape parameter values. |
log , log.p
|
logical; If TRUE, probabilities p are given as log(p). |
lower.tail |
logical; If TRUE, (default), |
p |
vector of probabilities. |
n |
number of observations. If |
mu.link |
the mu link function with default logit. |
sigma.link |
the sigma link function with default logit. |
Probability density function
Cumulative distribution function
Quantile function
Expected value
Variance
where and
is the probability distribution function for the standard bivariate normal distribution with correlation
.
VASIM()
return a gamlss.family object which can be used to fit a Vasicek distribution by gamlss() function.
Note that for VASIQ()
, mu is the -th quantile and sigma a shape parameter. The
gamlss
function is used for parameters estimation.
Josmar Mazucheli [email protected]
Bruna Alves [email protected]
Hastie, T. J. and Tibshirani, R. J. (1990). Generalized Additive Models. Chapman and Hall, London.
Mazucheli, J., Alves, B. and Korkmaz, M. C. (2021). The Vasicek quantile regression model. (under review).
Rigby, R. A. and Stasinopoulos, D. M. (2005). Generalized additive models for location, scale and shape (with discussion). Applied. Statistics, 54(3), 507–554.
Rigby, R. A., Stasinopoulos, D. M., Heller, G. Z. and De Bastiani, F. (2019). Distributions for modeling location, scale, and shape: Using GAMLSS in R. Chapman and Hall/CRC.
Stasinopoulos, D. M. and Rigby, R. A. (2007) Generalized additive models for location scale and shape (GAMLSS) in R. Journal of Statistical Software, 23(7), 1–45.
Stasinopoulos, D. M., Rigby, R. A., Heller, G., Voudouris, V. and De Bastiani F. (2017) Flexible Regression and Smoothing: Using GAMLSS in R, Chapman and Hall/CRC.
Vasicek, O. A. (1987). Probability of loss on loan portfolio. KMV Corporation.
Vasicek, O. A. (2002). The distribution of loan portfolio value. Risk, 15(12), 1–10.
set.seed(123) x <- rVASIM(n = 1000, mu = 0.50, sigma = 0.69) R <- range(x) S <- seq(from = R[1], to = R[2], length.out = 1000) hist(x, prob = TRUE, main = 'Vasicek') lines(S, dVASIM(x = S, mu = 0.50, sigma = 0.69), col = 2) plot(ecdf(x)) lines(S, pVASIM(q = S, mu = 0.50, sigma = 0.69), col = 2) plot(quantile(x, probs = S), type = "l") lines(qVASIM(p = S, mu = 0.50, sigma = 0.69), col = 2) library(gamlss) set.seed(123) data <- data.frame(y = rVASIM(n = 100, mu = 0.5, sigma = 0.69)) fit <- gamlss(y ~ 1, data = data, mu.link = 'logit', sigma.link = 'logit', family = VASIM) 1 /(1 + exp(-fit$mu.coefficients)) 1 /(1 + exp(-fit$sigma.coefficients)) set.seed(123) n <- 100 x <- rbinom(n, size = 1, prob = 0.5) eta <- 0.5 + 1 * x; mu <- 1 / (1 + exp(-eta)); sigma <- 0.1; y <- rVASIM(n, mu, sigma) data <- data.frame(y, x) fit <- gamlss(y ~ x, data = data, family = VASIM, mu.link = 'logit', sigma.link = 'logit');
set.seed(123) x <- rVASIM(n = 1000, mu = 0.50, sigma = 0.69) R <- range(x) S <- seq(from = R[1], to = R[2], length.out = 1000) hist(x, prob = TRUE, main = 'Vasicek') lines(S, dVASIM(x = S, mu = 0.50, sigma = 0.69), col = 2) plot(ecdf(x)) lines(S, pVASIM(q = S, mu = 0.50, sigma = 0.69), col = 2) plot(quantile(x, probs = S), type = "l") lines(qVASIM(p = S, mu = 0.50, sigma = 0.69), col = 2) library(gamlss) set.seed(123) data <- data.frame(y = rVASIM(n = 100, mu = 0.5, sigma = 0.69)) fit <- gamlss(y ~ 1, data = data, mu.link = 'logit', sigma.link = 'logit', family = VASIM) 1 /(1 + exp(-fit$mu.coefficients)) 1 /(1 + exp(-fit$sigma.coefficients)) set.seed(123) n <- 100 x <- rbinom(n, size = 1, prob = 0.5) eta <- 0.5 + 1 * x; mu <- 1 / (1 + exp(-eta)); sigma <- 0.1; y <- rVASIM(n, mu, sigma) data <- data.frame(y, x) fit <- gamlss(y ~ x, data = data, family = VASIM, mu.link = 'logit', sigma.link = 'logit');
The function VASIQ()
define the Vasicek distribution for a gamlss.family
object to be used in GAMLSS fitting. VASIQ()
has the -th quantile equal to the parameter mu and sigma as shape parameter. The functions
dVASIQ
, pVASIQ
, qVASIQ
and rVASIQ
define the density, distribution function, quantile function and random generation for Vasicek distribution.
dVASIQ(x, mu, sigma, tau = 0.5, log = FALSE) pVASIQ(q, mu, sigma, tau = 0.5, lower.tail = TRUE, log.p = FALSE) qVASIQ(p, mu, sigma, tau = 0.5, lower.tail = TRUE, log.p = FALSE) rVASIQ(n, mu, sigma, tau = 0.5) VASIQ(mu.link = "logit", sigma.link = "logit")
dVASIQ(x, mu, sigma, tau = 0.5, log = FALSE) pVASIQ(q, mu, sigma, tau = 0.5, lower.tail = TRUE, log.p = FALSE) qVASIQ(p, mu, sigma, tau = 0.5, lower.tail = TRUE, log.p = FALSE) rVASIQ(n, mu, sigma, tau = 0.5) VASIQ(mu.link = "logit", sigma.link = "logit")
x , q
|
vector of quantiles on the (0,1) interval. |
mu |
vector of the |
sigma |
vector of shape parameter values. |
tau |
the |
log , log.p
|
logical; If TRUE, probabilities p are given as log(p). |
lower.tail |
logical; If TRUE, (default), |
p |
vector of probabilities. |
n |
number of observations. If |
mu.link |
the mu link function with default logit. |
sigma.link |
the sigma link function with default logit. |
Probability density function
Cumulative distribution function
where ,
is the
-th quantile and
is the shape parameter.
VASIQ()
return a gamlss.family object which can be used to fit a Vasicek distribution by gamlss() function.
Note that for VASIQ()
, mu is the -th quantile and sigma a shape parameter. The
gamlss
function is used for parameters estimation.
Josmar Mazucheli [email protected]
Bruna Alves [email protected]
Hastie, T. J. and Tibshirani, R. J. (1990). Generalized Additive Models. Chapman and Hall, London.
Mazucheli, J., Alves, B. and Korkmaz, M. C. (2021). The Vasicek quantile regression model. (under review).
Rigby, R. A. and Stasinopoulos, D. M. (2005). Generalized additive models for location, scale and shape (with discussion). Applied. Statistics, 54(3), 507–554.
Rigby, R. A., Stasinopoulos, D. M., Heller, G. Z. and De Bastiani, F. (2019). Distributions for modeling location, scale, and shape: Using GAMLSS in R. Chapman and Hall/CRC.
Stasinopoulos, D. M. and Rigby, R. A. (2007) Generalized additive models for location scale and shape (GAMLSS) in R. Journal of Statistical Software, 23(7), 1–45.
Stasinopoulos, D. M., Rigby, R. A., Heller, G., Voudouris, V. and De Bastiani F. (2017) Flexible Regression and Smoothing: Using GAMLSS in R, Chapman and Hall/CRC.
Vasicek, O. A. (1987). Probability of loss on loan portfolio. KMV Corporation.
Vasicek, O. A. (2002). The distribution of loan portfolio value. Risk, 15(12), 1–10.
set.seed(123) x <- rVASIQ(n = 1000, mu = 0.50, sigma = 0.69, tau = 0.50) R <- range(x) S <- seq(from = R[1], to = R[2], length.out = 1000) hist(x, prob = TRUE, main = 'Vasicek') lines(S, dVASIQ(x = S, mu = 0.50, sigma = 0.69, tau = 0.50), col = 2) plot(ecdf(x)) lines(S, pVASIQ(q = S, mu = 0.50, sigma = 0.69, tau = 0.50), col = 2) plot(quantile(x, probs = S), type = "l") lines(qVASIQ(p = S, mu = 0.50, sigma = 0.69, tau = 0.50), col = 2) library(gamlss) set.seed(123) data <- data.frame(y = rVASIQ(n = 100, mu = 0.50, sigma = 0.69, tau = 0.50)) tau <- 0.5 fit <- gamlss(y ~ 1, data = data, family = VASIQ(mu.link = 'logit', sigma.link = 'logit')) 1 /(1 + exp(-fit$mu.coefficients)); 1 /(1 + exp(-fit$sigma.coefficients)) set.seed(123) n <- 100 x <- rbinom(n, size = 1, prob = 0.5) eta <- 0.5 + 1 * x; mu <- 1 / (1 + exp(-eta)); sigma <- 0.5; y <- rVASIQ(n, mu, sigma, tau = 0.5) data <- data.frame(y, x, tau = 0.5) tau <- 0.5; fit <- gamlss(y ~ x, data = data, family = VASIQ) fittaus <- lapply(c(0.10, 0.25, 0.50, 0.75, 0.90), function(Tau) { tau <<- Tau; gamlss(y ~ x, data = data, family = VASIQ) }) sapply(fittaus, summary)
set.seed(123) x <- rVASIQ(n = 1000, mu = 0.50, sigma = 0.69, tau = 0.50) R <- range(x) S <- seq(from = R[1], to = R[2], length.out = 1000) hist(x, prob = TRUE, main = 'Vasicek') lines(S, dVASIQ(x = S, mu = 0.50, sigma = 0.69, tau = 0.50), col = 2) plot(ecdf(x)) lines(S, pVASIQ(q = S, mu = 0.50, sigma = 0.69, tau = 0.50), col = 2) plot(quantile(x, probs = S), type = "l") lines(qVASIQ(p = S, mu = 0.50, sigma = 0.69, tau = 0.50), col = 2) library(gamlss) set.seed(123) data <- data.frame(y = rVASIQ(n = 100, mu = 0.50, sigma = 0.69, tau = 0.50)) tau <- 0.5 fit <- gamlss(y ~ 1, data = data, family = VASIQ(mu.link = 'logit', sigma.link = 'logit')) 1 /(1 + exp(-fit$mu.coefficients)); 1 /(1 + exp(-fit$sigma.coefficients)) set.seed(123) n <- 100 x <- rbinom(n, size = 1, prob = 0.5) eta <- 0.5 + 1 * x; mu <- 1 / (1 + exp(-eta)); sigma <- 0.5; y <- rVASIQ(n, mu, sigma, tau = 0.5) data <- data.frame(y, x, tau = 0.5) tau <- 0.5; fit <- gamlss(y ~ x, data = data, family = VASIQ) fittaus <- lapply(c(0.10, 0.25, 0.50, 0.75, 0.90), function(Tau) { tau <<- Tau; gamlss(y ~ x, data = data, family = VASIQ) }) sapply(fittaus, summary)