An error occurred while loading the file. Please try again.
-
Le Roux Erwan authored
[exceeding] add full diagnositic plot (qqplot & intensity plots) for gumbel stationary & add gumbel gof tests from r package
2435b71a
# Title : TODO
# Objective : TODO
# Created by: erwan
# Created on: 15/05/2020
##
## Exported symobls in package `gnFit`
##
## Exported package methods
gnfit_fixed <- function (dat, dist, df = NULL, pr = NULL, threshold = NULL)
{
dat <- as.numeric(dat)
x <- NULL
z <- list()
op <- par(mfrow = c(1, 2))
if (is.null(pr)) {
if (dist == "gev" | dist == "gpd")
stop("Enter Parameters!")
else if (dist == "t") {
if (df > 2) {
loc <- mean(dat)
sc <- sqrt((df - 2) * var(dat)/df)
xdat <- (dat - loc)/sc
prob <- pt(xdat, df)
}
else stop("DF must be > 2")
}
else if (dist == "gum") {
sc <- sqrt(6 * var(dat)/pi^2)
loc <- mean(dat) - 0.577 * sc
pr <- c(loc, sc, 0)
prob <- gevf(pr, dat)
}
else {
loc <- mean(dat)
ifelse(dist == "norm", sc <- sd(dat), NA)
ifelse(dist == "laplace", sc <- sqrt(var(dat)/2),
NA)
ifelse(dist == "logis", sc <- sqrt(3 * var(dat)/pi^2),
NA)
prob <- get(paste0("p", dist))(dat, loc, sc)
}
}
else {
if (dist == "gev") {
prob <- gevf(pr, dat)
}
else if (dist == "gum") {
pr[3] <- 0
prob <- gevf(pr, dat)
}
else if (dist == "gpd")
if (!is.null(threshold)) {
u <- threshold
dat <- dat[dat > u]
prob <- gpdf(pr, u, dat)
}
else stop("threshold is missing!")
}
n <- length(dat)
k <- seq(1:n)
qnor <- qnorm(sort(prob))
pnor <- pnorm((qnor - mean(qnor))/sd(qnor))
w <- round((sum((pnor - (2 * k - 1)/(2 * n))^2) + 1/(12 *
n)) * (1 + 0.5/n), 4)
if (w < 0.0275) {
pval <- 1 - exp(-13.953 + 775.5 * w - 12542.61 * w^2)
}
else if (w < 0.051) {
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
pval <- 1 - exp(-5.903 + 179.546 * w - 1515.29 * w^2)
}
else if (w < 0.092) {
pval <- exp(0.886 - 31.62 * w + 10.897 * w^2)
}
else if (w < 1.1) {
pval <- exp(1.111 - 34.242 * w + 12.832 * w^2)
}
else {
warning("p-value is smaller than 7.37e-10")
}
z$Wpval <- pval
A <- (-n - sum((2 * k - 1) * log(pnor) + (2 * n + 1 - 2 *
k) * log(1 - pnor))/n) * (1 + 0.75/n + 2.25/n^2)
A <- round((1 + 0.75/n + 2.25/n^2) * A, 4)
if (A < 0.2) {
pval <- 1 - exp(-13.436 + 101.14 * A - 223.73 * A^2)
}
else if (A < 0.34) {
pval <- 1 - exp(-8.318 + 42.796 * A - 59.938 * A^2)
}
else if (A < 0.6) {
pval <- exp(0.9177 - 4.279 * A - 1.38 * A^2)
}
else if (A < 10) {
pval <- exp(1.2937 - 5.709 * A + 0.0186 * A^2)
}
else {
warning("p-value is smaller than 7.37e-10")
}
z$Apval <- pval
z$Cram <- w
z$Ander <- A
invisible(z)
}
## Package Data
# none
## Package Info
.skeleton_package_title = "Goodness of Fit Test for Continuous Distribution Functions"
.skeleton_package_version = "0.2.0"
.skeleton_package_depends = ""
.skeleton_package_imports = "ismev,rmutil"
## Internal
.skeleton_version = 5
## EOF