--- title: "Spline ML example" output: rmarkdown::html_vignette: fig_width: 5 fig_height: 5 vignette: > %\VignetteIndexEntry{Spline ML example} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>", echo=TRUE, results='hold', warning=FALSE, cache=FALSE, eval=TRUE, message=FALSE, tidy.opts=list(width.cutoff=75), tidy=TRUE, # --- The size optimization flags --- dev = 'png', # Forces compressed PNG files instead of heavy vector shapes dpi = 72, # Slashes the image resolution down to web-standard 72 DPI fig.retina = NULL # Disables high-density Retina scaling which doubles image sizes ) old <- options(scipen = 1, digits = 4) ``` ```{r setup} library(circularEV) plotly_installed <- requireNamespace("plotly", quietly = TRUE) if(!plotly_installed) { message("Skipping plotly-based figures because the 'plotly' package is not installed.") } ``` ### Reading Data ```{r} 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) ``` ```{r} PlotData(Data=Data, drc=drc, thr=NULL, pointSize=1, cex.axis=15, cex.lab=2, thrWidth=2) if(plotly_installed) { PolarPlotData(Data=Data, drc=drc, thr=NULL, pointSize=4, fontSize=14, thrWidth=4, ylim=c(0,max(Data)) ) } else { message("plotly not installed: skipping PolarPlotData output") } ``` ### Threshold selection Grid values at which the estimation is performed: ```{r} thetaVec <- 1:360 ``` ```{r, eval=F} thrResultML <- ThrSelection(Data=Data, drc=drc, h=60, b=0.35, thetaGrid=thetaVec, EVIestimator="ML", useKernel=TRUE, concent=10, bw=30, numCores=2)$thr ``` ```{r, echo=F} data(thresholdExampleML) thrResultML <- thresholdExampleML ``` ```{r} PlotData(Data=Data, drc=drc, thr=thrResultML, pointSize=1, cex.axis=15, cex.lab=2, thrWidth=2) if(plotly_installed) { PolarPlotData(Data=Data, drc=drc, thr=thrResultML, pointSize=4, fontSize=12, thrWidth=4, ylim=c(0,max(Data))) } else { message("plotly not installed: skipping PolarPlotData output") } ``` ### Estimation of spline ML model The code below performs optimisation for a unique pair of lambda and kappa. ```{r, results='hide'} 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) ``` ```{r} 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) ``` ### High Quantiles ```{r} 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) ``` ```{r} # 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") } ``` ```{r} # 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) if(plotly_installed) { PolarPlotRL(RLBootList=RLBoot, thetaGrid=thetaVec, Data=Data, drc=drc, TTs=c(100, 10000), whichPlot=2, alpha=0.05, ylim=c(0, 25), pointSize=4, fontSize=12, lineWidth=2) } else { message("plotly not installed: skipping PolarPlotRL output") } ``` ```{r, include = FALSE} options(old) ```