Как пакет ismev рассчитывает дисперсию уровня доходности для распределения GEV? - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь понять, как пакет ismev вычисляет дисперсию уровня доходности для распределения GEV. Я застрял со следующими строками кода.

q <- gevq(a, 1 - f)
d <- t( gev.rl.gradient( a=a, p=1-f))
v <- apply(d, 1, q.form, m = mat)
plot(-1/log(f), q, log = "x", type = "n", xlim = c(0.1, 1000), ylim = c(
    min(dat, q), max(dat, q)), xlab = "Return Period", ylab = 
    "Return Level")
title("Return Level Plot")
lines(-1/log(f), q)
lines(-1/log(f), q + 1.96 * sqrt(v), col = 4)
lines(-1/log(f), q - 1.96 * sqrt(v), col = 4)
points(-1/log((1:length(dat))/(length(dat) + 1)), sort(dat))

gev.rl.gradient вычисляет градиент, как указано в книге Коулза (2001). Функция gevq вычисляет уровень доходности, как указано в книге Коулза. mat - ковариационная матрица. Я не совсем понимаю эту строчку. v <- apply(d, 1, q.form, m = mat). Особенно то, что q.form Функция gevq дается, как показано ниже.

"gevq"<-
function(a, p)
{
    if(a[3] != 0)
        a[1] + (a[2] * (( - log(1 - p))^( - a[3]) - 1))/a[3]
    else gum.q(p, a[1], a[2])
}

Когда я вычисляю дисперсию, как указано в книге Коулза. То есть grad (Zp) T Vgrad (Zp), где V - та же ковариационная матрица. Градиент Zp рассчитывается с использованием того же уравнения, что и в gev.rl.gradient. Это дает мне гораздо более высокую дисперсию, чем рассчитывается для графиков в пакете ismev. Что я здесь делаю не так?

...