library(circularEV)
plotly_installed <- requireNamespace("plotly", quietly = TRUE)
if(!plotly_installed) {
message("Skipping plotly-based figures because the 'plotly' package is not installed.")
}data(HsSP)
data(drc)
timeRange <- 54.5
idx <- order(drc)
drc <- drc[idx]
Data <- HsSP[idx]
set.seed(1234)
Data <- Data + runif(length(Data), -1e-4, 1e-4)Grid values at which the estimation is performed:
thrResultML <- ThrSelection(Data=Data, drc=drc, h=60, b=0.35, thetaGrid=thetaVec,
EVIestimator="ML", useKernel=TRUE, concent=10, bw=30, numCores=2)$thrThe code below performs optimisation for a unique pair of lambda and kappa.
lambda <- 100
kappa <- 40
thrPerObs <- thrResultML[drc]
excess <- Data - thrPerObs
drcExcess <- drc[excess>0]
excess <- excess[excess>0]
splineFit <- SplineML(excesses = excess, drc = drcExcess, nBoot = 30,
numIntKnots = 16, lambda=lambda, kappa=kappa, numCores=2)xiBoot <- splineFit$xi
sigBoot <- splineFit$sig
PlotParamEstim(bootEstimates=xiBoot, thetaGrid=0:360, ylab=bquote(hat(xi)),
alpha=0.05, ylim=NULL, cex.axis=15, cex.lab=2, thrWidth=2)
PlotParamEstim(bootEstimates=sigBoot, thetaGrid=0:360, ylab=bquote(hat(sigma)),
alpha=0.05, ylim=NULL, cex.axis=15, cex.lab=2, thrWidth=2)h <- 60 # needed for calculating local probability of exceedances
RLBoot <- CalcRLsplineML(Data=Data, drc=drc, xiBoot=xiBoot, sigBoot=sigBoot, h=h,
TTs=c(100, 10000), thetaGrid=thetaVec,
timeRange=timeRange, thr=thrResultML)# 100-year level
PlotRL(RLBootList=RLBoot, thetaGrid=thetaVec, Data=Data, drc=drc,
TTs=c(100, 10000), whichPlot=1, alpha=0.05, ylim=NULL,
pointSize=1, cex.axis=15, cex.lab=2, thrWidth=2)if(plotly_installed) {
PolarPlotRL(RLBootList=RLBoot, thetaGrid=thetaVec, Data=Data, drc=drc,
TTs=c(100, 10000), whichPlot=1, alpha=0.05, ylim=c(0, 25),
pointSize=4, fontSize=12, lineWidth=2)
} else {
message("plotly not installed: skipping PolarPlotRL output")
}# 10000-year level
PlotRL(RLBootList=RLBoot, thetaGrid=thetaVec, Data=Data, drc=drc,
TTs=c(100, 10000), whichPlot=2, alpha=0.05, ylim=NULL,
pointSize=1, cex.axis=15, cex.lab=2, thrWidth=2)