alsqreg                 package:VGAM                 R Documentation

_A_s_y_m_m_e_t_r_i_c _L_e_a_s_t _S_q_u_a_r_e_s _Q_u_a_n_t_i_l_e _R_e_g_r_e_s_s_i_o_n

_D_e_s_c_r_i_p_t_i_o_n:

     Quantile regression using asymmetric least squares error loss.

_U_s_a_g_e:

     alsqreg(w=1, method.init=1)

_A_r_g_u_m_e_n_t_s:

       w: Positive constant controlling the percentile. The larger the
          value the larger the fitted percentile value (the proportion
          of points below the ``w-regression plane''). The default
          value of unity results in the ordinary least squares (OLS)
          solution.

method.init: Integer, either 1 or 2 or 3. Initialization method. Choose
          another value if convergence fails.

_D_e_t_a_i_l_s:

     This method was proposed by Efron (1991) and full details can be
     obtained there. Equation numbers below refer to that article. The
     model is essentially a linear model (see 'lm'), however, the
     asymmetric squared error loss function for a residual r is r^2 if
     r <= 0 and w*r^2 if r > 0. The solution is the set of regression
     coefficients that minimize the sum of these over the data set,
     weighted by the 'weights' argument (so that it can contain
     frequencies). Newton-Raphson estimation is used here.

_V_a_l_u_e:

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

_W_a_r_n_i_n_g:

     The 'loglikelihood' slot currently does not return the
     log-likelihood but negative the total asymmetric squared error
     loss (2.5).

_N_o_t_e:

     On fitting, the 'extra' slot has list components '"w"' and
     '"percentile"'. The latter is the percent of observations below
     the ``w-regression plane'', which is the fitted values.

     One difficulty is finding the 'w' value giving a specified
     percentile. One solution is to fit the model within a root finding
     function such as 'uniroot'; see the example below.

     For 'alsqreg' objects, methods functions for the generic functions
     'qtplot' and 'cdf' have not been written yet.

_A_u_t_h_o_r(_s):

     Thomas W. Yee

_R_e_f_e_r_e_n_c_e_s:

     Efron, B. (1991) Regression percentiles using asymmetric squared
     error loss. _Statistica Sinica_, *1*, 93-125.

_S_e_e _A_l_s_o:

     'bminz', 'lms.bcn' and similar variants are alternative methods
     for quantile regression.

_E_x_a_m_p_l_e_s:

     # Example 1
     data(bminz)
     o = with(bminz, order(age))
     bminz = bminz[o,]  # Sort by age
     fit = vglm(BMI ~ bs(age), fam=alsqreg(w=0.07), data=bminz)
     fit # Note "loglikelihood" is -total asymmetric squared error loss (2.5)
     fit@extra  # Gives the w value and the percentile
     coef(fit)
     coef(fit, matrix=TRUE)

     ## Not run: 
     # Quantile plot
     with(bminz, plot(age, BMI, col="blue", main=
          paste(round(fit@extra$percentile, dig=1), "percentile curve")))
     with(bminz, lines(age, c(fitted(fit)), col="red"))
     ## End(Not run)


     # Example 2
     # Find the w values that give the 25, 50 and 75 percentiles
     findw = function(w, percentile=50) {
         fit = vglm(BMI ~ bs(age), fam=alsqreg(w=w), data=bminz)
         fit@extra$percentile - percentile
     }
     ## Not run: 
     # Quantile plot
     with(bminz, plot(age, BMI, col="blue", las=1, main=
          "25, 50 and 75 percentile curves"))
     ## End(Not run)
     for(myp in c(25,50,75)) {
         bestw = uniroot(f=findw, interval=c(1/10^4, 10^4), percentile=myp)
         fit = vglm(BMI ~ bs(age), fam=alsqreg(w=bestw$root), data=bminz)
     ## Not run: 
         with(bminz, lines(age, c(fitted(fit)), col="red"))
     ## End(Not run)
     }

