This package provides tools for fitting kernel quantile regression.
The strengths and improvements that this package offers relative to other quantile regression packages are as follows:
Compiled Fortran code significantly speeds up the kernel quantile regression estimation process.
Solve non-crossing kernel quantile regression.
For this getting-started vignette, first, we will use a real data set
named as GAGurine in the package MASS, which
collects the concentration of chemical GAGs in the urine of 314 children
aged 0 to 17 years. We used the concentration of GAG as the response
variable.
Then the kernel quantile regression model is formulated as the sum of check loss and an \(\ell_2\) penalty:
\[ \min_{\alpha\in\mathbb{R}^{n},b\in\mathbb{R}}\frac{1}{n} \sum_{i=1}^{n}\rho_{\tau}(y_{i}-b-\mathbf{K}_{i}^{\top}\alpha) +\frac{\lambda}{2} \alpha^{\top}\mathbf{K}\alpha \qquad (*). \]
kqr()Given an input matrix x, a quantile level
tau, and a response vector y, a kernel
quantile regression model is estimated for a sequence of penalty
parameter values. The other main arguments the users might supply
are:
lambda: a user-supplied lambda
sequence.is_exact: exact or approximated solutions.cv.kqr()This function performs k-fold cross-validation (cv). It takes the
same arguments as kqr.
A number of S3 methods are provided for nckqr
object.
coef() and predict() return a matrix of
coefficients and predictions \(\hat{y}\) given a matrix x at
each lambda respectively. The optional s argument may
provide a specific value of \(\lambda\)
(not necessarily part of the original sequence).nckqr()Given an input matrix x, a sequence of quantile levels
tau, and a response vector y, a non-crossing
kernel quantile regression model is estimated for two sequences of
penalty parameter values. It takes the same arguments x,
y,is_exact, which are specified above. The
other main arguments the users might supply are:
lambda2: a user-supplied lambda1
sequence for the L2 penalty.
lambda1: a user-supplied lambda2
sequence for the smooth ReLU penalty.
cv.nckqr()This function performs k-fold cross-validation (cv) for selecting the
tuning parameter ‘lambda2’ of non-crossing kernel quantile regression.
It takes the same arguments as nckqr.
l2_list <- 10^(seq(1, -4, length.out=10))
cv.fit1 <- cv.nckqr(x, y, lambda1=10, lambda2=l2_list, tau=tau)A number of S3 methods are provided for nckqr
object.
coef() and predict() return an array of
coefficients and predictions \(\hat{y}\) given a matrix X and
lambda2 at each lambda1 respectively. The optional
s1 argument may provide a specific value of \(\lambda_1\) (not necessarily part of the
original sequence).coef <- coef(fit1, s2=1e-4, s1 = l1_list[2:3])
predict(fit1, x, tail(x), s1=l1_list[1:3], s2=l2)
#> , , 1
#>
#> [,1] [,2] [,3]
#> [1,] 2.142394 2.273287 2.338837
#> [2,] 2.013088 2.032177 2.073685
#> [3,] 1.972057 2.065825 2.231912
#> [4,] 1.932055 2.207069 2.647345
#> [5,] 1.931853 2.402301 3.121885
#> [6,] 2.650067 4.616806 7.272911
#>
#> , , 2
#>
#> [,1] [,2] [,3]
#> [1,] 2.142393 2.273286 2.338839
#> [2,] 2.013086 2.032177 2.073687
#> [3,] 1.972055 2.065825 2.231914
#> [4,] 1.932053 2.207070 2.647346
#> [5,] 1.931851 2.402302 3.121886
#> [6,] 2.650068 4.616805 7.272911
#>
#> , , 3
#>
#> [,1] [,2] [,3]
#> [1,] 2.142350 2.273265 2.338919
#> [2,] 2.012995 2.032160 2.073763
#> [3,] 1.971969 2.065819 2.231972
#> [4,] 1.931984 2.207082 2.647372
#> [5,] 1.931804 2.402326 3.121885
#> [6,] 2.650180 4.616830 7.272831