Learn R Programming

BCSreg (version 1.1.1)

summary.BCSreg: Summarizing a Box-Cox Symmetric Regression Fit

Description

summary method for class "BCSreg".

Usage

# S3 method for BCSreg
summary(object, ...)

# S3 method for summary.BCSreg print(x, digits = getOption("digits"), ...)

Value

The function summary.BCSreg returns an object of class "summary.BCSreg", which consists of a list with the following components:

call

the original function call, given in object.

mu

summary statistics for the scale submodel.

sigma

summary statistics for the relative dispersion submodel.

lambda

summary statistics for the skewness parameter. If this parameter is not statistically different from zero, the fitted Box-Cox symmetric (BCS) distribution can be reduced to a more parsimonious log-symmetric distribution.

alpha

summary statistics for the zero-adjustment submodel when a zero-adjusted model is considered; and NULL, otherwise.

zeta

the specified value for the extra parameter of the fitted BCS distribution, if applicable.

family

the generating family of the fitted BCS distribution.

link

a list with elements "mu" and "sigma" with the specified link functions for the mu and sigma regression structures, respectively. If the model is zero-adjusted, the element "alpha" will also be returned with the link function for the regression structure of the zero-adjustment parameter.

converged

logical indicating successful convergence of the iterative process.

iterations

number of iterations reached until the optimization algorithm converges.

logLik

log-likelihood of the fitted model.

df

number of model parameters

residuals

a vector of quantile residuals.

pseudo.r.squared

pseudo R-squared value.

Upsilon.zeta

an overall goodness-of-fit measure.

v

a vector with the \(v(z)\) values for all the observations.

AIC, BIC

Akaike and Bayesian information criteria.

Arguments

object

an object of class "BCSreg", a result of a call to BCSreg.

...

further arguments passed to or from other methods.

x

an object of class "summary.BCSreg", a result of a call to summary.BCSreg.

digits

a non-null value for digits specifies the minimum number of significant digits to be printed in values.

Author

Francisco F. de Queiroz <felipeq@ime.usp.br>

Rodrigo M. R. de Medeiros <rodrigo.matheus@ufrn.br>

Details

An object of class "summary.BCSreg" provides additional information from a Box-Cox symmetric or zero-adjusted Box-Cox symmetric regression fit. In addition to summary tables with estimates, standard errors, and individual significance tests of the regression coefficients, it also provides the quantile residuals (Dunn and Smyth, 1996) and goodness-of-fit measures.

The goodness-of-fit measures include:

  • A pseudo-\(R_p^2\) defined based on Ferrari and Cribari-Neto (2004) as the square of the sample correlation coefficient between \(d_1(y)\) and \(d_1(\widehat{y})\), where \(y\) is the response variable, \(\widehat{y}\) is the adjusted median, and \(d_1()\) is the link function (link) used in the regression structure for the scale parameter. By definition, \(0 \leq R_p^2 \leq 1\), and perfect agreement between the fitted values and the response yields \(R_p^2 = 1\).

  • A general goodness-of-fit measure based on Vanegas and Paula (2016), defined as $$ \Upsilon_\zeta = \frac{1}{n} \sum_{i=1}^n \left| \Phi^{-1}[\widehat{F}(y_{(i)})] - \nu_{(i)} \right|, $$ where \(y_{(i)}\) is the \(i\)th order statistic of the response, \(\nu_{(i)}\) is the expected value of the \(i\)th order statistic from a standard normal sample of size \(n\), \(\Phi(\cdot)\) denotes the cumulative distribution function of the standard normal distribution, and \(\widehat{F}(\cdot)\) denotes the fitted cumulative distribution function of the assumed distribution for the response.

  • A weighting function \(v(\cdot)\) that plays a role in the parameter estimation process, providing information about the individual contribution of each observation. It depends on the generating density function and is constant for distributions generated by the normal family (family = "NO").

References

Dunn, P. K. and Smyth, G. K. (1996). Randomized quantile residuals. Journal of Computational and Graphical Statistics, 5, 236---244.

Ferrari, S., and Cribari-Neto, F. (2004). Beta regression for modelling rates and proportions. Journal of Applied Statistics, 31, 799---815.

Medeiros, R. M. R., and Queiroz, F. F. (2025). Flexible modeling of nonnegative continuous data: Box-Cox symmetric regression and its zero-adjusted extension.

Vanegas, L. H., and Paula, G. A. (2016). Log-symmetric distributions: statistical properties and parameter estimation. Brazilian Journal of Probability and Statistics, 30,196---220

Examples

Run this code
# BCS regression for strictly positive response variables

## Data set: raycatch (for description, run ?raycatch)
hist(raycatch$cpue, xlab = "Catch per unit effort")
plot(cpue ~ tide_phase, raycatch, pch = 16,
     xlab = "Tide phase", ylab = "Catch per unit effort")
plot(cpue ~ location, raycatch, pch = 16,
     xlab = "Location", ylab = "Catch per unit effort")
plot(cpue ~ max_temp, raycatch, pch = 16,
     xlab = "Maximum temperature", ylab = "Catch per unit effort")

## Fit examples

### Fit a single Box-Cox normal regression model:
fit_bcno1 <- BCSreg(cpue ~ location + tide_phase + max_temp, raycatch)
summary(fit_bcno1)

# Other quantities can be obtained from a summary.BCSreg object:
aux <- summary(fit_bcno1)
class(aux)
str(aux)

### Fit a double Box-Cox normal regression model:
fit_bcno2 <- BCSreg(cpue ~ location + tide_phase |
                      location + tide_phase + max_temp, raycatch)
summary(fit_bcno2)


### Fit a double Box-Cox power exponential regression model (family = "PE"):
fit_bcpe <- BCSreg(cpue ~ location + tide_phase + max_temp |
                     location + tide_phase + max_temp, raycatch, family = "PE", zeta = 4)
summary(fit_bcpe)

### Fit a double log-power exponential regression model (lambda = 0):
fit_lpe <- BCSreg(cpue ~ location + tide_phase + max_temp |
                    location + tide_phase + max_temp, raycatch, family = "PE",
                  zeta = 4, lambda = 0)
summary(fit_lpe)

# Zero-adjusted BCS (ZABCS) regression for nonnegative response variables

## Data set: renewables2015 (for description, run ?renewables2015)
plot(ecdf(renewables2015$renew_elec_output), cex = 0.3, main = "Empirical CDF")
abline(h = mean(renewables2015$renew_elec_output == 0), col = "grey", lty = 3)
text(1250, 0.155, paste0("prop. of zeros: ~0.12"), col = "blue")

plot(renew_elec_output ~ adj_sav_edu, renewables2015, pch = 16,
     xlab = "Education expenditure (percent of GNI)",
     ylab = "Renewable electricity output (in TWh)")
plot(renew_elec_output ~ agri_land, renewables2015, pch = 16,
     xlab = "Matural logarithm of total agricultural land area",
     ylab = "Renewable electricity output (in TWh)")

## Fit examples

### Fit a single zero-adjusted Box-Cox normal regression model:
fit_zabcno1 <- BCSreg(renew_elec_output ~ adj_sav_edu + agri_land, renewables2015)
summary(fit_zabcno1)

# Other quantities obtained from a zero-adjusted fit:
aux <- summary(fit_zabcno1)
str(aux)

### Fit a double zero-adjusted Box-Cox normal regression model:
fit_zabcno2 <- BCSreg(renew_elec_output ~ adj_sav_edu + agri_land |
                        adj_sav_edu + agri_land, renewables2015)
summary(fit_zabcno2)

### Fit a triple zero-adjusted Box-Cox normal regression model:
fit_zabcno3 <- BCSreg(renew_elec_output ~ adj_sav_edu + agri_land |
                        adj_sav_edu + agri_land |
                        adj_sav_edu + agri_land, renewables2015)
summary(fit_zabcno3)


### Fit a triple zero-adjusted Box-Cox power exponential regression model (family = "PE"):
fit_zabcpe <- BCSreg(renew_elec_output ~ adj_sav_edu + agri_land |
                       adj_sav_edu + agri_land |
                       adj_sav_edu + agri_land, renewables2015, family = "PE", zeta = 4)
summary(fit_zabcpe)

### Fit a triple zero-adjusted log-power exponential regression model (lambda = 0):
fit_zalpe <- BCSreg(renew_elec_output ~ adj_sav_edu + agri_land |
                      adj_sav_edu + agri_land |
                      adj_sav_edu + agri_land, renewables2015, family = "PE",
                    zeta = 4, lambda = 0)
summary(fit_zalpe)
summary(fit_lpe)

Run the code above in your browser using DataLab