## ----setup, include = FALSE----------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ------------------------------------------------------------------------
library(fastkqr)

set.seed(1)
x <- matrix(rnorm(80), 40, 2)
y <- sin(x[, 1]) + 0.5 * x[, 2] + rnorm(40, sd = 0.2)
lambda <- 10^seq(0, -2, length.out = 3)

## ------------------------------------------------------------------------
fit <- kqr(x, y, lambda = lambda, tau = 0.5)
coef_fit <- coef(fit)
pred_fit <- predict(fit, x, x[1:5, , drop = FALSE])
dim(coef_fit)
dim(pred_fit)

## ------------------------------------------------------------------------
foldid <- rep(1:3, length.out = nrow(x))
cv_fit <- cv.kqr(x, y, lambda = lambda, tau = 0.5, foldid = foldid)
cv_fit$lambda.min

## ------------------------------------------------------------------------
tau <- c(0.25, 0.5, 0.75)
lambda1 <- 1
lambda2 <- lambda

fit_nc <- nckqr(
  x, y,
  lambda1 = lambda1,
  lambda2 = lambda2,
  tau = tau
)

coef_nc <- coef(fit_nc, s1 = lambda1, s2 = lambda2[1])
pred_nc <- predict(fit_nc, x, x[1:5, , drop = FALSE],
  s1 = lambda1, s2 = lambda2[1])
dim(coef_nc)
dim(pred_nc)

## ------------------------------------------------------------------------
cv_fit_nc <- cv.nckqr(
  x, y,
  lambda1 = lambda1,
  lambda2 = lambda2,
  tau = tau,
  foldid = foldid
)
cv_fit_nc$lambda.min

## ------------------------------------------------------------------------
fit_lqr <- qr(x, y, lambda = lambda, tau = 0.5)
coef_lqr <- coef(fit_lqr)
pred_lqr <- predict(fit_lqr, x[1:5, , drop = FALSE])
dim(coef_lqr)
dim(pred_lqr)

## ------------------------------------------------------------------------
cv_fit_lqr <- cv.qr(x, y, lambda = lambda, tau = 0.5, foldid = foldid)
cv_fit_lqr$lambda.min

