Convex expectile regression

As shown in Kuosmanen et al (2015), the convex quantile regression may suffer from the non-uniqueness problem due to that Problem (2.7) is a linear programming problem. To address this problem, Kuosmanen et al (2015) purpose a convex expectile regression (CER) approach, where a quadratic objective function is used to ensure unique estimates of the quantile functions.

\begin{alignat}{2} \underset{\alpha,\boldsymbol{\beta},{{\varepsilon}^{\text{+}}},{\varepsilon}^{-}}{\mathop{\min}}&\, \tilde{\tau} \sum\limits_{i=1}^n(\varepsilon _i^{+})^2+(1-\tilde{\tau} )\sum\limits_{i=1}^n(\varepsilon_i^{-})^2 &{}& \\ \textit{s.t.}\quad & y_i=\alpha_i+ \boldsymbol{\beta}_i^{'}x_i+\varepsilon _i^{+}-\varepsilon _i^{-} &{}& \forall i \notag \\ & \alpha_i+\boldsymbol{\beta}_i^{'}x_i \le \alpha_h+\boldsymbol{\beta}_h^{'}x_i &{}& \forall i,h \notag \\ & \boldsymbol{\beta}_i\ge 0 &{}& \forall i \notag \\ & \varepsilon _i^{+}\ge 0,\ \varepsilon_i^{-} \ge 0 &{}& \forall i \notag \end{alignat}

Example: Expectile estimation [.ipynb]

# import packages
from pystoned import CQER
from pystoned.constant import CET_ADDI, FUN_PROD, OPT_LOCAL, RTS_VRS
from pystoned import dataset as dataset

# import the GHG example data
data = dataset.load_GHG_abatement_cost(x_select=['HRSN', 'CPNK', 'GHG'], y_select=['VALK'])

# calculate the expectile model
model = CQER.CER(y=data.y, x=data.x, tau=0.5, z=None, cet=CET_ADDI, fun=FUN_PROD, rts=RTS_VRS)
model.optimize(OPT_LOCAL)

# display estimated alpha and beta
model.display_alpha()
model.display_beta()

# display estimated residuals
model.display_positive_residual()
model.display_negative_residual()