Learn R Programming

scoringfunctions (version 1.1)

expectile_sf: Asymmetric piecewise quadratic scoring function (expectile scoring function, expectile loss function)

Description

The function expectile_sf computes the asymmetric piecewise quadratic scoring function (expectile scoring function) at a specific level \(p\), when \(y\) materialises and \(x\) is the predictive expectile at level \(p\).

The asymmetric piecewise quadratic scoring function is defined by eq. (27) in Gneiting (2011).

Usage

expectile_sf(x, y, p)

Value

Vector of expectile losses.

Arguments

x

Predictive expectile (prediction) at level \(p\). It can be a vector of length \(n\) (must have the same length as \(y\)).

y

Realisation (true value) of process. It can be a vector of length \(n\) (must have the same length as \(x\)).

p

It can be a vector of length \(n\) (must have the same length as \(y\)).

Details

The asymmetric piecewise quadratic scoring function is defined by:

$$ S(x, y, p) := |\textbf{1} \lbrace x \geq y \rbrace - p| (x - y)^2 $$

or equivalently,

$$ S(x, y, p) := p (\max \lbrace -(x - y), 0 \rbrace)^2 + (1 - p) (\max \lbrace x - y, 0 \rbrace)^2 $$

Domain of function:

$$x \in \mathbb{R}$$

$$y \in \mathbb{R}$$

$$0 < p < 1$$

Range of function:

$$S(x, y, p) \geq 0, \forall x, y \in \mathbb{R}, p \in (0, 1)$$

References

Gneiting T (2011) Making and evaluating point forecasts. Journal of the American Statistical Association 106(494):746--762. tools:::Rd_expr_doi("10.1198/jasa.2011.r10138").

Newey WK, Powell JL (1987) Asymmetric least squares estimation and testing. Econometrica 55(4):819--847. tools:::Rd_expr_doi("10.2307/1911031").

Examples

Run this code
# Compute the asymmetric piecewise quadratic scoring function (expectile scoring
# function).

df <- data.frame(
    y = rep(x = 0, times = 6),
    x = c(2, 2, -2, -2, 0, 0),
    p = rep(x = c(0.05, 0.95), times = 3)
)

df$expectile_penalty <- expectile_sf(x = df$x, y = df$y, p = df$p)

print(df)

# The asymmetric piecewise quadratic scoring function (expectile scoring
# function) at level p = 0.5 is half the squared error scoring function.

df <- data.frame(
    y = rep(x = 0, times = 3),
    x = c(-2, 0, 2),
    p = rep(x = c(0.5), times = 3)
)

df$expectile_penalty <- expectile_sf(x = df$x, y = df$y, p = df$p)

df$squared_error <- serr_sf(x = df$x, y = df$y)

print(df)

Run the code above in your browser using DataLab