Learn R Programming

copBasic (version 1.7.1)

qua.regressCOP2: Perform Quantile Regression using a Copula by Numerical Derivative Method for U with respect to V

Description

Perform quantile regression (Nelsen, 2006, pp. 217--218) using a copula by numerical derivatives of the copula. If $X$ and $Y$ are random variables having quantile functions $x(F)$ and $y(G)$ and letting $x=\tilde{x}(y)$ denote a solution to $\mathrm{Pr}[X \le x\mid Y = y] = F$, where $F$ is a nonexceedance probability. Then the curve $x=\tilde{x}(y)$ is the quantile regression curve of $U$ or $X$ with respect to $V$ or $Y$, respectively. If $F=1/2$, then median regression is performed (med.regressCOP2). Using copulas, the quantile regression is expressed as $$\mathrm{Pr}[X \le x\mid Y = y] = \mathrm{Pr}[U \le F(x) \mid V = F] = \mathrm{Pr}[U \le u\mid V = F] = \frac{\delta \mathbf{C}(u,v)}{\delta v}\mbox{,}$$ where $v = G(y)$ and $u = F(x)$. The general algorithm is
  1. Set$\delta \mathbf{C}(u,v)/\delta v = F$,
  2. Solve the regression curve$u = \tilde{u}(v)$(accomplished byderCOPinv2), and
  3. Replace$u$by$x(u)$and$v$by$y(v)$.

The last step is optional as step two produces the regression in probability space, which might be desired, and step 3 actually transforms the probability regressions into the quantiles of the respective random variables.

Usage

qua.regressCOP2(f=0.5, v=seq(0.01,0.99, by=0.01), cop=NULL, para=NULL, ...)

Arguments

f
A single value of nonexceedance probability $F$ to perform regression at and defaults to median regression $F=1/2$;
v
Nonexceedance probability $v$ in the $Y$ direction;
cop
A copula function;
para
Vector of parameters or other data structure, if needed, to pass to the copula; and
...
Additional arguments to pass.

Value

  • An Rdata.frame of the regressed probabilities of $U$ and $V=v$ is returned.

References

Nelsen, R.B., 2006, An introduction to copulas: New York, Springer, 269 p.

See Also

med.regressCOP2, derCOPinv2

Examples

Run this code
# Use a positively associated Plackett copula and perform quantile regression
theta <- 0.10
R <- qua.regressCOP2(cop=PLACKETTcop, para=theta) # 50th percentile regression
plot(R$U,R$V, type="l", lwd=6, xlim=c(0,1), ylim=c(0,1), col=8)
lines((1+(theta-1)*R$V)/(theta+1),R$V, col=4, lwd=1) # theoretical for Plackett,
# compare the theoretical form to that in qua.regressCOP---just swap terms around
# because of symmetry
R <- qua.regressCOP2(f=0.90, cop=PLACKETTcop, para=theta) # 90th-percentile regression
lines(R$U,R$V, col=2, lwd=2)
R <- qua.regressCOP2(f=0.10, cop=PLACKETTcop, para=theta) # 10th-percentile regression
lines(R$U,R$V, col=2, lty=2)
mtext("Quantile Regression U wrt V for Plackett copula")

Run the code above in your browser using DataLab