fExtremes/0000755000176200001440000000000013203520003012200 5ustar liggesusersfExtremes/inst/0000755000176200001440000000000013203504345013170 5ustar liggesusersfExtremes/inst/COPYRIGHT.html0000644000176200001440000002041111645005146015427 0ustar liggesusers Rmetrics::COPYRIGHT

Rmetrics Copyrights


2005-12-18 Built 221.10065

  
________________________________________________________________________________
Copyrights (C) for 

    R:  
      see R's copyright and license file
      
    Version R 2.0.0 claims:
    - The stub packages from 1.9.x have been removed.
    - All the datasets formerly in packages 'base' and 'stats' have
      been moved to a new package 'datasets'. 
    - Package 'graphics' has been split into 'grDevices' (the graphics
      devices shared between base and grid graphics) and 'graphics'
      (base graphics). 
    - Packages must have been re-installed for this version, and
      library() will enforce this.
    - Package names must now be given exactly in library() and
      require(), regardless of whether the underlying file system is
      case-sensitive or not.    

________________________________________________________________________________
for 
    
    Rmetrics:
      (C) 1999-2005, Diethelm Wuertz, GPL
      Diethelm Wuertz 
      www.rmetrics.org
      info@rmetrics.org
 
________________________________________________________________________________
for non default loaded basic packages part of R's basic distribution

    MASS:    
      Main Package of Venables and Ripley's MASS.
      We assume that MASS is available. 
      Package 'lqs' has been returned to 'MASS'.  
      S original by Venables & Ripley.
      R port by Brian Ripley .
      Earlier work by Kurt Hornik and Albrecht Gebhardt.
    methods: 
      Formally defined methods and classes for R objects, plus other 
      programming tools, as described in the reference "Programming 
      with Data" (1998), John M. Chambers, Springer NY. 
      R Development Core Team.
    mgcv:   
      Routines for GAMs and other generalized ridge regression
      with multiple smoothing parameter selection by GCV or UBRE.
      Also GAMMs by REML or PQL. Includes a gam() function.
      Simon Wood 
    nnet: 
      Feed-forward Neural Networks and Multinomial Log-Linear Models
      Original by Venables & Ripley. 
      R port by Brian Ripley .
      Earlier work by Kurt Hornik and Albrecht Gebhardt.
      
________________________________________________________________________________
for the code partly included as builtin functions from other R ports:

    fBasics:CDHSC.F
      GRASS program for distributional testing.
      By James Darrell McCauley 
      Original Fortran Source by Paul Johnson EZ006244@ALCOR.UCDAVIS.EDU>
    fBasics:nortest
      Five omnibus tests for the composite hypothesis of normality
      R-port by Juergen Gross 
    fBasics:SYMSTB.F
      Fast numerical approximation to the Symmetric Stable distribution 
      and density functions.  
      By Hu McCulloch 
    fBasics:tseries
      Functions for time series analysis and computational finance.
      Compiled by Adrian Trapletti 
         
    fCalendar:date     
      The tiny C program from Terry Therneau  is used
      R port by Th. Lumley ,
      K. Halvorsen , and 
      Kurt Hornik 
    fCalendar:holidays
      The holiday information was collected from the internet and 
      governmental sources obtained from a few dozens of websites
    fCalendar:libical
      Libical is an Open Source implementation of the IETF's 
      iCalendar Calendaring and Scheduling protocols. (RFC 2445, 2446, 
      and 2447). It parses iCal components and provides a C API for 
      manipulating the component properties, parameters, and subcomponents.
    fCalendar:vtimezone
      Olsen's VTIMEZONE database consists of data files are released under 
      the GNU General Public License, in keeping with the license options of 
      libical. 
     
    fSeries:bdstest.c
      C Program to compute the BDS Test.
      Blake LeBaron
    fSeries:fracdiff  
      R functions, help pages and the Fortran Code for the 'fracdiff' 
      function are included. 
      S original by Chris Fraley 
      R-port by Fritz Leisch 
      since 2003-12: Martin Maechler
    fSeries:lmtest
      R functions and help pages for the linear modelling tests are included .
      Compiled by Torsten Hothorn ,
      Achim Zeileis , and
      David Mitchell
    fSeries:mda    
      R functions, help pages and the Fortran Code for the 'mars' function
      are implemeted.
      S original by Trevor Hastie & Robert Tibshirani,
      R port by Friedrich Leisch, Kurt Hornik and Brian D. Ripley 
    fSeries:modreg
      Brian Ripley and the R Core Team
    fSeries:polspline   
      R functions, help pages and the C/Fortran Code for the 'polymars' 
      function are implemented
      Charles Kooperberg 
    fSeries:systemfit
      Simultaneous Equation Estimation Package.
      R port by Jeff D. Hamann  and 
      Arne Henningsen 
    fSeries:tseries
      Functions for time series analysis and computational finance.
      Compiled by Adrian Trapletti 
    fSeries:UnitrootDistribution:
      The program uses the Fortran routine and the tables 
      from J.G. McKinnon. 
    fSeries:urca
      Unit root and cointegration tests for time series data.
      R port by Bernhard Pfaff .
     
    fExtremes:evd
      Functions for extreme value distributions.
      R port by Alec Stephenson 
      Function 'fbvpot' by Chris Ferro.
    fExtremes:evir
      Extreme Values in R
      Original S functions (EVIS) by Alexander McNeil 
      R port by Alec Stephenson   
    fExtremes:ismev
      An Introduction to Statistical Modeling of Extreme Values
      Original S functions by Stuart Coles 
      R port/documentation by Alec Stephenson 
      
    fOptions
      Option Pricing formulas are implemented along the book and 
      the Excel spreadsheets of E.G. Haug, "The Complete Guide to Option 
      Pricing"; documentation is partly taken from www.derivicom.com which 
      implements a C Library based on Haug. For non-academic and commercial 
      use we recommend the professional software from "www.derivicom.com".  
    fOptions:SOBOL.F
      ACM Algorithm 659 by P. Bratley and B.L. Fox
      Extension on Algorithm 659 by S. Joe and F.Y. Kuo
    fOptions:CGAMA.F
      Complex gamma and related functions.
      Fortran routines by Jianming Jin.
    fOptions:CONHYP.F
      Confluenet Hypergeometric and related functions.
      ACM Algorithm 707 by mark Nardin, W.F. Perger, A. Bhalla
             
    fPortfolio:mvtnorm
      Multivariate Normal and T Distribution.
      Alan Genz , 
      Frank Bretz 
      R port by Torsten Hothorn 
    fPortfolio:quadprog
      Functions to solve Quadratic Programming Problems.
      S original by Berwin A. Turlach  
      R port by Andreas Weingessel 
    fPortfolio:sn
      The skew-normal and skew-t distributions.
      R port by Adelchi Azzalini 
    fPortfolio:tseries
      Functions for time series analysis and computational finance.
      Compiled by Adrian Trapletti 
 
fExtremes/inst/unitTests/0000755000176200001440000000000013201353165015172 5ustar liggesusersfExtremes/inst/unitTests/Makefile0000644000176200001440000000042213203504345016630 0ustar liggesusersPKG=fExtremes TOP=../.. SUITE=doRUnit.R R=R all: inst test inst: # Install package -- but where ?? -- will that be in R_LIBS ? cd ${TOP}/..;\ ${R} CMD INSTALL ${PKG} test: # Run unit tests export RCMDCHECK=FALSE;\ cd ${TOP}/tests;\ ${R} --vanilla --slave < ${SUITE} fExtremes/inst/unitTests/runit.GevMdaEstimation.R0000644000176200001440000000561111645005146021663 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - 2007, Diethelm Wuertz, GPL # Diethelm Wuertz # info@rmetrics.org # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # FUNCTION: MDA ESTIMATORS: # hillPlot Plot Hill's estimator # shaparmPlot Pickands, Hill & Decker-Einmahl-deHaan Estimator # shaparmPickands Auxiliary function called by shaparmPlot # shaparmHill ... called by shaparmPlot # shaparmDehaan ... called by shaparmPlot ################################################################################ test.hillPlot = function() { # hillPlot Plot Hill's estimator # Graph Frame: par(mfrow = c(2, 2), cex = 0.7) par(ask = FALSE) # Hill Plot: hillPlot(gevSim(n=1000), plottype = "alpha") hillPlot(gevSim(n=1000), plottype = "xi"); grid() # Don't Plot Return Value: hillPlot(gevSim(n=1000), plottype = "alpha", doplot = FALSE) hillPlot(gevSim(n=1000), plottype = "xi", doplot = FALSE); grid() # Return Value: return() } # ------------------------------------------------------------------------------ test.shaparmPlot = function() { # shaparmPlot Pickands, Hill & Decker-Einmahl-deHaan Estimator # Graph Frame: par(mfrow = c(2, 2), cex = 0.7) par(ask = FALSE) # shaparmPlot(x, p = 0.01*(1:10), xiRange = NULL, alphaRange = NULL, # doplot = TRUE, plottype = c("both", "upper")) # Graph Frame: par(mfcol = c(3, 2), cex = 0.7) par(ask = FALSE) shaparmPlot(as.timeSeries(data(bmwRet))) # Print (Results: shaparmPlot(as.timeSeries(data(bmwRet)), doplot = FALSE) # Tailored p: shaparmPlot(as.timeSeries(data(bmwRet)), p = 0.005*(2:20)) # Return Value: return() } ################################################################################ fExtremes/inst/unitTests/runit.ExtremeIndex.R0000644000176200001440000001115311645005146021062 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - 2004, Diethelm Wuertz, GPL # Diethelm Wuertz # info@rmetrics.org # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # FUNCTION: DESCRIPTION: # 'fTHETA' Class representation for extremal index # show.fTHETA S4: Print Method for extremal index # thetaSim Simulates a time series with known theta # FUNCTION: DESCRIPTION: # blockTheta Computes theta from Block Method # clusterTheta Computes theta from Reciprocal Cluster Method # runTheta Computes theta from Run Method # ferrosegersTheta Computes Theta according to Ferro and Seegers # FUNCTION: DESCRIPTION: # exindexesPlot Computes and Plot Theta(1,2,3) # exindexPlot Computes Theta(1,2) and Plot Theta(1) ################################################################################ test.fTHETA = function() { # Slot Names: slotNames("fTHETA") # [1] "call" "data" "theta" "title" "description" # Return Value: return() } # ------------------------------------------------------------------------------ test.thetaSim = function() { # Simulation: # thetaSim(model = c("max", "pair"), n = 100, theta = 0.5) # Max Frechet Series: x = thetaSim("max") class(x) print(x) # Paired Exponential Series: x = thetaSim("pair") class(x) print(x) # Return Value: return() } # ------------------------------------------------------------------------------ test.thetaFit = function() { # Parameter Estimation: x.ts = thetaSim("max", n=22000) class(x.ts) # Parameter Estimation: # blockTheta(x, block = 22, quantiles = seq(0.95, 0.995, length = 10), # title = NULL, description = NULL) # clusterTheta(x, block = 22, quantiles = seq(0.95, 0.995, length = 10), # title = NULL, description = NULL) # runTheta(x, block = 22, quantiles = seq(0.95, 0.995, length = 10), # title = NULL, description = NULL) # ferrosegersTheta(x, quantiles = seq(0.95, 0.995, length = 10), # title = NULL, description = NULL) # time series ts as input: blockTheta(x.ts) clusterTheta(x.ts) runTheta(x.ts) ferrosegersTheta(x.ts) # Numeric Vector as input: x.vec = as.vector(x.ts) blockTheta(x.vec) clusterTheta(x.vec) runTheta(x.vec) ferrosegersTheta(x.vec) # timeSeries object as input: x.tS = as.timeSeries(x.ts) blockTheta(x.tS) clusterTheta(x.tS) runTheta(x.tS) ferrosegersTheta(x.tS) # Return Value: return() } # ------------------------------------------------------------------------------ test.exindexesPlot = function() { # Graphics Frame: par(mfrow = c(2, 2), cex = 0.7) par(ask = FALSE) # Parameter Estimation: x = thetaSim("max", n = 22000) exindexesPlot(x) # Parameter Estimation: y = thetaSim("pair", n = 22000) exindexesPlot(y) # Return Value: return() } # ------------------------------------------------------------------------------ test.exindexPlot = function() { # Graphics Frame: par(mfrow = c(2, 2), cex = 0.7) par(ask = FALSE) # Parameter Estimation: x = thetaSim("max", n=22000) exindexPlot(x, block = 22) # Parameter Estimation: y = thetaSim("pair", n=22000) exindexPlot(y, block = 22) # Return Value: return() } ################################################################################ fExtremes/inst/unitTests/runit.GpdModelling.R0000644000176200001440000001077211645005146021034 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - 2007, Diethelm Wuertz, GPL # Diethelm Wuertz # info@rmetrics.org # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file # ############################################################################## # FUNCTION: GPD SIMULATION: # gpdSim Simulates a GPD distributed process # FUNCTION: GPD PARAMETER ESTIMATION: # 'fGPDFIT' S4 class representation # gpdFit Fits Parameters of GPD distribution # METHODS: PRINT, PLOT, AND SUMMARY: # show.fGPDFIT S4 Print Method for object of class "fGPDFIT" # plot.fGPDFIT S3 Plot Method for object of class "fGPDFIT" # summary.fGPDFIT S3 Summary Method for object of class "fGPDFIT" ################################################################################ test.gpdSim = function() { # Generate Artificial Data Set: x = gpdSim(model = list(xi = 0.25, mu = 0, beta = 1), n = 1000, seed = 4711) class(x) # Plot Series: par(mfrow = c(2, 1), cex = 0.7) par(ask = FALSE) seriesPlot(as.timeSeries(x)) # Return Value: return() } # ------------------------------------------------------------------------------ test.fGPDFIT = function() { # Slot names: slotNames("fGPDFIT") # [1] "call" "method" "parameter" "data" "fit" # [6] "residuals" "title" "description" # Return Value: return() } # ------------------------------------------------------------------------------ test.gpdFit = function() { # Generate Artificial Data Set: model = list(xi = -0.25, mu = 0, beta = 1) ts = gpdSim(model = model, n = 5000, seed = 4711) class(ts) # Transform As timeSeries: tS = as.timeSeries(ts) class(tS) # As numeric vector: x = as.vector(ts) class(x) # GPD Fit: # gpdFit(x, u = quantile(x, 0.95), type = c("mle", "pwm"), # information = c("observed", "expected"), title = NULL, # description = NULL, ...) # PWM Fit: fit = gpdFit(tS, u = min(series(tS)), "pwm") print(fit) fit = gpdFit(ts, u = min(ts), "pwm") print(fit) fit = gpdFit(x, u = min(x), "pwm") print(fit) # MLE Fit: fit = gpdFit(tS, u = min(series(tS)), "mle") print(fit) fit = gpdFit(ts, u = min(ts), "mle") print(fit) fit = gpdFit(x, u = min(x), "mle") print(fit) # Information: fit = gpdFit(tS, u = min(series(tS)), type = "mle", information = "observed") print(fit) fit = gpdFit(tS, u = min(series(tS)), type = "mle", information = "expected") print(fit) # Return Value: return() } # ------------------------------------------------------------------------------ test.plot = function() { # Artificial Data Set: model = list(xi = -0.25, mu = 0, beta = 1) ts = gpdSim(model = model, n = 5000, seed = 4711) class(ts) # Fit: fit = gpdFit(ts, u = min(ts), type = "mle") print(fit) par(mfrow = c(2, 2), cex = 0.7) par(ask = FALSE) plot(fit, which = "all") # Try: # plot(fit, which = "ask") # Return Value: return() } # ------------------------------------------------------------------------------ test.summary = function() { # Artificial Data Set: model = list(xi = -0.25, mu = 0, beta = 1) ts = gpdSim(model = model, n = 5000, seed = 4711) class(ts) # Fit: fit = gpdFit(ts, u = min(ts), type = "mle") summary(fit, doplot = FALSE) # Return Value: return() } ################################################################################ fExtremes/inst/unitTests/runit.GpdDistribution.R0000644000176200001440000000602411645005146021574 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - 2007, Diethelm Wuertz, GPL # Diethelm Wuertz # info@rmetrics.org # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # FUNCTION: GPD DISTRIBUTION FAMILY: # dgpd Density for the Generalized Pareto DF [USE FROM EVIS] # pgpd Probability for the Generalized Pareto DF # qgpd Quantiles for the Generalized Pareto DF # rgpd Random variates for the Generalized Pareto DF # gpdMoments Computes true statistics for GPD distribution # gpdSlider Displays distribution and rvs for GPD distribution ################################################################################ test.gpd = function() { # Check Distribution: set.seed(1985) .distCheck(fun = "gpd", n = 500, xi = 1, mu = 0, beta = 1) # Return Value: return() } # ------------------------------------------------------------------------------ test.gpdMoments = function() { # gpdMoments(xi = 1, mu = 0, beta = 1) # Compute Moments: xi = seq(-2, 2, length = 401) mom = gpdMoments(xi) # Plot Mean: par(mfrow = c(2, 1), cex = 0.7) par(ask = FALSE) plot(xi, mom$mean, main = "Mean", pch = 19, cex = 0.5) abline(v = 1, col = "red", lty = 3) abline(h = 0, col = "red", lty = 3) # Plot Variance: plot(xi, log(mom$var), main = "log Variance", pch = 19, cex = 0.5) abline(v = 1/2, col = "red", lty = 3) abline(h = 0.0, col = "red", lty = 3) # Return Value: return() } # ------------------------------------------------------------------------------ test.gpdSlider = function() { # Distribution Slider: # print("Activate Slider manually!") # gpdSlider(method = "dist") # Random Variates Slider: # print("Activate Slider manually!") # gpdSlider(method = "rvs") NA # Return Value: return() } ################################################################################ fExtremes/inst/unitTests/runit.GevRisk.R0000644000176200001440000000370211645005146020034 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - 2007, Diethelm Wuertz, GPL # Diethelm Wuertz # info@rmetrics.org # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # FUNCTION: ADDITIONAL FUNCTIONS: # gevrlevelPlot Calculates Return Levels Based on GEV Fit # .gevrlevelLLH Computes log-likelihood function for gevrlevelPlot ################################################################################ test.returnLevel = function() { # gevrlevelPlot(object, kBlocks = 20, ci = c(0.90, 0.95, 0.99), # plottype = c("plot", "add"), labels = TRUE,...) # Artificial Data Set: model = list(xi = -0.25, mu = 0, beta = 1) x = gevSim(model = model, n = 1000, seed = 4711) class(x) # Empirical distribution plot: fit = gevFit(x) gevrlevelPlot(fit) # Return Value: return() } ################################################################################ fExtremes/inst/unitTests/runit.DataPreprocessing.R0000644000176200001440000001116411645005146022100 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - 2007, Diethelm Wuertz, GPL # Diethelm Wuertz # info@rmetrics.org # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # FUNCTION DATA PREPROCESSING: # blockMaxima Returns block maxima from a time series # findThreshold Upper threshold for a given number of extremes # pointProcess Returns peaks over a threshold from a time series # deCluster Declusters a point process ################################################################################ test.blockMaxima = function() { # blockMaxima - Returns block maxima from a time series # blockMaxima(x, block = c("monthly", "quarterly"), doplot = FALSE) # Time Series Data: x = MSFT[, "Close"] x.ret = 100*returns(x) head(x.ret) class(x.ret) # Monthly Block Maxima: ans = blockMaxima(x.ret, block = "monthly", doplot = TRUE) print(ans) # Quarterly Block Maxima: ans = blockMaxima(x.ret, block = "q", doplot = TRUE) print(ans) # 20-Days Block Maxima: ans = blockMaxima(x.ret, block = 20, doplot = TRUE) print(ans) # Numerical Data Vector: x.ret = as.vector(x.ret) head(x.ret) ans = blockMaxima(x.ret, block = 20, doplot = TRUE) print(ans) # Stops by stopifnot() - Check: # blockMaxima(x.ret, block = "month", doplot = TRUE) # Return Value: return() } # ------------------------------------------------------------------------------ test.findThreshold = function() { # findThreshold - Upper threshold for a given number of extremes # findThreshold(x, n = floor(0.05*length(as.vector(x))), doplot = FALSE) # Time Series Data: x = MSFT[, "Close"] x.ret = 100*returns(x) head(x.ret) class(x.ret) # Find 99% Threshold: par(mfrow = c(2, 2), cex = 0.7) par(ask = FALSE) findThreshold(x.ret, n = floor(0.01*length(as.vector(x))), doplot = TRUE) # Remark - Alternative use ... quantile(x.ret, probs = 1 - 0.01) quantile(x.ret, probs = 1 - 0.01, type = 1) # Find 95% Threshold: findThreshold(x.ret, doplot = TRUE) # Find 90% Threshold: findThreshold(x.ret, n = floor(0.1*length(as.vector(x))), doplot = TRUE) # Try if x is a numeric vector: findThreshold(as.vector(x.ret), doplot = TRUE) # Return Value: return() } # ------------------------------------------------------------------------------ test.pointProcess = function() { # pointProcess - Returns peaks over a threshold from a time series # pointProcess(x, u = quantile(x, 0.95), doplot = FALSE) # Time Series Data: x = MSFT[, "Close"] x.ret = 100*returns(x) head(x.ret) class(x.ret) # Plot Series: par(mfrow = c(2, 1), cex = 0.7) par(ask = FALSE) # plot(x.ret, type = "l", main = "Series") # abline(h = 0, col = "red", lty = 3) # or use ... seriesPlot(x.ret) # Point Process: pp = pointProcess(x.ret, u = quantile(x.ret, 0.8)) pp plot(pp, type = "b", main = "Point Process") abline(h = 0, col = "red", lty = 3) # Try seriesPlot(pp) # ... add points in graph # Return Value: return() } # ------------------------------------------------------------------------------ test.deCluster = function() { # deCluster - Declusters a point process # deCluster(x, run = 20, doplot = TRUE) # Time Series Data: x = MSFT[, "Close"] x.ret = 100*returns(x) head(x.ret) class(x.ret) # Decluster Time Series: tS = deCluster(x = x.ret, run = 3) print(tS) # Return Value: return() } ################################################################################ fExtremes/inst/unitTests/runit.GevModelling.R0000644000176200001440000002327712212357012021040 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - 2007, Diethelm Wuertz, GPL # Diethelm Wuertz # info@rmetrics.org # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # FUNCTION: GEV SIMULATION: # gevSim Simulates a GEV distributed process # gumbelSim Simulates a Gumbel distributed process # FUNCTION: GEV PARAMETER ESTIMATION: # 'fGEVFIT' S4 class representation # gevFit Fits Parameters of GEV distribution # gumbelFit Fits Parameters of Gumbel distribution # METHODS: PRINT, PLOT, AND SUMMARY: # show.fGEVFIT S4 Show method for object of class "fGEVFIT" # plot.fGEVFIT S3 Plot method for object of class "fGEVFIT" # summary.fGEVFIT S3 Summary Method for object of class "fGEVFIT" ################################################################################ test.gevSim = function() { # gevSim(model = list(xi=-0.25, mu=0, beta=1), n = 1000, seed = NULL) # RVs: RNGkind(kind = "Marsaglia-Multicarry", normal.kind = "Inversion") set.seed(4711, kind = "Marsaglia-Multicarry") # Artificial Data Set: model = list(xi = -0.25, mu = 0, beta = 1) x.ts = gevSim(model, n = 50, seed = 4711) class(x.ts) print(x.ts) # Create a daily timeSeries object with dummy dates: as.timeSeries(x.ts) # Create a daily timeSeries object starting 2007-01-01 Calendar = timeSequence(from = "2007-01-01", length.out = length(x.ts)) x.tS = timeSeries(data = x.ts, charvec = Calendar, units = "x") print(x.tS) # Return Value: return() } # ------------------------------------------------------------------------------ test.gumbelSim = function() { # gumbelSim(model = list(mu=0, beta=1), n = 1000, seed = NULL) # RVs: RNGkind(kind = "Marsaglia-Multicarry", normal.kind = "Inversion") set.seed(4711, kind = "Marsaglia-Multicarry") # Artificial Data Set: model = list(mu = 0, beta = 1) x.ts = gumbelSim(model, n = 50, seed = 4711) class(x.ts) print(x.ts) # Create a daily timeSeries object with dummy dates: x.tS = as.timeSeries(x.ts) print(x.tS) # Create a daily timeSeries object starting 2007-01-01 Calendar = timeSequence(from = "2007-01-01", length.out = length(x.ts)) x.tS = timeSeries(data = x.ts, charvec = Calendar, units = "x") print(x.tS) # Return Value: return() } # ------------------------------------------------------------------------------ test.numericVectorBlocks = function() { # RVs: RNGkind(kind = "Marsaglia-Multicarry", normal.kind = "Inversion") set.seed(4711, kind = "Marsaglia-Multicarry") # Check numeric vector as input: X = rt(5000, df = 4) x.vec = blockMaxima(X, 20) class(x.vec) head(x.vec) # Internal Fit - GEV PWM: fit = .gevpwmFit(x.vec) fit fit$par.ests # Internal Fit - GEV MLE: fit = .gevmleFit(x.vec) fit fit$par.ests # Internal Fit - Gumbel PWM: fit = .gumpwmFit(x.vec) fit fit$par.ests # Internal Fit - Gumbel MLE: fit = .gummleFit(x.vec) fit fit$par.ests # Return Value: return() } # ------------------------------------------------------------------------------ test.timeSeriesBlocks = function() { # RVs: RNGkind(kind = "Marsaglia-Multicarry", normal.kind = "Inversion") set.seed(4711, kind = "Marsaglia-Multicarry") # Create an artificial timeSeries with dummy positions: xx <- rt(5000, df = 4) charvec <- timeSequence("2013-01-01", length.out = NROW(xx)) X = timeSeries(xx, charvec = charvec) # Compute Block Maxima: x.tS = blockMaxima(X, "monthly") class(x.tS) head(x.tS) # Convert to Vector: x.vec = as.vector(x.tS) # Internal Fit - GEV PWM: fit = .gevpwmFit(x.vec) fit fit$par.ests # Internal Fit - GEV MLE: fit = .gevmleFit(x.vec) fit fit$par.ests # Internal Fit - Gumbel PWM: fit = .gumpwmFit(x.vec) fit fit$par.ests # Internal Fit - Gumbel MLE: fit = .gummleFit(x.vec) fit fit$par.ests # Return Value: return() } # ------------------------------------------------------------------------------ test.gevFit = function() { # gevFit(x, block = 1, type = c("mle", "pwm"), # title = NULL, description = NULL, ...) # RVs: RNGkind(kind = "Marsaglia-Multicarry", normal.kind = "Inversion") set.seed(4711, kind = "Marsaglia-Multicarry") # Simulate Series: model = list(xi = -0.25, mu = 0, beta = 1) x.ts = gevSim(model = model, n = 5000, seed = 4711) class(x.ts) # Check time series input: fit = gevFit(x.ts, block = 1, type = "pwm") class(fit) print(fit) fit = gevFit(x.ts, block = 1, type = "mle") class(fit) print(fit) # Check numeric vector input: fit = gevFit(as.vector(x.ts), block = 1, type = "pwm") class(fit) print(fit) fit = gevFit(as.vector(x.ts), block = 1, type = "mle") class(fit) print(fit) # Check timeSeries objerct input: fit = gevFit(as.timeSeries(x.ts), block = 1, type = "pwm") class(fit) print(fit) fit = gevFit(as.timeSeries(x.ts), block = 1, type = "mle") class(fit) print(fit) # Return Value: return() } # ------------------------------------------------------------------------------ test.gumbelFit = function() { # gevFit(x, block = 1, type = c("mle", "pwm"), # title = NULL, description = NULL, ...) # RVs: RNGkind(kind = "Marsaglia-Multicarry", normal.kind = "Inversion") set.seed(4711, kind = "Marsaglia-Multicarry") # Simulate Series: model = list(mu = 0, beta = 1) x.ts = gumbelSim(model = model, n = 5000, seed = 4711) class(x.ts) # Check time series input: fit = gumbelFit(x.ts, block = 1, type = "pwm") class(fit) print(fit) fit = gumbelFit(x.ts, block = 1, type = "mle") class(fit) print(fit) # Check numeric vector input: fit = gumbelFit(as.vector(x.ts), block = 1, type = "pwm") class(fit) print(fit) fit = gumbelFit(as.vector(x.ts), block = 1, type = "mle") class(fit) print(fit) # Check timeSeries objerct input: fit = gumbelFit(as.timeSeries(x.ts), block = 1, type = "pwm") class(fit) print(fit) fit = gumbelFit(as.timeSeries(x.ts), block = 1, type = "mle") class(fit) print(fit) # Return Value: return() } # ------------------------------------------------------------------------------ test.gevFitByBlocks <- function() { # gevFit(x, block = 1, type = c("mle", "pwm"), # title = NULL, description = NULL, ...) # RVs: RNGkind(kind = "Marsaglia-Multicarry", normal.kind = "Inversion") set.seed(4711, kind = "Marsaglia-Multicarry") # Simulate Series: model = list(xi = -0.25, mu = 0, beta = 1) x.ts = gevSim(model = model, n = 5000, seed = 4711) class(x.ts) x.vec = as.vector(x.ts) class(x.vec) charvec <- timeSequence("2013-01-01", length.out = NROW(x.vec)) x.tS = timeSeries(x.vec, charvec) # ts as input & 20 Days Blocks: fit = gevFit(x.ts, block = 20, type = "pwm") fit fit = gevFit(x.ts, block = 20, type = "mle") fit # Numeric Vector as input & 20 Days Blocks: fit = gevFit(x.vec, block = 20, type = "pwm") fit fit = gevFit(x.vec, block = 20, type = "mle") fit # timeSeries o bject as input & Monthly Blocks: fit = gevFit(x.tS, block = "monthly", type = "pwm") fit fit = gevFit(x.tS, block = "quarterly", type = "mle") fit # timeSeries object as input & 20 Days Blocks: fit = gevFit(x.tS, block = 20, type = "pwm") fit fit = gevFit(x.tS, block = 20, type = "mle") fit # Return Value: return() } # ------------------------------------------------------------------------------ test.plot = function() { # Load Data: x = as.timeSeries(data(danishClaims)) # Parameter Estimation with Declustering: # gevFit(x, block = 1, type = c("mle", "pwm"), # title = NULL, description = NULL, ...) fit = gevFit(x, block = "month") print(fit) # Plot: par(mfrow = c(2, 2), cex = 0.7) par(ask = FALSE) plot(fit, which = 1:4) # Try Interactive: # plot(fit) # Return Value: return() } # ------------------------------------------------------------------------------ test.summary = function() { # Summary Report: # summary(object, doplot = TRUE, which = "all", ...) # Load Data: x = as.timeSeries(data(danishClaims)) # Parameter Estimation with Declustering: fit = gevFit(x, block = "month") print(fit) # Summary: summary(fit, doplot = FALSE) # Return Value: return() } ################################################################################ fExtremes/inst/unitTests/runit.GpdRisk.R0000644000176200001440000001225311645005146020026 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - 2007, Diethelm Wuertz, GPL # Diethelm Wuertz # info@rmetrics.org # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # FUNCTION: ADDITIONAL PLOTS: # gpdTailPlot Plots Tail Estimate From GPD Model # gpdQuantPlot Plots of GPD Tail Estimate of a High Quantile # gpdShapePlot Plots for GPD Shape Parameter # gpdQPlot Adds Quantile Estimates to plot.gpd # gpdSfallPlot Adds Expected Shortfall Estimates to a GPD Plot # gpdRiskMeasures Calculates Quantiles and Expected Shortfalls # FUNCTION: NEW STYLE FUNCTIONS: # tailPlot Plots GPD VaR and Expected Shortfall risk # tailSlider Interactive view to find proper threshold value # tailRiskMeasures Calculates VaR and Expected Shortfall risks ################################################################################ test.gpdTailPlot = function() { # Artificial Data Set: x = gpdSim(seed = 1985) fit = gpdFit(x) par(mfrow = c(1, 1)) par(ask = FALSE) gpdTailPlot(fit) # Danish Fire Claims: x = as.timeSeries(data(danishClaims)) fit = gpdFit(x) par(mfrow = c(1, 1)) par(ask = FALSE) gpdTailPlot(fit) # Return Value: return() } # ------------------------------------------------------------------------------ test.gpdQuantPlot = function() { # Artificial Data Set: x = gpdSim(seed = 1985) par(mfrow = c(1, 1)) par(ask = FALSE) gpdQuantPlot(x) # Danish Fire Claims: x = as.timeSeries(data(danishClaims)) fit = gpdFit(x) par(mfrow = c(1, 1)) par(ask = FALSE) gpdQuantPlot(x) # Return Value: return() } # ------------------------------------------------------------------------------ test.gpdShapePlot = function() { # Artificial Data Set: x = gpdSim(seed = 1985) par(mfrow = c(1, 1)) par(ask = FALSE) gpdShapePlot(x) # Danish Fire Claims: x = as.timeSeries(data(danishClaims)) par(mfrow = c(1, 1)) par(ask = FALSE) gpdShapePlot(x) # Return Value: return() } # ------------------------------------------------------------------------------ test.gpdQPlot = function() { # Artificial Data Set: x = gpdSim(seed = 1985) fit = gpdFit(x) tp = gpdTailPlot(fit) gpdQPlot(tp) # Danish Fire Claims: x = as.timeSeries(data(danishClaims)) fit = gpdFit(x, u =10) tp = gpdTailPlot(fit) gpdQPlot(tp) # Return Value: return() } # ------------------------------------------------------------------------------ test.gpdSfallPlot = function() { # Artificial Data Set: x = gpdSim(seed = 1985) fit = gpdFit(x) ### tp = gpdTailPlot(fit) # CHECK ### gpdSfallPlot(tp) # CHECK # Danish Fire Claims: x = as.timeSeries(data(danishClaims)) fit = gpdFit(as.vector(x), u =10) ### tp = gpdTailPlot(fit) # CHECK ### gpdSfallPlot(tp) # CHECK # Return Value: return() } # ------------------------------------------------------------------------------ test.tailPlot = function() { # Danish Fire Claims: x = as.timeSeries(data(danishClaims)) fit = gpdFit(x, u = 10) ### tailPlot(fit) # CHECK # Return Value: return() } # ------------------------------------------------------------------------------ test.tailSlider = function() { # Danish Fire Claims: # x = as.timeSeries(data(danishClaims)) # tailSlider(x) NA # Return Value: return() } # ------------------------------------------------------------------------------ test.tailRisk = function() { # Danish Fire Claims: x = as.timeSeries(data(danishClaims)) fit = gpdFit(x, u = 10) tailRisk(fit) # Return Value: return() } ################################################################################ fExtremes/inst/unitTests/runit.ExtremesData.R0000644000176200001440000002044311645005146021051 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - 2007, Diethelm Wuertz, GPL # Diethelm Wuertz # info@rmetrics.org # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # FUNCTION EXPLORATIVE DATA ANALYSIS: # emdPlot Creates an empirical distribution plot # qqparetoPlot Creates exploratory QQ plot for EV analysis # mePlot Creates a sample mean excess function plot # mxfPlot Creates another view of a sample mean excess plot # mrlPlot Returns a mean residual life plot with confidence levels # recordsPlot Plots records development # ssrecordsPlot Plots records development of data subsamples # msratioPlot Plots ratio of maximums and sums # sllnPlot Verifies Kolmogorov's Strong Law of large numbers # lilPlot Verifies Hartman-Wintner's Law of the iterated logarithm # xacfPlot Plots autocorrelations of exceedences ################################################################################ test.emd = function() { # emdPlot - Creates an empirical distribution plot # Artificial Data Set: RNGkind(kind = "Marsaglia-Multicarry", normal.kind = "Inversion") set.seed(4711, kind = "Marsaglia-Multicarry") x = rgpd(1000) # Empirical distribution plot: par(ask = FALSE) par(mfrow = c(2, 2)) emdPlot(x, plottype = "xy") emdPlot(x, plottype = "x") emdPlot(x, plottype = "y") # emdPlot(x, plottype = " ") # CHECK !!! # Artificial Data Set: x = rt(1000, df = 3) # Empirical distribution plot: par(ask = FALSE) par(mfrow = c(2, 2)) emdPlot(x, plottype = "xy") emdPlot(x, plottype = "x") emdPlot(x, plottype = "y") # emdPlot(x, plottype = " ") # CHECK !!! # Artificial Data Set: x = rnorm(1000) # Empirical distribution plot: par(ask = FALSE) par(mfrow = c(2, 2)) emdPlot(x, plottype = "xy") emdPlot(x, plottype = "x") emdPlot(x, plottype = "y") # emdPlot(x, plottype = " ") # CHECK !!! # Return Value: return() } # ------------------------------------------------------------------------------ test.qqpareto = function() { # qqparetoPlot - Creates exploratory QQ plot for EV analysis # Artificial Data Set - RNGkind(kind = "Marsaglia-Multicarry", normal.kind = "Inversion") set.seed(4711, kind = "Marsaglia-Multicarry") r0 = rgpd(n = 1000, xi = 0) r1 = rgpd(n = 1000, xi = 1) # Graph Frame: par(ask = FALSE) par(mfrow = c(2, 2)) # Empirical Pareto Distribution Plot: qqparetoPlot(x = r0, xi = 0) qqparetoPlot(x = r1, xi = 1) # Empirical Normal Distribution Plot: qqnormPlot(x = r0) qqnormPlot(x = r1) # Return Value: return() } # ------------------------------------------------------------------------------ test.me = function() { # mePlot - Creates a sample mean excess function plot # mxfPlot - Creates another view of a sample mean excess plot # mrlPlot - Returns a mean residual life plot with confidence levels # Artificial Data Set - RNGkind(kind = "Marsaglia-Multicarry", normal.kind = "Inversion") set.seed(4711, kind = "Marsaglia-Multicarry") r = rgpd(n = 1000) # Mean Excess Function Plot: par(ask = FALSE) par(mfrow = c(2, 2)) mePlot(x = r) # Check, the largest point is missing ... mxfPlot(x = r) mrlPlot(x = r) # No Labels: par(mfrow = c(2, 2)) par(ask = FALSE) mePlot(x = r, labels = FALSE) mxfPlot(x = r, labels = FALSE) mrlPlot(x = r, labels = FALSE) # Return Value: return() } # ------------------------------------------------------------------------------ test.records = function() { # recordsPlot - Plots records development # ssrecordsPlot - Plots records development of data subsamples # Artificial Data Set - RNGkind(kind = "Marsaglia-Multicarry", normal.kind = "Inversion") set.seed(4711, kind = "Marsaglia-Multicarry") r = rgpd(n = 1000) # Records Plot: par(mfrow = c(2, 2)) par(ask = FALSE) recordsPlot(x = r) recordsPlot(x = r, ci = 0.99) ans = recordsPlot(x = r, labels = FALSE) print(ans) # Subrecords Plot: set.seed(1985) r = rgpd(n = 10000) par(mfrow = c(2, 2)) par(ask = FALSE) recordsPlot(r) ssrecordsPlot(r, subsamples = 1) ssrecordsPlot(r, subsamples = 1, plottype = "log") ans = ssrecordsPlot(r, subsamples = 1, plottype = "lin") print(ans) # Subrecords Plot: set.seed(1985) r = rgpd(n = 10000) par(mfrow = c(2, 2)) par(ask = FALSE) ssrecordsPlot(r, subsamples = 10) ssrecordsPlot(r, subsamples = 50) ssrecordsPlot(r, subsamples = 10, plottype = "log") ans = ssrecordsPlot(r, subsamples = 50, plottype = "log", labels = FALSE) print(ans) # Return Value: return() } # ------------------------------------------------------------------------------ test.msratio = function() { # msratioPlot - Plots ratio of maximums and sums # Artificial Data Set - RNGkind(kind = "Marsaglia-Multicarry", normal.kind = "Inversion") set.seed(4711, kind = "Marsaglia-Multicarry") r = rgpd(n = 1000) # Mean Excess Function Plot: par(ask = FALSE) par(mfrow = c(2, 2)) msratioPlot(x = r, p = 1:4) ans = msratioPlot(x = r, p = 1:4, labels = FALSE) print(head(ans)) # Return Value: return() } # ------------------------------------------------------------------------------ test.laws = function() { # sllnPlot - Verifies Kolmogorov's Strong Law of large numbers # lilPlot - Verifies Hartman-Wintner's Law of the iterated logarithm # Artificial Data Set - RNGkind(kind = "Marsaglia-Multicarry", normal.kind = "Inversion") set.seed(4711, kind = "Marsaglia-Multicarry") r = rgpd(n = 1000) # Strong Law of Large Numbers: par(ask = FALSE) par(mfrow = c(2, 2)) sllnPlot(x = r) ans = sllnPlot(x = r, labels = FALSE) print(ans) # Law of the Iterated Logarithm: lilPlot(x = r) ans = lilPlot(x = r, labels = FALSE) print(ans) # Return Value: return() } # ------------------------------------------------------------------------------ test.xacf = function() { # xacfPlot - Plots autocorrelations of exceedences # Create an Artificial Data Set: RNGkind(kind = "Marsaglia-Multicarry", normal.kind = "Inversion") set.seed(4711, kind = "Marsaglia-Multicarry") r = rgpd(n = 1000) # ACF of Exceedances Plot: par(ask = FALSE) par(mfrow = c(2, 2)) ans = xacfPlot(x = r) print(ans) # ACF of Exceedances Plot: par(ask = FALSE) par(mfrow = c(2, 2)) xacfPlot(x = r, labels = FALSE) # ACF of Exceedances Plot: par(ask = FALSE) par(mfrow = c(2, 2)) xacfPlot(x = r, labels = FALSE, which = 1); title(main = "1") xacfPlot(x = r, labels = FALSE, which = 2); title(main = "2") xacfPlot(x = r, labels = FALSE, which = "3"); title(main = "3") xacfPlot(x = r, labels = FALSE, which = "4"); title(main = "4") # Return Value: return() } ################################################################################ fExtremes/inst/unitTests/runTests.R0000644000176200001440000000453111645005146017152 0ustar liggesuserspkg <- "fExtremes" if(require("RUnit", quietly = TRUE)) { library(package=pkg, character.only = TRUE) if(!(exists("path") && file.exists(path))) path <- system.file("unitTests", package = pkg) ## --- Testing --- ## Define tests testSuite <- defineTestSuite(name = paste(pkg, "unit testing"), dirs = path) if(interactive()) { cat("Now have RUnit Test Suite 'testSuite' for package '", pkg, "' :\n", sep='') str(testSuite) cat('', "Consider doing", "\t tests <- runTestSuite(testSuite)", "\nand later", "\t printTextProtocol(tests)", '', sep = "\n") } else { ## run from shell / Rscript / R CMD Batch / ... ## Run tests <- runTestSuite(testSuite) if(file.access(path, 02) != 0) { ## cannot write to path -> use writable one tdir <- tempfile(paste(pkg, "unitTests", sep="_")) dir.create(tdir) pathReport <- file.path(tdir, "report") cat("RUnit reports are written into ", tdir, "/report.(txt|html)", sep = "") } else { pathReport <- file.path(path, "report") } ## Print Results: printTextProtocol(tests, showDetails = FALSE) printTextProtocol(tests, showDetails = FALSE, fileName = paste(pathReport, "Summary.txt", sep = "")) printTextProtocol(tests, showDetails = TRUE, fileName = paste(pathReport, ".txt", sep = "")) ## Print HTML Version to a File: ## printHTMLProtocol has problems on Mac OS X if (Sys.info()["sysname"] != "Darwin") printHTMLProtocol(tests, fileName = paste(pathReport, ".html", sep = "")) ## stop() if there are any failures i.e. FALSE to unit test. ## This will cause R CMD check to return error and stop tmp <- getErrors(tests) if(tmp$nFail > 0 | tmp$nErr > 0) { stop(paste("\n\nunit testing failed (#test failures: ", tmp$nFail, ", R errors: ", tmp$nErr, ")\n\n", sep="")) } } } else { cat("R package 'RUnit' cannot be loaded -- no unit tests run\n", "for package", pkg,"\n") } ################################################################################ fExtremes/inst/unitTests/runit.GevDistribution.R0000644000176200001440000000765311645005146021614 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - 2007, Diethelm Wuertz, GPL # Diethelm Wuertz # info@rmetrics.org # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # FUNCTION: GEV DISTRIBUTION FAMILY: [CALLING EVD] # dgev Density for the GEV Distribution # pgev Probability for the GEV Distribution # qgev Quantiles for the GEV Distribution # rgev Random variates for the GEV Distribution # gevMoments Computes true statistics for GEV distribution # gevSlider Displays distribution and rvs for GEV distribution ################################################################################ test.gev = function() { # Check Distribution: RNGkind(kind = "Marsaglia-Multicarry", normal.kind = "Inversion") set.seed(4711, kind = "Marsaglia-Multicarry") .distCheck(fun = "gev", n = 2000, xi = 0.0, mu = 0, beta = 1) # Check Distribution: RNGkind(kind = "Marsaglia-Multicarry", normal.kind = "Inversion") set.seed(4711, kind = "Marsaglia-Multicarry") .distCheck(fun = "gev", n = 5000, xi = 0.3, mu = 0, beta = 2) # Return Value: return() } # ------------------------------------------------------------------------------ test.gevMoments = function() { # gevMoments(xi = 0, mu = 0, beta = 1) # Compute Moments: xi = seq(-4.5, 1.5, by = 0.25) mom = gevMoments(xi) print(mom) # Plot Mean: par(mfrow = c(2, 1), cex = 0.7) par(ask = FALSE) xi = seq(-5, 2, length = 351) mom = gevMoments(xi) plot(xi, mom$mean, main = "Mean GEV", pch = 19, col = "steelblue") abline(v = 1, col = "red", lty = 3) abline(h = 0, col = "red", lty = 3) # Plot Variance: plot(xi, log(mom$var), main = "log Variance GEV", pch = 19, col = "steelblue") abline(v = 1/2, col = "red", lty = 3) abline(h = 0.0, col = "red", lty = 3) # check gevMoments for specific values xi <- c(-1, 0, 0.3) mu <- c(-1, 0, 1) beta <- c(0.5, 1, 10) for (i in seq(length(xi))) { for (j in seq(length(xi))) { for (k in seq(length(xi))) { rg <- rgev(1000000, xi = xi[i], mu = mu[j], beta = beta[k]) rgMoments <- gevMoments(xi = xi[i], mu = mu[j], beta = beta[k]) checkEqualsNumeric(mean(rg), rgMoments$mean, tolerance = 0.1) checkEqualsNumeric(var(rg), rgMoments$var, tolerance = 0.1) } } } # Return Value: return() } # ------------------------------------------------------------------------------ test.gevSlider = function() { # Distribution Slider: # print("Activate Slider manually!") # gevSlider(method = "dist") NA # Random Variates Slider: # print("Activate Slider manually!") # gevSlider(method = "rvs") NA # Return Value: return() } ################################################################################ fExtremes/tests/0000755000176200001440000000000013203504345013355 5ustar liggesusersfExtremes/tests/doRUnit.R0000644000176200001440000000151611645005146015072 0ustar liggesusers#### doRUnit.R --- Run RUnit tests ####------------------------------------------------------------------------ ### Origianlly follows Gregor Gojanc's example in CRAN package 'gdata' ### and the corresponding section in the R Wiki: ### http://wiki.r-project.org/rwiki/doku.php?id=developers:runit ### MM: Vastly changed: This should also be "runnable" for *installed* ## package which has no ./tests/ ## ----> put the bulk of the code e.g. in ../inst/unitTests/runTests.R : if(require("RUnit", quietly = TRUE)) { ## --- Setup --- wd <- getwd() pkg <- sub("\\.Rcheck$", '', basename(dirname(wd))) library(package=pkg, character.only = TRUE) path <- system.file("unitTests", package = pkg) stopifnot(file.exists(path), file.info(path.expand(path))$isdir) source(file.path(path, "runTests.R"), echo = TRUE) } fExtremes/NAMESPACE0000644000176200001440000000144113202325176013434 0ustar liggesusers################################################ ## fExtremes ################################################ ################################################ ## import name space ################################################ import("timeDate") import("timeSeries") import("fBasics") import("fGarch") importFrom("graphics", axis, box, grid, hist, mtext, par, rug, text, title) importFrom("methods", is, new) importFrom("stats", acf, dnorm, integrate, lowess, lsfit, optim, ppoints, qchisq, qexp, qnorm, rexp, runif, sd, spline, uniroot, var) ################################################ ## functions ################################################ exportPattern(".") S3method("plot", "fGEVFIT") S3method("summary", "fGEVFIT") S3method("plot", "fGPDFIT") S3method("summary", "fGPDFIT") fExtremes/data/0000755000176200001440000000000013203504345013124 5ustar liggesusersfExtremes/data/danishClaims.csv0000644000176200001440000014246611645005146016260 0ustar liggesusers%Y-%m-%d;DANISH 1980-01-03;1.68374817 1980-01-04;2.093704246 1980-01-05;1.732581259 1980-01-07;1.779754026 1980-01-07;4.612005857 1980-01-10;8.725273792 1980-01-10;7.89897511 1980-01-16;2.208045388 1980-01-16;1.486090776 1980-01-19;2.796171303 1980-01-21;7.320644217 1980-01-21;3.36749634 1980-01-24;1.464128843 1980-01-25;1.722222548 1980-01-26;11.37481698 1980-01-26;2.482739385 1980-01-28;26.21464129 1980-02-03;2.002430454 1980-02-05;4.530014641 1980-02-07;1.841752562 1980-02-10;3.806734993 1980-02-13;14.12207613 1980-02-16;5.424253294 1980-02-19;11.71303075 1980-02-20;1.515373353 1980-02-21;2.53858858 1980-02-22;2.049780381 1980-02-23;12.46559297 1980-02-25;1.735445095 1980-02-27;1.68374817 1980-03-07;3.323852123 1980-03-13;1.82102489 1980-03-13;2.415812592 1980-03-13;1.464128843 1980-03-17;5.875901903 1980-03-20;1.792439239 1980-03-21;3.338213763 1980-03-22;1.584487555 1980-03-26;1.931320644 1980-04-06;2.049780381 1980-04-10;1.573758419 1980-04-11;1.756954612 1980-04-14;4.931185944 1980-04-15;5.41727672 1980-04-16;1.537335286 1980-04-25;17.56954612 1980-04-25;1.691122987 1980-04-26;1.581612006 1980-05-01;1.467115666 1980-05-01;2.049780381 1980-05-02;1.928711567 1980-05-02;3.263153734 1980-05-04;1.704245974 1980-05-07;2.074607613 1980-05-09;3.294289898 1980-05-10;1.83997511 1980-05-16;7.320644217 1980-05-18;7.320644217 1980-05-20;1.576215227 1980-05-20;4.856098097 1980-05-21;1.542275256 1980-05-26;13.62079063 1980-05-29;1.756954612 1980-05-29;1.639824305 1980-06-02;2.036377745 1980-06-03;21.96193265 1980-06-11;1.799026354 1980-06-12;2.452415813 1980-06-15;2.669106881 1980-06-15;2.024146413 1980-06-16;1.724743777 1980-06-17;1.643863836 1980-06-21;1.96193265 1980-06-30;4.626647145 1980-07-02;1.464128843 1980-07-04;3.963250366 1980-07-04;5.563852123 1980-07-07;4.39238653 1980-07-10;3.640313324 1980-07-12;1.677891654 1980-07-14;1.449487555 1980-07-15;263.250366 1980-07-25;2.500732064 1980-07-26;1.825768668 1980-07-26;9.882869693 1980-07-28;2.146617862 1980-07-29;2.870259151 1980-08-07;6.319913616 1980-08-08;2.123461201 1980-08-08;2.9238653 1980-08-11;2.036376281 1980-08-18;1.736456808 1980-08-18;2.049780381 1980-08-20;1.903367496 1980-08-21;1.610541728 1980-08-23;1.717423133 1980-08-23;3.129437775 1980-08-27;2.05195754 1980-08-28;1.967518302 1980-08-28;2.102489019 1980-08-28;3.259150805 1980-08-30;1.998535871 1980-08-30;5.41727672 1980-09-02;2.819836018 1980-09-04;3.697083455 1980-09-05;2.045387994 1980-09-05;2.679355783 1980-09-08;3.426224012 1980-09-11;1.588579795 1980-09-12;4.262871157 1980-09-12;1.755859444 1980-09-14;1.987005857 1980-09-15;1.661925329 1980-09-15;7.613469985 1980-09-15;1.794878477 1980-09-15;6.674816984 1980-09-25;2.185944363 1980-09-28;3.855051245 1980-09-30;3.221083455 1980-10-01;2.122986823 1980-10-01;1.760291362 1980-10-06;2.041653001 1980-10-07;3.755938507 1980-10-07;2.242111274 1980-10-08;1.721112738 1980-10-09;1.464128843 1980-10-12;4.711891654 1980-10-14;2.153824305 1980-10-16;3.874812592 1980-10-17;19.07027818 1980-10-20;1.887262079 1980-10-23;1.464128843 1980-10-24;1.536163982 1980-10-25;2.560065886 1980-10-27;2.799707174 1980-10-29;2.01317716 1980-10-30;1.464128843 1980-11-05;6.325036603 1980-11-07;1.567300146 1980-11-09;2.196193265 1980-11-10;2.335285505 1980-11-13;2.115666179 1980-11-14;1.469544656 1980-11-18;5.402635432 1980-11-18;5.314787701 1980-11-19;2.872620791 1980-11-20;2.781844802 1980-11-25;2.576821376 1980-12-06;3.10102489 1980-12-07;1.464128843 1980-12-08;2.049780381 1980-12-09;1.96193265 1980-12-09;1.464128843 1980-12-09;2.635431918 1980-12-10;1.464128843 1980-12-10;5.856515373 1980-12-12;3.294289898 1980-12-14;2.520856515 1980-12-17;19.47291362 1980-12-17;1.835462665 1980-12-19;2.049780381 1980-12-23;2.783308931 1980-12-25;2.781844802 1980-12-26;1.756954612 1980-12-27;2.840409956 1980-12-31;2.330893119 1981-01-01;1.756225426 1981-01-01;1.314547837 1981-01-01;2.403971166 1981-01-03;6.915630406 1981-01-07;1.491876802 1981-01-17;1.532395806 1981-01-23;1.873861075 1981-01-26;1.815203145 1981-01-31;8.256880734 1981-02-02;1.410204456 1981-02-07;2.206625164 1981-02-10;34.14154653 1981-02-10;2.443310616 1981-02-13;3.594369594 1981-02-13;2.372214941 1981-02-15;3.669724771 1981-02-17;6.888453473 1981-02-19;1.802096986 1981-02-19;1.441677588 1981-02-23;9.174311927 1981-02-27;2.096985583 1981-03-01;2.814547837 1981-03-01;1.684903014 1981-03-04;2.099606815 1981-03-09;2.621231979 1981-03-10;1.376146789 1981-03-12;1.664482307 1981-03-13;2.359108781 1981-03-16;4.136487549 1981-03-19;1.394395806 1981-03-23;1.802096986 1981-03-24;1.819134993 1981-03-24;1.513761468 1981-03-27;3.080773263 1981-04-01;20.96985583 1981-04-10;4.193971166 1981-04-13;1.861643512 1981-04-18;2.49672346 1981-04-20;2.213781127 1981-04-20;5.242463958 1981-04-22;1.32225426 1981-04-23;8.551769332 1981-04-24;1.965923984 1981-04-25;12.89515072 1981-04-26;1.788990826 1981-04-26;2.176826999 1981-04-27;8.777627785 1981-04-27;1.815203145 1981-04-29;1.683140236 1981-04-29;3.643512451 1981-05-02;1.613368283 1981-05-03;1.467889908 1981-05-05;1.405604194 1981-05-06;3.120803408 1981-05-11;1.598180865 1981-05-13;3.80078637 1981-05-14;1.510089122 1981-05-16;1.572739187 1981-05-16;1.830052425 1981-05-21;2.621231979 1981-05-21;2.806480996 1981-05-23;1.357798165 1981-05-24;1.618610747 1981-05-25;1.965923984 1981-05-28;3.022280472 1981-05-29;56.22542595 1981-05-31;4.98034076 1981-06-02;1.987162516 1981-06-14;1.965923984 1981-06-16;2.711292267 1981-06-17;1.900393185 1981-06-18;1.723460026 1981-06-18;1.572739187 1981-06-19;1.703800786 1981-06-19;3.01965924 1981-06-21;1.834862385 1981-06-24;1.419397117 1981-06-29;4.390563565 1981-06-30;7.863695937 1981-07-01;1.572739187 1981-07-01;1.336613368 1981-07-05;1.703800786 1981-07-07;2.635622543 1981-07-10;1.864718218 1981-07-11;1.457754915 1981-07-11;7.558322412 1981-07-12;2.031397117 1981-07-20;1.349934469 1981-07-26;1.474862385 1981-07-28;5.111402359 1981-07-30;5.242463958 1981-07-31;1.441677588 1981-08-04;3.936138925 1981-08-05;4.062909567 1981-08-11;1.376146789 1981-08-19;1.684141547 1981-08-19;1.440619921 1981-08-25;1.364549148 1981-08-25;1.572739187 1981-08-27;2.185422018 1981-08-27;3.281346003 1981-08-27;1.363100917 1981-08-28;2.123197903 1981-08-28;2.634338139 1981-08-28;2.098296199 1981-08-29;3.434352556 1981-09-01;1.478795544 1981-09-02;2.621231979 1981-09-03;3.001310616 1981-09-04;1.429733945 1981-09-06;10.22280472 1981-09-09;2.579395806 1981-09-09;1.755359109 1981-09-10;1.47340498 1981-09-11;1.952817824 1981-09-14;1.779868938 1981-09-15;1.986862385 1981-09-16;1.939711664 1981-09-17;1.675900393 1981-09-17;1.572739187 1981-09-19;2.524901704 1981-09-19;14.67889908 1981-09-20;3.034076016 1981-09-21;1.979030144 1981-09-22;5.937758847 1981-09-26;1.441677588 1981-09-29;2.621231979 1981-10-01;2.038007864 1981-10-03;3.75491481 1981-10-07;2.43774574 1981-10-07;1.702031455 1981-10-11;7.109870249 1981-10-15;2.01965924 1981-10-17;1.85049017 1981-10-18;1.415950197 1981-10-22;7.693315858 1981-10-25;3.014416776 1981-10-27;2.359108781 1981-10-28;1.592315858 1981-11-01;1.389252949 1981-11-01;1.332968545 1981-11-03;1.423328965 1981-11-03;2.977571429 1981-11-05;1.387355177 1981-11-05;1.404980341 1981-11-08;2.621231979 1981-11-13;4.279161206 1981-11-15;1.605504587 1981-11-16;2.011795544 1981-11-17;2.267365662 1981-11-17;1.464650066 1981-11-19;3.374065531 1981-11-22;1.490799476 1981-11-24;2.096985583 1981-11-25;1.570166448 1981-11-25;1.376146789 1981-12-01;3.145478375 1981-12-07;8.453735256 1981-12-10;3.033283093 1981-12-13;2.064220183 1981-12-14;6.422018349 1981-12-14;1.89878768 1981-12-18;1.49017038 1981-12-21;50.0655308 1981-12-21;1.559633028 1981-12-22;1.965923984 1981-12-28;1.800052425 1981-12-29;2.424639581 1981-12-29;1.31061599 1981-12-31;1.612057667 1982-01-06;4.221165279 1982-01-08;1.260404281 1982-01-08;1.403693222 1982-01-09;1.297265161 1982-01-13;1.927492271 1982-01-13;1.915457788 1982-01-14;1.207451843 1982-01-17;5.69858264 1982-01-21;1.902497027 1982-01-22;1.189134364 1982-01-22;10.17802378 1982-01-22;1.602079667 1982-01-24;4.161712247 1982-01-28;2.363049941 1982-01-29;1.965043995 1982-02-01;1.945982164 1982-02-01;2.853745541 1982-02-03;1.202439952 1982-02-04;10.82045184 1982-02-04;1.588763377 1982-02-04;2.096349584 1982-02-05;5.469678954 1982-02-07;1.892984542 1982-02-08;2.033293698 1982-02-09;1.605231867 1982-02-16;1.403091558 1982-02-22;1.195005945 1982-02-25;3.246135553 1982-02-27;1.263122473 1982-02-27;2.972651605 1982-02-28;1.204950059 1982-02-28;1.881273484 1982-02-28;1.783590963 1982-03-07;3.923900119 1982-03-07;1.902497027 1982-03-10;1.664684899 1982-03-10;4.452825208 1982-03-19;1.32362069 1982-03-20;1.605231867 1982-03-22;24.97027348 1982-03-25;2.734839477 1982-03-29;1.783590963 1982-04-05;1.810939358 1982-04-05;2.114149822 1982-04-11;1.391200951 1982-04-12;1.346016647 1982-04-12;1.507384067 1982-04-14;1.940487515 1982-04-14;2.56979786 1982-04-18;1.580765755 1982-04-18;1.487514863 1982-04-20;1.521997622 1982-04-21;1.690844233 1982-04-22;1.783590963 1982-04-24;1.258865636 1982-04-24;1.573747919 1982-04-24;1.467300832 1982-04-25;2.713705113 1982-04-25;2.736028537 1982-04-27;1.456599287 1982-04-28;2.137431629 1982-04-28;2.479090369 1982-05-01;2.378121284 1982-05-01;4.637336504 1982-05-02;1.189060642 1982-05-03;1.545778835 1982-05-08;2.342449465 1982-05-12;2.337693222 1982-05-16;1.397146254 1982-05-23;4.221165279 1982-05-31;1.639952438 1982-06-03;1.218787158 1982-06-06;3.68608799 1982-06-07;2.497027348 1982-06-08;2.497027348 1982-06-10;5.231866825 1982-06-10;1.307966706 1982-06-11;1.268124851 1982-06-16;2.165279429 1982-06-17;4.640192628 1982-06-17;2.972651605 1982-06-22;1.664684899 1982-06-24;1.189060642 1982-06-27;11.89060642 1982-07-01;2.865636147 1982-07-01;1.24436742 1982-07-03;1.724137931 1982-07-11;5.695600476 1982-07-14;1.35956956 1982-07-14;7.07491082 1982-07-15;1.403475624 1982-07-15;1.402418549 1982-07-19;1.319857313 1982-07-21;4.320588585 1982-07-24;1.843043995 1982-07-24;1.414982164 1982-07-26;1.486325803 1982-07-27;4.946032105 1982-07-28;1.913198573 1982-07-29;20.04994055 1982-07-29;1.436507729 1982-07-31;5.507728894 1982-08-01;3.210463734 1982-08-02;1.399328181 1982-08-04;5.001734839 1982-08-04;3.448275862 1982-08-05;3.55648038 1982-08-05;1.357568371 1982-08-06;2.131511296 1982-08-06;1.84188585 1982-08-07;1.426872771 1982-08-09;2.417598098 1982-08-11;1.252154578 1982-08-12;1.899702735 1982-08-13;1.559183115 1982-08-20;1.24925327 1982-08-21;1.903241379 1982-08-23;1.605231867 1982-08-24;2.22965874 1982-08-27;1.212841855 1982-08-30;3.448275862 1982-09-03;1.243267539 1982-09-06;1.674931034 1982-09-08;1.353151011 1982-09-10;1.78754459 1982-09-10;2.03686088 1982-09-13;1.973840666 1982-09-14;1.640903686 1982-09-18;2.909932224 1982-09-18;2.550958383 1982-09-19;1.807372176 1982-09-20;4.002577883 1982-09-22;1.426872771 1982-09-28;2.343111772 1982-09-30;1.38882283 1982-10-01;4.173602854 1982-10-03;1.278537455 1982-10-04;3.558858502 1982-10-06;1.200149822 1982-10-16;1.551234245 1982-10-24;1.699619501 1982-10-24;65.70749108 1982-10-27;27.26259453 1982-10-27;15.92627824 1982-10-31;1.279497027 1982-11-01;3.098441141 1982-11-06;2.94696195 1982-11-07;1.224732461 1982-11-08;1.664684899 1982-11-09;1.319601665 1982-11-11;1.516599287 1982-11-11;1.273230678 1982-11-11;1.664684899 1982-11-13;1.307966706 1982-11-15;5.469678954 1982-11-20;1.248513674 1982-11-21;1.986825208 1982-11-22;1.426872771 1982-11-23;1.426872771 1982-11-23;2.164090369 1982-11-24;2.140309156 1982-11-25;1.307966706 1982-11-25;1.498384067 1982-11-27;1.688466112 1982-12-01;1.83994887 1982-12-02;4.375743163 1982-12-02;1.786692033 1982-12-07;1.655944114 1982-12-09;1.189060642 1982-12-10;3.85075981 1982-12-10;4.161712247 1982-12-20;2.140309156 1982-12-20;2.140309156 1982-12-20;2.615933413 1982-12-23;4.161712247 1982-12-24;22.25822592 1982-12-25;2.25921522 1982-12-25;4.280618312 1982-12-25;1.306247325 1982-12-27;5.588585018 1982-12-31;2.794292509 1983-01-03;1.44160178 1983-01-03;1.349646274 1983-01-07;1.565072303 1983-01-09;1.112347052 1983-01-10;2.810163515 1983-01-15;1.783452725 1983-01-18;2.128698554 1983-01-19;4.349276974 1983-01-23;2.710789766 1983-01-24;1.134593993 1983-01-25;2.623686318 1983-01-30;2.393770857 1983-02-03;6.234705228 1983-02-08;1.378197998 1983-02-09;1.216907675 1983-02-11;1.163515017 1983-02-12;2.459407119 1983-02-14;4.727474972 1983-02-14;1.557285873 1983-02-17;1.307007786 1983-02-18;3.14349277 1983-02-20;1.197107898 1983-02-21;1.167964405 1983-02-24;1.112347052 1983-03-18;1.779755284 1983-03-21;1.64740267 1983-03-21;1.72369188 1983-03-22;5.561735261 1983-03-23;1.334816463 1983-03-24;1.446051168 1983-03-28;1.334816463 1983-04-01;1.590656285 1983-04-05;1.112347052 1983-04-06;3.03243604 1983-04-10;3.786429366 1983-04-11;2.224694105 1983-04-12;2.447163515 1983-04-15;10.01112347 1983-04-17;1.163547275 1983-04-18;1.112347052 1983-04-18;3.152863181 1983-04-20;3.726362625 1983-04-21;4.449388209 1983-04-21;2.281263626 1983-04-24;3.559510567 1983-05-04;4.449388209 1983-05-10;1.209121246 1983-05-13;1.156840934 1983-05-14;2.224694105 1983-05-17;1.240266963 1983-05-18;1.15925584 1983-05-24;1.668520578 1983-05-27;3.337041157 1983-05-29;10.07230256 1983-06-06;2.141268076 1983-06-07;1.474972191 1983-06-10;1.112347052 1983-06-10;1.689655172 1983-06-17;1.668520578 1983-06-19;1.617352614 1983-06-22;1.112347052 1983-06-23;2.169076752 1983-06-24;1.493882091 1983-06-29;1.408231368 1983-07-01;2.502780868 1983-07-03;2.258064516 1983-07-03;3.726362625 1983-07-04;1.893699666 1983-07-04;1.704115684 1983-07-07;2.342854283 1983-07-08;1.946607341 1983-07-12;1.27919911 1983-07-15;1.510696329 1983-07-17;2.447163515 1983-07-18;3.675194661 1983-07-19;2.378241379 1983-07-20;1.774193548 1983-07-20;1.51512792 1983-07-25;2.234705228 1983-07-25;1.816462736 1983-08-02;3.448275862 1983-08-05;4.67185762 1983-08-09;1.156840934 1983-08-16;1.223581758 1983-08-16;4.078929922 1983-08-17;1.19243604 1983-08-22;1.204093437 1983-08-22;2.55839822 1983-08-22;1.618464961 1983-08-23;1.822024472 1983-08-25;1.61056396 1983-08-25;1.860956618 1983-08-25;7.992070078 1983-08-28;1.785317019 1983-08-30;4.89432703 1983-08-31;2.52057842 1983-08-31;1.394883204 1983-08-31;1.390433815 1983-09-01;1.297179088 1983-09-01;3.670745273 1983-09-03;3.876529477 1983-09-03;3.587319244 1983-09-04;1.437954394 1983-09-05;1.17527475 1983-09-08;1.501668521 1983-09-09;1.506003337 1983-09-13;5.925472747 1983-09-16;12.63181313 1983-09-16;3.061179088 1983-09-17;1.436040044 1983-09-18;2.27919911 1983-09-18;1.491766407 1983-09-19;6.916553949 1983-09-21;1.604229143 1983-09-25;1.668520578 1983-09-25;1.157211346 1983-09-27;1.320355951 1983-09-29;3.448275862 1983-10-01;1.975761958 1983-10-02;1.85650723 1983-10-03;2.002224694 1983-10-03;5.300503893 1983-10-05;4.004449388 1983-10-06;1.124468298 1983-10-07;1.546494994 1983-10-11;2.55839822 1983-10-20;1.47916574 1983-10-22;1.259399333 1983-10-22;3.197997775 1983-10-24;3.114571746 1983-10-27;1.312569522 1983-11-01;5.672969967 1983-11-13;13.34816463 1983-11-15;11.43159066 1983-11-16;4.259176863 1983-11-23;3.366826474 1983-11-25;1.112347052 1983-11-26;1.112347052 1983-11-28;1.446051168 1983-11-30;2.073114572 1983-12-07;1.223581758 1983-12-15;1.612903226 1983-12-17;1.319243604 1983-12-19;1.129032258 1983-12-20;2.33592881 1983-12-23;1.724137931 1983-12-24;11.12347052 1983-12-25;1.668520578 1983-12-25;1.557285873 1983-12-27;1.557285873 1983-12-27;1.933311457 1983-12-27;1.724137931 1983-12-30;1.501668521 1984-01-01;2.207434555 1984-01-01;1.047120419 1984-01-02;1.425361257 1984-01-04;1.361256545 1984-01-07;9.314136126 1984-01-08;1.644890052 1984-01-09;2.617801047 1984-01-10;2.541112042 1984-01-14;1.570680628 1984-01-15;1.256544503 1984-01-31;1.458638743 1984-02-06;1.047120419 1984-02-07;2.231413613 1984-02-07;2.19895288 1984-02-16;5.02617801 1984-02-25;2.408376963 1984-02-28;1.65217801 1984-02-29;1.151832461 1984-03-06;1.31968377 1984-03-06;2.701570681 1984-03-06;2.544502618 1984-03-07;2.356020942 1984-03-07;1.256544503 1984-03-08;1.67539267 1984-03-09;1.361256545 1984-03-12;3.87434555 1984-03-15;1.769633508 1984-03-17;1.118324607 1984-03-17;2.209424084 1984-03-19;1.098429319 1984-03-25;1.151832461 1984-03-27;2.963749738 1984-03-28;11.62303665 1984-03-28;14.29319372 1984-04-03;1.287958115 1984-04-07;1.465968586 1984-04-14;13.62303665 1984-04-19;1.129842932 1984-04-19;2.403141361 1984-04-22;5.445026178 1984-04-25;1.046910995 1984-04-26;1.059162304 1984-04-26;2.094240838 1984-04-26;1.855497382 1984-04-27;1.570680628 1984-04-27;1.937172775 1984-04-30;2.203141361 1984-05-02;2.460732984 1984-05-12;1.427616754 1984-05-12;1.735078534 1984-05-13;4.083769634 1984-05-14;2.157068063 1984-05-19;1.465968586 1984-05-20;1.168586387 1984-05-20;1.22513089 1984-05-29;1.151832461 1984-06-01;3.769633508 1984-06-01;1.095052356 1984-06-04;1.204188482 1984-06-07;2.617801047 1984-06-08;1.871204188 1984-06-08;4.397905759 1984-06-08;4.607329843 1984-06-11;18.64648377 1984-06-14;1.047120419 1984-06-18;1.047120419 1984-06-19;1.047120419 1984-06-19;15.81151832 1984-06-22;1.989528796 1984-06-24;1.047120419 1984-06-24;1.256544503 1984-07-01;1.151832461 1984-07-05;1.073298429 1984-07-09;1.194420942 1984-07-12;1.064361257 1984-07-12;1.384293194 1984-07-12;1.130890052 1984-07-15;1.151832461 1984-07-17;1.793717277 1984-07-20;1.141361257 1984-07-23;1.632905759 1984-07-27;2.643979058 1984-08-01;1.286896335 1984-08-01;4.45026178 1984-08-01;1.236649215 1984-08-02;1.959162304 1984-08-04;1.191050262 1984-08-05;1.314433508 1984-08-07;1.989528796 1984-08-09;1.649570681 1984-08-10;2.722513089 1984-08-11;1.132420942 1984-08-16;1.780104712 1984-08-17;1.607329843 1984-08-20;1.204188482 1984-08-20;1.073298429 1984-08-20;1.09947644 1984-08-21;1.406282723 1984-08-21;1.965445026 1984-08-26;3.363190576 1984-08-28;1.570680628 1984-08-28;1.256544503 1984-08-29;2.762440838 1984-08-31;1.066485864 1984-08-31;1.377950785 1984-09-02;1.300253403 1984-09-04;1.319371728 1984-09-05;3.403141361 1984-09-09;1.361256545 1984-09-09;1.178010471 1984-09-10;4.293193717 1984-09-11;4.808376963 1984-09-11;1.09947644 1984-09-14;2.219895288 1984-09-15;2.617801047 1984-09-18;1.434496335 1984-09-23;1.047120419 1984-09-26;2.513089005 1984-09-26;1.621459686 1984-09-28;19.16230366 1984-09-30;1.570680628 1984-10-01;2.303664921 1984-10-03;1.845554974 1984-10-04;1.047120419 1984-10-04;1.989528796 1984-10-06;2.827225131 1984-10-08;1.256544503 1984-10-09;3.979057592 1984-10-10;1.361256545 1984-10-10;1.633507853 1984-10-24;18.84816754 1984-10-28;1.12565445 1984-10-29;5.30557801 1984-11-01;1.727748691 1984-11-02;1.165342408 1984-11-04;1.151832461 1984-11-05;1.256544503 1984-11-07;3.568586387 1984-11-07;7.235602094 1984-11-07;1.570680628 1984-11-10;7.643979058 1984-11-13;2.122003141 1984-11-14;2.931937173 1984-11-15;1.287958115 1984-11-17;1.06800733 1984-11-17;1.27561466 1984-11-23;1.623036649 1984-11-23;2.670157068 1984-12-02;1.256544503 1984-12-03;1.103048168 1984-12-03;1.204188482 1984-12-08;1.151832461 1984-12-08;1.884816754 1984-12-10;7.539267016 1984-12-11;1.09947644 1984-12-12;1.570680628 1984-12-13;2.670157068 1984-12-17;1.151832461 1984-12-19;3.87434555 1984-12-22;5.02617801 1984-12-28;1.780104712 1984-12-29;4.764397906 1984-12-31;1.151832461 1985-01-01;1.5 1985-01-03;1.251 1985-01-04;1.03 1985-01-05;1.05 1985-01-05;1.9 1985-01-05;1.1 1985-01-06;1.88175 1985-01-07;1.007 1985-01-07;1.63 1985-01-07;1.025 1985-01-08;1.007274 1985-01-08;3.5 1985-01-10;2.9 1985-01-11;2.463137 1985-01-11;4.625 1985-01-11;1.03 1985-01-11;1.4 1985-01-12;1.077075 1985-01-12;1.32 1985-01-13;2.6 1985-01-13;1.08 1985-01-14;1.517 1985-01-16;1.07 1985-01-17;2.256823 1985-01-20;1.788413 1985-01-22;1.278896 1985-01-24;4.609074 1985-01-25;3.183 1985-01-28;1.2 1985-01-28;2.743 1985-01-30;3 1985-01-31;1.008938 1985-02-08;1.004084 1985-02-10;1.85 1985-02-11;1.520994 1985-02-11;1.250089 1985-02-11;1 1985-02-12;1.956 1985-02-14;1.05 1985-02-15;2.779 1985-02-16;22.137567 1985-02-17;1.445 1985-02-17;1.0051 1985-02-19;1 1985-02-19;1 1985-02-20;16.3 1985-02-20;1.11 1985-02-21;1.475 1985-02-21;1.049873 1985-02-23;1.753542 1985-02-25;6.143355 1985-02-27;1.23 1985-03-03;1.939 1985-03-04;46.5 1985-03-05;1.241472 1985-03-11;3.4 1985-03-12;1 1985-03-17;6.2 1985-03-19;1.966237 1985-03-20;2.17 1985-03-22;1.296 1985-03-23;1.555 1985-03-27;1.15 1985-03-28;1.33 1985-03-28;4.124285 1985-04-11;1.394239 1985-04-12;4.761228 1985-04-14;4.868852 1985-04-19;4 1985-04-21;1.6 1985-04-24;7.085 1985-04-26;1.765054 1985-04-27;6.306654 1985-04-28;1.25 1985-04-28;1.2 1985-04-29;1.226412 1985-04-30;6.563 1985-04-30;4.17 1985-05-02;2.68 1985-05-02;1.075 1985-05-04;1.932957 1985-05-05;1.375 1985-05-06;1.25 1985-05-07;3.38 1985-05-09;1.3801 1985-05-14;2.283 1985-05-15;2.35 1985-05-26;3.15 1985-05-27;3.35 1985-05-28;4 1985-05-28;10.5 1985-05-29;2.89 1985-05-31;5.5 1985-05-31;2.8 1985-06-01;1.26 1985-06-02;1.1 1985-06-06;2.126759 1985-06-10;2.2 1985-06-11;1.07 1985-06-12;9.2 1985-06-13;1.5 1985-06-15;1.65 1985-06-16;12.225 1985-06-18;1.4 1985-06-19;14.239 1985-06-22;1.085 1985-06-22;1.05 1985-06-27;2.65 1985-06-27;2.123 1985-06-28;5.2 1985-06-28;1.825 1985-06-29;1.1 1985-07-02;1 1985-07-02;2.065 1985-07-06;1.2774 1985-07-06;1.195 1985-07-07;1.2 1985-07-07;1.1 1985-07-08;1.4 1985-07-13;1.585 1985-07-15;3.265042 1985-07-15;1.2 1985-07-16;2.433 1985-07-22;1.6 1985-07-28;2 1985-08-02;4.76 1985-08-03;1.165 1985-08-04;1.372 1985-08-06;1.2 1985-08-06;1.65 1985-08-06;1.7 1985-08-07;1.3 1985-08-14;1.1 1985-08-16;1.1 1985-08-19;1.241012 1985-08-19;1.005 1985-08-20;3.282 1985-08-21;1.05 1985-08-23;57.410636 1985-08-24;1.088 1985-08-24;1.118 1985-08-25;2.67 1985-08-28;1.0749 1985-08-30;2.141 1985-08-31;5.85 1985-09-02;14.3 1985-09-04;1.971 1985-09-07;1.7 1985-09-08;6.167 1985-09-11;1.05 1985-09-12;1.156058 1985-09-13;3.58215 1985-09-15;13.5 1985-09-19;1.2015 1985-09-19;1.65 1985-09-23;1.3776 1985-09-24;3.8 1985-09-25;1.3255 1985-09-25;4.05 1985-09-29;6.7 1985-10-02;1.16 1985-10-03;1.5 1985-10-06;1.06 1985-10-10;1.491287 1985-10-11;1.981813 1985-10-12;1.5 1985-10-12;3.21436 1985-10-12;4.1 1985-10-13;1 1985-10-16;10.7 1985-10-17;19.4 1985-10-17;1.605603 1985-10-18;1.132 1985-10-18;2.255 1985-10-19;2.02 1985-10-20;1.231 1985-10-22;4.1 1985-10-25;7.23 1985-10-26;1.85 1985-10-29;1 1985-10-30;2.56 1985-11-05;1.553 1985-11-05;1.7 1985-11-06;1.045472 1985-11-06;1.054 1985-11-10;1 1985-11-13;8.71 1985-11-16;1.5 1985-11-17;1.5 1985-11-18;1.26106 1985-11-19;1.055 1985-11-27;1.282 1985-11-29;1.3 1985-12-03;1.3 1985-12-04;1.422078 1985-12-06;1 1985-12-07;1.2 1985-12-08;1.85 1985-12-10;1.18 1985-12-11;1.043 1985-12-11;1 1985-12-11;1.6 1985-12-11;5.6 1985-12-16;1.8 1985-12-18;2.5 1985-12-20;1.75 1985-12-29;1.45 1986-01-02;1.460945034 1986-01-03;1.157184185 1986-01-04;1.495756991 1986-01-05;5.207328833 1986-01-07;3.683702989 1986-01-09;1.446480231 1986-01-11;1.038657666 1986-01-12;1.253616201 1986-01-13;1.06075217 1986-01-13;1.398264224 1986-01-14;1.398264224 1986-01-14;2.410800386 1986-01-16;1.441851495 1986-01-16;1.639344262 1986-01-19;1.050626808 1986-01-21;1.755062681 1986-01-24;4.484088717 1986-01-27;1.677917068 1986-01-27;1.06075217 1986-01-30;1 1986-01-31;3.082931533 1986-02-01;1.277724204 1986-02-04;1.207328833 1986-02-04;1.928640309 1986-02-05;1.00289296 1986-02-05;1.089681774 1986-02-07;1.758129219 1986-02-11;1.446480231 1986-02-12;1.591128255 1986-02-12;1.108968177 1986-02-13;1.023109932 1986-02-14;2.00096432 1986-02-15;1.314310511 1986-02-16;2.068466731 1986-02-16;3.085824494 1986-02-18;6.798457088 1986-02-19;1.639344262 1986-02-21;1.639344262 1986-02-28;1.229508197 1986-02-28;1.735776278 1986-02-28;2.823416586 1986-03-01;2.507232401 1986-03-03;1.866739634 1986-03-03;4.43587271 1986-03-04;1.928640309 1986-03-04;1.06075217 1986-03-05;1.741465767 1986-03-07;3.085824494 1986-03-08;12.05400193 1986-03-08;1.157184185 1986-03-09;2.410800386 1986-03-10;1.558341369 1986-03-16;1.350048216 1986-03-19;3.182256509 1986-03-19;1.900663452 1986-03-19;2.31436837 1986-03-22;3.707810993 1986-03-23;3.206364513 1986-03-30;1.06075217 1986-04-01;1.446480231 1986-04-02;1.157184185 1986-04-02;5.207328833 1986-04-02;3.664416586 1986-04-03;1.659228544 1986-04-03;2.507232401 1986-04-07;3.191899711 1986-04-07;16.44165863 1986-04-08;1.082931533 1986-04-08;2.410800386 1986-04-10;3.66924783 1986-04-10;1.181292189 1986-04-10;29.02603664 1986-04-11;4.918032787 1986-04-11;1.148505304 1986-04-16;1.542912247 1986-04-17;1.567020251 1986-04-18;1.253616201 1986-04-19;1.542912247 1986-04-22;1.832208293 1986-04-24;1.663452266 1986-04-26;1.277724204 1986-04-27;2.4435892 1986-04-28;2.892960463 1986-04-30;3.134040501 1986-05-01;2.603664417 1986-05-02;3.789778206 1986-05-03;1.902603664 1986-05-03;3.770438766 1986-05-05;1.166827387 1986-05-06;1.18900675 1986-05-07;1.321118611 1986-05-12;1.735776278 1986-05-12;12.53616201 1986-05-13;1.321118611 1986-05-15;1.157184185 1986-05-16;5.785920926 1986-05-21;1.832208293 1986-05-21;1.388979749 1986-05-22;1.205400193 1986-05-24;1.108968177 1986-05-28;1.729357763 1986-05-30;1.639344262 1986-06-01;1.087648023 1986-06-06;1.542912247 1986-06-09;1.432015429 1986-06-10;2.169720347 1986-06-14;5.400192864 1986-06-20;5.785920926 1986-06-22;1.350048216 1986-06-22;6.075216972 1986-06-26;18.32208293 1986-06-26;1.157184185 1986-06-29;1.591128255 1986-06-30;1.928640309 1986-06-30;1.446480231 1986-06-30;1.677917068 1986-06-30;1.157184185 1986-07-01;1.010998071 1986-07-01;2.844744455 1986-07-02;1.735776278 1986-07-04;1.150433944 1986-07-05;2.507232401 1986-07-06;2.892960463 1986-07-08;2.097396336 1986-07-11;2.086499518 1986-07-13;1.446480231 1986-07-15;2.150289296 1986-07-17;1.122092575 1986-07-18;1.658630665 1986-07-20;1.697203472 1986-07-22;1.591128255 1986-07-22;5.785920926 1986-07-22;1.055930569 1986-07-30;1.446480231 1986-07-31;2.892960463 1986-08-01;1.157184185 1986-08-01;1.120540019 1986-08-03;1.157184185 1986-08-03;1.203375121 1986-08-04;5.593056895 1986-08-04;1.432979749 1986-08-04;1.264320154 1986-08-05;1.399228544 1986-08-07;1.147703954 1986-08-13;1.23823433 1986-08-15;1.759884282 1986-08-16;1.542912247 1986-08-16;2.121504339 1986-08-17;1.542912247 1986-08-18;1.253616201 1986-08-18;1.928640309 1986-08-22;1.330761813 1986-08-28;1.928640309 1986-08-30;1.108968177 1986-09-02;2.025072324 1986-09-03;8.678881389 1986-09-07;2.217936355 1986-09-07;1.301832208 1986-09-08;1.123896818 1986-09-09;1.727579556 1986-09-09;1.37415622 1986-09-10;1.00695757 1986-09-12;8.100289296 1986-09-13;1.00289296 1986-09-13;1.171648987 1986-09-16;10.27000964 1986-09-17;1.271395371 1986-09-17;2.892960463 1986-09-18;3.345232401 1986-09-20;1.06075217 1986-09-20;2.892960463 1986-09-22;1.121504339 1986-09-24;1.697203472 1986-09-24;1.716489875 1986-09-25;1.1024108 1986-09-26;17.06846673 1986-09-27;2.603664417 1986-09-28;1.253616201 1986-09-28;3.567984571 1986-09-30;1.494696239 1986-10-03;1.639344262 1986-10-03;1.722275796 1986-10-03;2.351012536 1986-10-03;1.68756027 1986-10-03;1.470588235 1986-10-06;2.31436837 1986-10-06;1.253616201 1986-10-07;1.144429122 1986-10-11;1.205400193 1986-10-15;2.602700096 1986-10-16;2.941793635 1986-10-17;2.181292189 1986-10-19;1.446480231 1986-10-23;4.821600771 1986-10-26;3.837994214 1986-10-26;1.350048216 1986-10-28;1.542912247 1986-10-28;1.157184185 1986-10-29;1.928640309 1986-10-30;2.242044359 1986-10-30;1.263259402 1986-10-30;1.012536162 1986-10-31;1.928640309 1986-11-03;1.137897782 1986-11-03;1.037608486 1986-11-04;1.253616201 1986-11-06;2.18756027 1986-11-07;4.767295082 1986-11-08;1.542912247 1986-11-09;1.06075217 1986-11-10;2.75216972 1986-11-24;3.182256509 1986-11-24;1.446480231 1986-11-26;1.928640309 1986-11-29;1.591128255 1986-12-01;3.085824494 1986-12-02;4.098360656 1986-12-03;1.880424301 1986-12-04;2.410800386 1986-12-04;1.012536162 1986-12-05;1.928640309 1986-12-07;1.06075217 1986-12-12;1.639344262 1986-12-13;1.128254581 1986-12-13;1.446480231 1986-12-14;1.446480231 1986-12-18;2.892960463 1986-12-18;1.388621022 1986-12-21;1.639344262 1986-12-22;2.022179364 1986-12-23;1.705159113 1986-12-24;1.051108968 1986-12-25;17.74349084 1986-12-27;1.157184185 1986-12-28;3.857280617 1986-12-29;1.705159113 1986-12-29;1.350048216 1986-12-30;5.496624879 1987-01-01;1.023191095 1987-01-01;1.304267161 1987-01-02;1.066790353 1987-01-05;1.80890538 1987-01-07;3.246753247 1987-01-08;1.417439703 1987-01-09;2.490723562 1987-01-09;1.011131725 1987-01-09;2.971243043 1987-01-10;3.004638219 1987-01-11;1.420222635 1987-01-11;2.233766234 1987-01-11;1.397959184 1987-01-11;2.319109462 1987-01-11;2.852504638 1987-01-12;1.994434137 1987-01-12;1.742115028 1987-01-13;1.646567718 1987-01-14;2.97309833 1987-01-14;1.113172542 1987-01-16;1.484230056 1987-01-17;1.113172542 1987-01-18;1.149350649 1987-01-19;3.184601113 1987-01-19;2.226345083 1987-01-19;3.896103896 1987-01-21;1.437847866 1987-01-21;2.368274583 1987-01-22;1.021335807 1987-01-22;1.020408163 1987-01-24;2.736549165 1987-01-24;23.283859 1987-01-25;1.391465677 1987-01-25;1.391465677 1987-01-26;2.040816327 1987-01-26;1.020408163 1987-01-30;2.153061224 1987-02-02;1.066790353 1987-02-06;1.391465677 1987-02-06;1.459183673 1987-02-09;4.990723562 1987-02-09;1.057513915 1987-02-10;4.128014842 1987-02-11;1.076994434 1987-02-12;1.502782931 1987-02-13;1.021335807 1987-02-15;4.5 1987-02-16;3.107606679 1987-02-18;2.254174397 1987-02-19;1.757884972 1987-02-21;1.398886827 1987-02-22;1.252319109 1987-02-25;4.498144712 1987-02-27;2.41187384 1987-03-02;2.105751391 1987-03-02;3.188311688 1987-03-05;3.684601113 1987-03-07;1.576994434 1987-03-08;1.651205937 1987-03-08;2.523191095 1987-03-11;1.669758813 1987-03-12;1.90445269 1987-03-20;1.85528757 1987-03-22;1.623376623 1987-03-26;1.85528757 1987-03-28;2.319109462 1987-03-29;1.437847866 1987-03-30;3.038033395 1987-03-30;1.256957328 1987-04-01;1.244897959 1987-04-01;3.896103896 1987-04-02;1.113172542 1987-04-04;1.280148423 1987-04-05;6.586270872 1987-04-06;1.085343228 1987-04-06;1.606679035 1987-04-07;1.298701299 1987-04-09;1.762523191 1987-04-13;1.113172542 1987-04-17;1.250463822 1987-04-17;1.235621521 1987-04-18;1.113172542 1987-04-24;4.823747681 1987-04-24;2.425788497 1987-04-25;3.147495362 1987-04-26;1.618738404 1987-04-27;1.521335807 1987-04-28;1.85528757 1987-04-29;7.142857143 1987-04-30;1.217068646 1987-05-02;1.113172542 1987-05-04;1.576994434 1987-05-06;1.623376623 1987-05-06;1.762523191 1987-05-13;1.391465677 1987-05-14;1.159554731 1987-05-14;11.13172542 1987-05-16;1.113172542 1987-05-22;1.85528757 1987-05-23;1.669758813 1987-05-23;12.52319109 1987-05-24;2.040816327 1987-05-28;5.751391466 1987-05-28;5.565862709 1987-05-29;5.751391466 1987-05-30;1.113172542 1987-06-01;4.174397032 1987-06-03;8.812615955 1987-06-03;3.780148423 1987-06-05;32.46753247 1987-06-06;2.087198516 1987-06-08;3.293135436 1987-06-08;3.339517625 1987-06-10;1.390538033 1987-06-11;1.623376623 1987-06-13;4.452690167 1987-06-14;1.05380334 1987-06-16;1.391465677 1987-06-24;1.391465677 1987-06-25;1.669758813 1987-06-25;1.690166976 1987-07-01;1.317254174 1987-07-06;4.406307978 1987-07-06;1.391465677 1987-07-06;2.133580705 1987-07-08;1.20593692 1987-07-12;1.363636364 1987-07-15;2.397959184 1987-07-17;3.246753247 1987-07-19;1.069573284 1987-07-28;2.875695733 1987-07-30;1.020408163 1987-07-30;1.113172542 1987-08-04;1.816326531 1987-08-06;1.356215213 1987-08-07;1.484230056 1987-08-07;2.782931354 1987-08-11;1.614100186 1987-08-17;29.03710575 1987-08-18;18.5528757 1987-08-22;2.504638219 1987-08-24;3.06122449 1987-08-25;1.16419295 1987-09-02;1.113172542 1987-09-06;1.363636364 1987-09-09;1.07606679 1987-09-12;1.512059369 1987-09-15;1.847866419 1987-09-15;16.88311688 1987-09-16;1.391465677 1987-09-18;1.901669759 1987-09-18;1.448979592 1987-09-19;1.768089054 1987-09-19;1.020408163 1987-09-21;1.579777365 1987-09-22;1.20593692 1987-09-24;1.516697588 1987-09-24;1.020408163 1987-09-24;1.85528757 1987-09-27;1.20593692 1987-09-28;1.020408163 1987-09-30;1.224489796 1987-10-03;1.004638219 1987-10-03;7.792207792 1987-10-03;1.349721707 1987-10-05;27.82931354 1987-10-05;4.174397032 1987-10-06;5.899814471 1987-10-08;1.006493506 1987-10-11;1.50742115 1987-10-11;1.20593692 1987-10-12;1.113172542 1987-10-12;12.0593692 1987-10-14;2.319109462 1987-10-16;3.339517625 1987-10-17;1.159554731 1987-10-18;2.372912801 1987-10-19;1.096474954 1987-10-20;1.104823748 1987-10-22;1.252319109 1987-10-24;3.650278293 1987-10-25;1.391465677 1987-10-26;1.298701299 1987-10-27;6.307977737 1987-10-30;9.461966605 1987-10-30;2.875695733 1987-10-31;1.683673469 1987-11-01;3.481447124 1987-11-01;7.606679035 1987-11-03;1.391465677 1987-11-05;3.896103896 1987-11-06;1.125231911 1987-11-07;11.59554731 1987-11-08;3.076994434 1987-11-11;2.115027829 1987-11-14;1.85528757 1987-11-15;1.756957328 1987-11-16;1.484230056 1987-11-18;3.06122449 1987-11-21;1.576994434 1987-11-29;1.734693878 1987-12-02;1.762523191 1987-12-02;1.289424861 1987-12-06;1.468460111 1987-12-07;5.194805195 1987-12-07;1.948051948 1987-12-09;4.118738404 1987-12-09;4.962894249 1987-12-12;5.102040816 1987-12-12;1.345083488 1987-12-12;1.075139147 1987-12-13;7.101113173 1987-12-13;2.070500928 1987-12-14;2.41187384 1987-12-14;1.237476809 1987-12-16;2.040816327 1987-12-17;1.298701299 1987-12-17;2.894248609 1987-12-17;1.066790353 1987-12-19;1.391465677 1987-12-19;1.530612245 1987-12-20;1.048237477 1987-12-23;1.178107607 1987-12-29;1.345083488 1987-12-30;2.040816327 1987-12-31;1.669758813 1988-01-01;1.618456078 1988-01-01;1.027506655 1988-01-03;16.41526176 1988-01-04;1.508429459 1988-01-08;1.685891748 1988-01-10;1.330967169 1988-01-15;2.30700976 1988-01-19;1.92014197 1988-01-20;3.771073647 1988-01-21;1.15350488 1988-01-22;5.094055013 1988-01-23;2.956521739 1988-01-23;1.798580302 1988-01-23;1.552795031 1988-01-25;1.330967169 1988-01-26;1.887311446 1988-01-29;1.774622893 1988-01-30;1.330967169 1988-02-01;6.015971606 1988-02-06;3.261756877 1988-02-09;1.166814552 1988-02-10;2.520851819 1988-02-11;1.293700089 1988-02-14;18.42413487 1988-02-17;1.064773736 1988-02-19;1.955634428 1988-02-19;2.040816327 1988-02-21;7.985803017 1988-02-22;3.49689441 1988-02-29;6.511091393 1988-02-29;1.259982254 1988-03-02;1.853593611 1988-03-03;1.552795031 1988-03-07;1.267080745 1988-03-08;2.129547471 1988-03-09;2.706299911 1988-03-12;1.552795031 1988-03-12;1.330967169 1988-03-14;1.467613132 1988-03-14;2.30700976 1988-03-18;1.90771961 1988-03-19;1.242236025 1988-03-21;1.211180124 1988-03-24;1.996450754 1988-03-25;38.15439219 1988-04-06;2.129547471 1988-04-09;2.48447205 1988-04-12;1.690328305 1988-04-13;1.765749778 1988-04-14;1.538598048 1988-04-14;1.685891748 1988-04-16;1.242236025 1988-04-19;1.330967169 1988-04-20;1.982253771 1988-04-20;1.863354037 1988-04-23;1.885536823 1988-04-24;5.210292813 1988-04-24;1.15350488 1988-04-24;1.788819876 1988-04-26;5.767524401 1988-04-26;1.330967169 1988-04-26;6.832298137 1988-04-29;1.36202307 1988-04-29;3.549245785 1988-04-30;1.375332742 1988-04-30;2.30700976 1988-05-08;2.661934339 1988-05-08;7.542147294 1988-05-09;5.681455191 1988-05-09;9.228039042 1988-05-11;1.080745342 1988-05-11;1.612244898 1988-05-12;1.242236025 1988-05-12;1.356699201 1988-05-12;1.508429459 1988-05-13;2.30700976 1988-05-15;1.375332742 1988-05-16;1.552795031 1988-05-17;27.33806566 1988-05-19;1.237799468 1988-05-23;1.192546584 1988-05-25;1.277728483 1988-05-26;1.330967169 1988-05-26;7.542147294 1988-05-27;2.223602484 1988-05-27;1.15350488 1988-05-29;1.787932564 1988-05-29;1.437444543 1988-05-29;6.140195209 1988-05-30;1.616681455 1988-05-31;2.094055013 1988-05-31;11.80124224 1988-06-01;2.972493345 1988-06-03;1.952085182 1988-06-03;2.488021295 1988-06-05;3.992901508 1988-06-05;2.222715173 1988-06-05;25.28837622 1988-06-06;2.440106477 1988-06-06;3.726708075 1988-06-06;3.752440106 1988-06-10;1.641526176 1988-06-13;1.242236025 1988-06-15;1.242236025 1988-06-16;4.436557232 1988-06-21;1.064773736 1988-06-21;1.197870453 1988-06-24;2.395740905 1988-06-24;10.20408163 1988-06-29;1.774622893 1988-06-29;2.320319432 1988-06-29;2.30700976 1988-07-01;1.087843833 1988-07-01;1.142857143 1988-07-01;1.15350488 1988-07-01;1.866903283 1988-07-02;2.48447205 1988-07-04;2.573203194 1988-07-05;1.121561668 1988-07-06;5.989352263 1988-07-08;2.50931677 1988-07-09;1.328305235 1988-07-12;1.045252884 1988-07-14;1.387755102 1988-07-16;1.15350488 1988-07-18;1.286601597 1988-07-18;1.047027507 1988-07-19;4.614019521 1988-07-19;20.45252884 1988-07-19;2.218278616 1988-07-20;5.323868678 1988-07-26;1.216503993 1988-07-30;7.098491571 1988-08-08;1.330967169 1988-08-09;1.774622893 1988-08-10;3.01242236 1988-08-12;47.01952085 1988-08-15;1.100266193 1988-08-18;2.309671695 1988-08-21;1.145519077 1988-08-21;1.376220053 1988-08-22;1.142857143 1988-08-24;2.896184561 1988-08-24;1.774622893 1988-08-29;1.354037267 1988-09-01;24.57852706 1988-09-04;2.261756877 1988-09-05;4.436557232 1988-09-05;1.348713398 1988-09-06;15.88287489 1988-09-06;1.020408163 1988-09-08;1.262644188 1988-09-08;2.661934339 1988-09-09;1.051464064 1988-09-11;1.952085182 1988-09-14;1.357586513 1988-09-17;1.641526176 1988-09-18;7.542147294 1988-09-19;2.218278616 1988-09-19;5.501330967 1988-09-20;2.211180124 1988-09-22;1.477373558 1988-09-27;1.641526176 1988-09-27;1.020408163 1988-10-01;3.283052351 1988-10-04;25.9538598 1988-10-04;1.064773736 1988-10-08;4.081632653 1988-10-08;2.28837622 1988-10-17;1.100266193 1988-10-20;2.838509317 1988-10-20;3.194321207 1988-10-23;1.597160603 1988-10-28;1.774622893 1988-10-29;1.721384206 1988-11-02;2.333629104 1988-11-03;4.494232476 1988-11-05;8.873114463 1988-11-05;2.676131322 1988-11-07;1.1472937 1988-11-07;1.330967169 1988-11-10;1.508429459 1988-11-11;1.242236025 1988-11-14;1.109139308 1988-11-18;6.211180124 1988-11-19;1.73025732 1988-11-19;1.15350488 1988-11-20;1.055900621 1988-11-21;1.879325643 1988-11-23;1.401952085 1988-11-26;1.419698314 1988-11-27;2.715173026 1988-12-02;4.081632653 1988-12-02;1.752440106 1988-12-05;1.088731145 1988-12-06;3.549245785 1988-12-06;1.283052351 1988-12-08;2.173913043 1988-12-09;2.839396628 1988-12-12;3.371783496 1988-12-12;1.330967169 1988-12-14;4.614019521 1988-12-15;10.82519965 1988-12-16;5.767524401 1988-12-17;1.109139308 1988-12-17;31.05590062 1988-12-18;3.105590062 1988-12-18;1.330967169 1988-12-25;1.685891748 1988-12-26;3.992901508 1989-01-02;1.84081287 1989-01-03;1.282811177 1989-01-05;5.376799323 1989-01-09;1.361558002 1989-01-11;1.058425064 1989-01-11;1.00338696 1989-01-14;2.963590178 1989-01-15;1.270956816 1989-01-15;1.905165114 1989-01-17;4.233700254 1989-01-17;1.947502117 1989-01-19;2.911092295 1989-01-20;24.55546147 1989-01-21;1.227773074 1989-01-24;1.219305673 1989-01-24;3.268416596 1989-01-26;4.82641829 1989-01-26;1.6596105 1989-01-29;1.214225233 1989-01-31;1.016088061 1989-02-02;1.523285351 1989-02-02;2.684165961 1989-02-05;1.562235394 1989-02-06;1.121083827 1989-02-13;1.014394581 1989-02-14;42.09144793 1989-02-14;1.693480102 1989-02-14;1.640135478 1989-02-15;1.947502117 1989-02-15;4.657070279 1989-02-15;1.058425064 1989-02-18;1.116003387 1989-02-22;1.524132091 1989-02-23;1.392040644 1989-02-27;1.227773074 1989-03-04;14.39458086 1989-03-06;1.130397968 1989-03-07;1.744284505 1989-03-07;1.947502117 1989-03-08;1.185436071 1989-03-14;2.565622354 1989-03-16;1.148179509 1989-03-17;2.176121931 1989-03-19;1.33107536 1989-03-23;20.86367485 1989-03-23;1.894157494 1989-03-23;2.116850127 1989-03-24;1.651143099 1989-03-27;1.058425064 1989-03-27;9.229466554 1989-04-01;1.143099069 1989-04-03;5.927180356 1989-04-04;1.198137172 1989-04-05;1.774767146 1989-04-06;1.875529213 1989-04-09;5.66469094 1989-04-12;1.100762066 1989-04-14;4.149026249 1989-04-16;1.283657917 1989-04-17;1.058425064 1989-04-19;2.201524132 1989-04-20;1.289585097 1989-04-21;1.354784081 1989-04-23;4.416596105 1989-04-24;1.270110076 1989-04-26;14.39458086 1989-04-28;2.686706181 1989-04-28;1.693480102 1989-04-28;1.624047417 1989-04-30;3.386960203 1989-05-02;4.064352244 1989-05-03;1.301439458 1989-05-04;1.270110076 1989-05-06;1.553767993 1989-05-06;1.476714649 1989-05-07;1.189669771 1989-05-11;1.016088061 1989-05-11;10.13717189 1989-05-13;2.66299746 1989-05-13;1.045723963 1989-05-15;3.810330229 1989-05-18;1.270110076 1989-05-19;1.693480102 1989-05-21;1.481795089 1989-05-22;1.524132091 1989-05-23;2.963590178 1989-05-24;1.181202371 1989-05-24;1.565622354 1989-05-24;3.048264183 1989-05-25;3.33784928 1989-05-25;1.457239627 1989-05-26;1.016088061 1989-05-29;4.301439458 1989-06-02;2.032176122 1989-06-04;4.022015241 1989-06-05;1.121930567 1989-06-08;1.879762913 1989-06-11;2.201524132 1989-06-11;1.270110076 1989-06-12;1.734123624 1989-06-13;1.16850127 1989-06-13;6.773920406 1989-06-16;1.176968671 1989-06-17;4.50042337 1989-06-17;2.213378493 1989-06-21;1.016088061 1989-06-21;1.862828112 1989-06-23;2.201524132 1989-06-27;1.219305673 1989-06-27;5.715495343 1989-06-28;6.435224386 1989-06-28;5.50381033 1989-06-28;2.540220152 1989-06-28;5.080440305 1989-06-29;5.080440305 1989-07-03;2.032176122 1989-07-05;4.091447925 1989-07-06;1.901778154 1989-07-08;4.82641829 1989-07-10;2.132091448 1989-07-10;1.569856054 1989-07-13;1.253175275 1989-07-18;1.270110076 1989-07-18;3.099068586 1989-07-18;1.910245555 1989-07-20;1.295512278 1989-07-22;2.540220152 1989-07-23;2.487722269 1989-07-24;2.286198137 1989-07-24;1.405588484 1989-07-25;1.102455546 1989-07-26;1.016088061 1989-07-28;3.852667231 1989-07-28;12.80186283 1989-07-28;1.608806097 1989-07-30;1.524132091 1989-07-31;1.972904318 1989-08-02;1.270110076 1989-08-03;1.784928027 1989-08-04;16.08806097 1989-08-04;1.439458086 1989-08-04;152.4132091 1989-08-05;1.439458086 1989-08-05;3.130397968 1989-08-07;6.287044877 1989-08-08;2.777307367 1989-08-09;1.033022862 1989-08-10;1.016088061 1989-08-11;14.01354784 1989-08-18;1.270110076 1989-08-22;1.215071973 1989-08-23;8.367485182 1989-08-23;1.058425064 1989-08-23;1.117696867 1989-08-24;3.810330229 1989-08-25;1.100762066 1989-08-26;1.520745131 1989-08-27;1.487722269 1989-08-27;3.386960203 1989-08-28;4.657070279 1989-08-28;2.277730737 1989-08-29;1.041490262 1989-08-30;1.176968671 1989-08-30;1.524132091 1989-08-31;1.288738357 1989-09-04;1.270110076 1989-09-04;3.773920406 1989-09-09;1.198137172 1989-09-10;2.352243861 1989-09-11;1.066892464 1989-09-11;1.066892464 1989-09-11;9.398814564 1989-09-11;1.270110076 1989-09-14;5.770533446 1989-09-14;1.049957663 1989-09-14;1.536833192 1989-09-16;1.083827265 1989-09-18;1.879762913 1989-09-21;1.278577477 1989-09-22;1.354784081 1989-09-24;3.979678239 1989-09-25;5.249788315 1989-09-25;1.565622354 1989-09-25;12.70110076 1989-09-26;4.572396274 1989-09-27;2.921253175 1989-09-28;1.778154107 1989-09-29;1.524132091 1989-09-29;11.6850127 1989-10-01;2.116850127 1989-10-02;1.733276884 1989-10-02;2.540220152 1989-10-07;1.176121931 1989-10-20;6.011854361 1989-10-22;32.38780694 1989-10-23;10.58425064 1989-10-24;1.642675699 1989-10-24;3.386960203 1989-10-26;1.016088061 1989-11-10;4.868755292 1989-11-11;1.528365792 1989-11-12;1.100762066 1989-11-13;1.079593565 1989-11-13;1.693480102 1989-11-14;18.62828112 1989-11-15;1.731583404 1989-11-16;3.810330229 1989-11-16;1.100762066 1989-11-19;1.83742591 1989-11-20;1.016088061 1989-11-29;4.657070279 1989-11-29;1.314987299 1989-11-30;1.524132091 1989-12-03;2.286198137 1989-12-03;1.016088061 1989-12-05;1.885690093 1989-12-06;1.311600339 1989-12-06;1.227773074 1989-12-08;1.100762066 1989-12-09;3.386960203 1989-12-13;1.634208298 1989-12-14;1.013547841 1989-12-15;1.726502964 1989-12-18;3.810330229 1989-12-18;2.456392887 1989-12-19;2.686706181 1989-12-20;1.00338696 1989-12-22;1.015241321 1989-12-25;1.862828112 1989-12-29;1.083827265 1989-12-30;2.116850127 1989-12-30;4.149026249 1989-12-31;1.016088061 1989-12-31;1.016088061 1989-12-31;1.176968671 1990-01-01;1.877062706 1990-01-06;1.268151815 1990-01-08;1.356435644 1990-01-10;7.425742574 1990-01-12;1.134488449 1990-01-13;1.329207921 1990-01-17;1.287128713 1990-01-19;1.565181518 1990-01-20;1.072607261 1990-01-20;2.310231023 1990-01-24;1.094059406 1990-01-25;2.617161716 1990-01-26;1.99009901 1990-01-26;1.987623762 1990-01-30;1.155940594 1990-01-31;3.378712871 1990-02-05;1.2169967 1990-02-07;1.951320132 1990-02-08;4.125412541 1990-02-09;1.402640264 1990-02-09;1.02640264 1990-02-11;1.707920792 1990-02-12;1.237623762 1990-02-12;3.300330033 1990-02-18;1.278877888 1990-02-19;2.981023102 1990-02-20;4.075907591 1990-02-22;3.712871287 1990-02-26;1.237623762 1990-02-27;1.031353135 1990-02-27;1.454620462 1990-03-07;1.689768977 1990-03-10;2.367986799 1990-03-11;3.465346535 1990-03-12;1.237623762 1990-03-15;1.064356436 1990-03-17;1.423267327 1990-03-19;1.485148515 1990-03-20;2.475247525 1990-03-22;1.73679868 1990-03-23;10.99834983 1990-03-25;1.084983498 1990-03-27;1.155115512 1990-03-28;1.258250825 1990-03-29;1.897689769 1990-04-02;1.00660066 1990-04-02;1.108910891 1990-04-02;1.031353135 1990-04-03;1.320132013 1990-04-03;1.902640264 1990-04-04;8.250825083 1990-04-07;1.094884488 1990-04-08;2.887788779 1990-04-08;2.302805281 1990-04-09;1.735973597 1990-04-11;3.217821782 1990-04-13;1.084983498 1990-04-18;1.485148515 1990-04-18;2.499174917 1990-04-18;4.867986799 1990-04-20;1.105610561 1990-04-25;12.37623762 1990-04-25;1.74669967 1990-04-30;3.589108911 1990-05-01;1.021452145 1990-05-02;3.465346535 1990-05-03;4.537953795 1990-05-03;5.198019802 1990-05-04;2.675742574 1990-05-07;1.275577558 1990-05-07;1.650165017 1990-05-09;3.300330033 1990-05-09;1.320132013 1990-05-17;1.485148515 1990-05-18;2.5330033 1990-05-18;3.855610561 1990-05-22;1.208745875 1990-05-25;1.290429043 1990-05-25;2.805280528 1990-05-25;1.265676568 1990-05-26;5.612211221 1990-05-27;1.443894389 1990-05-30;2.103960396 1990-06-03;2.475247525 1990-06-04;1.815181518 1990-06-06;1.495049505 1990-06-06;2.04290429 1990-06-07;1.070957096 1990-06-07;1.237623762 1990-06-11;2.062706271 1990-06-14;1.017326733 1990-06-15;1.650165017 1990-06-15;15.28465347 1990-06-15;2.293729373 1990-06-16;1.072607261 1990-06-18;4.537953795 1990-06-27;1.237623762 1990-07-01;10.18481848 1990-07-01;1.664191419 1990-07-05;2.310231023 1990-07-05;6.372937294 1990-07-09;1.410891089 1990-07-10;1.114686469 1990-07-10;1.870462046 1990-07-13;2.062706271 1990-07-15;1.068481848 1990-07-15;1.670792079 1990-07-15;1.318481848 1990-07-16;1.115511551 1990-07-17;2.062706271 1990-07-18;1.072607261 1990-07-19;4.290429043 1990-07-20;2.982673267 1990-07-20;1.021452145 1990-07-21;8.085808581 1990-07-21;3.176567657 1990-07-22;1.654290429 1990-07-23;1.265676568 1990-07-23;1.081683168 1990-07-23;1.084158416 1990-07-24;2.805280528 1990-07-24;2.163366337 1990-07-27;1.278877888 1990-07-28;1.320957096 1990-07-28;1.339108911 1990-07-28;1.48349835 1990-07-28;1.822607261 1990-07-29;6.20049505 1990-07-31;13.20132013 1990-08-02;4.314356436 1990-08-04;2.407590759 1990-08-06;1.364686469 1990-08-10;1.005775578 1990-08-11;2.145214521 1990-08-13;1.901815182 1990-08-13;1.461221122 1990-08-14;20.82673267 1990-08-14;5.940594059 1990-08-14;2.722772277 1990-08-14;2.762376238 1990-08-15;1.027227723 1990-08-17;1.141914191 1990-08-18;1.646039604 1990-08-19;1.770627063 1990-08-20;4.125412541 1990-08-21;1.98019802 1990-08-22;1.320132013 1990-08-22;1.00660066 1990-08-22;8.250825083 1990-08-26;1.113861386 1990-08-29;1.650165017 1990-08-29;1.26650165 1990-08-30;1.553630363 1990-08-30;4.084158416 1990-08-31;1.448844884 1990-09-08;14.85148515 1990-09-11;1.596534653 1990-09-15;3.877887789 1990-09-19;2.021452145 1990-09-20;1.650165017 1990-09-27;1.010726073 1990-09-27;1.485148515 1990-09-30;1.278877888 1990-10-01;1.02310231 1990-10-01;4.702970297 1990-10-02;3.135313531 1990-10-03;1.864686469 1990-10-03;2.037953795 1990-10-04;2.145214521 1990-10-04;1.155115512 1990-10-07;1.056105611 1990-10-08;144.6575908 1990-10-10;28.63036304 1990-10-12;19.26567657 1990-10-12;5.528052805 1990-10-15;1.54290429 1990-10-16;4.620462046 1990-10-19;1.072607261 1990-10-19;3.712871287 1990-10-23;1.014026403 1990-10-29;1.113861386 1990-11-07;2.339933993 1990-11-10;1.938943894 1990-11-11;1.237623762 1990-11-13;3.052805281 1990-11-13;1.409240924 1990-11-15;2.553630363 1990-11-23;5.775577558 1990-11-27;1.134488449 1990-11-29;3.407590759 1990-11-29;1.072607261 1990-11-30;1.167491749 1990-11-30;1.072607261 1990-12-04;1.270627063 1990-12-05;1.472772277 1990-12-06;1.03630363 1990-12-07;1.650165017 1990-12-08;1.678217822 1990-12-09;2.640264026 1990-12-09;1.601485149 1990-12-10;17.73927393 1990-12-14;4.372937294 1990-12-15;1.361386139 1990-12-16;1.183993399 1990-12-17;2.97029703 1990-12-19;1.02310231 1990-12-20;1.130363036 1990-12-21;3.011551155 1990-12-21;1.402640264 1990-12-22;2.322607261 1990-12-23;1.115511551 1990-12-23;1.691419142 1990-12-24;1.237623762 1990-12-27;1.114686469 1990-12-30;1.402640264 1990-12-30;4.867986799 1990-12-30;1.072607261 1990-12-31;4.125412541 fExtremes/data/bmwRet.csv0000644000176200001440000043672511645005146015125 0ustar liggesusers%Y-%m-%d; BMW.RET 1973-01-02; 0.047704097 1973-01-03; 0.007127223 1973-01-04; 0.008883307 1973-01-05;-0.012440569 1973-01-08;-0.003569961 1973-01-09; 0 1973-01-10; 0.001740804 1973-01-11;-0.001740804 1973-01-12; 0.001740804 1973-01-15; 0 1973-01-16;-0.001740804 1973-01-17; 0.033455174 1973-01-18; 0.047370214 1973-01-19; 0.02348919 1973-01-22;-0.005467663 1973-01-23;-0.033019677 1973-01-24; 0.042774239 1973-01-25; 0.0378561 1973-01-26; 0.009224649 1973-01-29;-0.001570845 1973-01-30;-0.015446463 1973-01-31; 0.015446463 1973-02-01;-0.006149984 1973-02-02;-0.023445763 1973-02-05;-0.055259919 1973-02-06;-0.010148006 1973-02-07; 0.033238641 1973-02-08;-0.003853569 1973-02-09;-0.022665543 1973-02-12; 0.006759962 1973-02-13; 0.029494219 1973-02-14;-0.013588638 1973-02-15;-0.027657807 1973-02-16; 0.019990415 1973-02-19;-0.02171768 1973-02-20; 0.026695543 1973-02-21; 0.006543099 1973-02-22; 0.04007255 1973-02-23;-0.015869493 1973-02-26; 0.020517683 1973-02-27; 0.021671206 1973-02-28;-0.001566048 1973-03-01;-0.007077727 1973-03-02;-0.000552595 1973-03-05; 0.007630322 1973-03-06; 0.003051526 1973-03-07; 0.00101511 1973-03-08; 0.00661198 1973-03-09;-0.012718152 1973-03-12; 0.011243969 1973-03-13; 0.00302361 1973-03-14; 0.022428128 1973-03-15;-0.005921669 1973-03-16; 0.020574221 1973-03-19;-0.005835283 1973-03-20;-0.011773721 1973-03-21; 0.00643235 1973-03-22; 0.003914783 1973-03-23;-0.001503873 1973-03-26;-0.023835128 1973-03-27;-0.012095046 1973-03-28; 0.015096087 1973-03-29; 0 1973-03-30;-0.003001041 1973-04-02;-0.003010074 1973-04-03;-0.004493345 1973-04-04;-0.023092449 1973-04-05; 0.009332557 1973-04-06;-0.001575672 1973-04-09;-0.007756885 1973-04-10;-0.003103739 1973-04-11;-0.002793632 1973-04-12; 0.015229929 1973-04-13;-0.006159211 1973-04-16; 0.01836498 1973-04-17; 0 1973-04-18; 0.03289267 1973-04-19; 0.0102565 1973-04-20; 0 1973-04-23; 0 1973-04-24;-0.002909039 1973-04-25;-0.020679982 1973-04-26;-0.016531844 1973-04-27; 0.040120865 1973-04-30; 0.002900601 1973-05-01; 0 1973-05-02; 0.014378128 1973-05-03;-0.033422038 1973-05-04;-0.011878614 1973-05-07;-0.025838424 1973-05-08; 0.016758645 1973-05-09;-0.01213173 1973-05-10;-0.016964939 1973-05-11; 0.007768569 1973-05-14;-0.028188926 1973-05-15;-0.024085666 1973-05-16; 0.003239609 1973-05-17;-0.001660027 1973-05-18;-0.013043663 1973-05-21;-0.035115366 1973-05-22; 0.023518334 1973-05-23; 0.014873933 1973-05-24; 0.004937042 1973-05-25; 0.030498439 1973-05-28; 0 1973-05-29;-0.028913718 1973-05-30;-0.006521762 1973-05-31; 0 1973-06-01;-0.024885568 1973-06-04; 0.011713039 1973-06-05; 0.009306328 1973-06-06; 0.010387963 1973-06-07; 0.001665418 1973-06-08;-0.004920982 1973-06-11; 0 1973-06-12; 0.006500565 1973-06-13; 0.011316356 1973-06-14; 0.003198166 1973-06-15;-0.011280018 1973-06-18; 0.009723214 1973-06-19; 0 1973-06-20; 0.025262456 1973-06-21; 0 1973-06-22; 0.001597827 1973-06-25;-0.03006344 1973-06-26;-0.011334144 1973-06-27; 0.001579582 1973-06-28;-0.013043663 1973-06-29;-0.006586193 1973-07-02; 0.004901556 1973-07-03; 0 1973-07-04;-0.011531415 1973-07-05;-0.010114083 1973-07-06; 0.001721467 1973-07-09;-0.008463648 1973-07-10; 0 1973-07-11; 0.030072316 1973-07-12;-0.009895628 1973-07-13;-0.008364678 1973-07-16; 0.006663274 1973-07-17;-0.018475284 1973-07-18;-0.013622285 1973-07-19; 0 1973-07-20;-0.003434765 1973-07-23;-0.035103923 1973-07-24; 0 1973-07-25;-0.0290171 1973-07-26;-0.050842876 1973-07-27;-0.012849422 1973-07-30; 0.012849422 1973-07-31; 0.057779537 1973-08-01;-0.014111241 1973-08-02; 0.014111241 1973-08-03; 0.039382379 1973-08-06;-0.007753375 1973-08-07; 0.009727177 1973-08-08; 0.01908709 1973-08-09; 0.005612081 1973-08-10; 0.009399547 1973-08-13;-0.039941694 1973-08-14; 0 1973-08-15; 0 1973-08-16; 0.011562895 1973-08-17;-0.019346444 1973-08-20;-0.013722656 1973-08-21;-0.009998232 1973-08-22; 0 1973-08-23; 0 1973-08-24;-0.02011157 1973-08-27; 0 1973-08-28; 0.016102801 1973-08-29;-0.01202909 1973-08-30; 0.016037858 1973-08-31; 0.007969646 1973-09-03; 0.007173764 1973-09-04; 0.031748698 1973-09-05;-0.009544696 1973-09-06;-0.007738027 1973-09-07; 0.001895051 1973-09-10;-0.015628157 1973-09-11; 0.015628157 1973-09-12; 0.009689651 1973-09-13;-0.023305183 1973-09-14;-0.005958128 1973-09-17;-0.021936004 1973-09-18;-0.008114783 1973-09-19; 0.002082151 1973-09-20; 0.008004186 1973-09-21;-0.008004186 1973-09-24;-0.031013959 1973-09-25; 0.006318983 1973-09-26;-0.006318983 1973-09-27; 0.026940248 1973-09-28; 0.004073711 1973-10-01;-0.028870753 1973-10-02;-0.008404232 1973-10-03; 0.004210945 1973-10-04;-0.008439697 1973-10-05;-0.01279462 1973-10-08;-0.039396412 1973-10-09; 0.004454812 1973-10-10;-0.012586633 1973-10-11;-0.019022026 1973-10-12; 0.018184241 1973-10-15;-0.009050788 1973-10-16;-0.018351096 1973-10-17; 0.018351096 1973-10-18; 0.004535634 1973-10-19; 0.01348476 1973-10-22; 0.01248533 1973-10-23;-0.005862103 1973-10-24; 0.01464215 1973-10-25;-0.003563977 1973-10-26; 0.021695014 1973-10-29; 0.014862059 1973-10-30;-0.010578971 1973-10-31;-0.019470707 1973-11-01; 0.023735529 1973-11-02;-0.015057372 1973-11-05;-0.055463643 1973-11-06; 0.004556299 1973-11-07;-0.004556299 1973-11-08; 0.011299555 1973-11-09; 0.011277137 1973-11-12;-0.038743203 1973-11-13;-0.033027304 1973-11-14;-0.066891428 1973-11-15;-0.03125633 1973-11-16;-0.018757149 1973-11-19;-0.008057453 1973-11-20; 0.005420751 1973-11-21; 0 1973-11-22;-0.049878259 1973-11-23;-0.025972009 1973-11-26;-0.050772325 1973-11-27; 0.024247029 1973-11-28; 0.020676133 1973-11-29; 0.057006818 1973-11-30;-0.025185646 1973-12-03; 0.01130104 1973-12-04; 0.042967868 1973-12-05; 0.008972023 1973-12-06;-0.018783422 1973-12-07;-0.016440821 1973-12-10;-0.025245322 1973-12-11; 0.025245322 1973-12-12;-0.011112661 1973-12-13; 0.011112661 1973-12-14;-0.016715647 1973-12-17; 0.002740264 1973-12-18;-0.005619094 1973-12-19; 0.003923625 1973-12-20; 0.001695468 1973-12-21; 0.022165856 1973-12-24; 0 1973-12-25; 0 1973-12-26; 0 1973-12-27; 0.029759243 1973-12-28; 0 1973-12-31;-0.068877999 1974-01-01; 0 1974-01-02;-0.020080996 1974-01-03; 0.005797899 1974-01-04; 0.012027407 1974-01-07; 0.005167285 1974-01-08; 0.01130104 1974-01-09; 0.005602986 1974-01-10; 0.002724974 1974-01-11;-0.048453302 1974-01-14; 0.028824303 1974-01-15; 0.002771364 1974-01-16; 0.019704428 1974-01-17; 0.01653142 1974-01-18; 0.016262571 1974-01-21;-0.043968744 1974-01-22; 0.00832796 1974-01-23;-0.025327776 1974-01-24;-0.026122396 1974-01-25;-0.006432651 1974-01-28; 0.021462383 1974-01-29;-0.006065935 1974-01-30; 0.021137911 1974-01-31; 0.08570879 1974-02-01;-0.008174266 1974-02-04;-0.011210465 1974-02-05;-0.029417583 1974-02-06; 0.006865888 1974-02-07; 0.002783755 1974-02-08;-0.00850205 1974-02-11; 0 1974-02-12; 0.017057713 1974-02-13;-0.008555664 1974-02-14;-0.020037681 1974-02-15;-0.010627368 1974-02-18;-0.015891069 1974-02-19; 0.014717743 1974-02-20;-0.014717743 1974-02-21;-0.007841093 1974-02-22;-0.004144668 1974-02-25; 0.006010838 1974-02-26;-0.008022506 1974-02-27; 0.002011668 1974-02-28;-0.00915215 1974-03-01;-0.012243385 1974-03-04;-0.012533736 1974-03-05; 0 1974-03-06;-0.015644962 1974-03-07; 0.02200033 1974-03-08; 0.033584741 1974-03-11; 0.008883055 1974-03-12; 0.020640837 1974-03-13; 0 1974-03-14;-0.026598358 1974-03-15; 0.008988825 1974-03-18;-0.005939435 1974-03-19;-0.003049389 1974-03-20;-0.018088522 1974-03-21; 0.012095296 1974-03-22;-0.024338681 1974-03-25;-0.009351003 1974-03-26; 0.012357702 1974-03-27;-0.021796973 1974-03-28;-0.00559442 1974-03-29;-0.000701508 1974-04-01; 0 1974-04-02; 0.012552466 1974-04-03;-0.000554554 1974-04-04;-0.005004876 1974-04-05; 0.002505569 1974-04-08;-0.009498605 1974-04-09;-0.038631413 1974-04-10;-0.020038979 1974-04-11; 0.006822928 1974-04-12; 0 1974-04-15; 0 1974-04-16; 0.058143393 1974-04-17;-0.012631747 1974-04-18;-0.022569162 1974-04-19;-0.026348128 1974-04-22; 0 1974-04-23;-0.010137236 1974-04-24; 0.013542881 1974-04-25;-0.023632569 1974-04-26; 0 1974-04-29; 0.010089687 1974-04-30;-0.020435132 1974-05-01; 0 1974-05-02; 0.010345444 1974-05-03; 0.006787868 1974-05-06;-0.016521785 1974-05-07; 0.039996344 1974-05-08; 0.00979039 1974-05-09;-0.046887076 1974-05-10;-0.010416761 1974-05-13;-0.024631019 1974-05-14;-0.021537085 1974-05-15; 0.010746755 1974-05-16; 0.042326924 1974-05-17;-0.017431988 1974-05-20; 0.003572819 1974-05-21;-0.003572819 1974-05-22; 0.010526413 1974-05-23; 0 1974-05-24; 0.006905575 1974-05-27; 0 1974-05-28; 0 1974-05-29;-0.013859169 1974-05-30;-0.010600255 1974-05-31; 0.00484641 1974-06-03; 0 1974-06-04;-0.00124844 1974-06-05; 0.003429466 1974-06-06; 0.006978395 1974-06-07;-0.024561266 1974-06-10;-0.00364935 1974-06-11; 0.007127614 1974-06-12;-0.008400081 1974-06-13; 0 1974-06-14;-0.005906315 1974-06-17; 0 1974-06-18;-0.003689153 1974-06-19; 0.003689153 1974-06-20;-0.005941406 1974-06-21;-0.012315826 1974-06-24;-0.002285342 1974-06-25; 0.00959591 1974-06-26; 0.007257511 1974-06-27;-0.036826025 1974-06-28;-0.011401867 1974-07-01; 0.011401867 1974-07-02; 0.009788548 1974-07-03;-0.024907263 1974-07-04;-0.006963935 1974-07-05;-0.106175195 1974-07-08;-0.034712317 1974-07-09; 0.008791695 1974-07-10; 0.032909034 1974-07-11; 0.001504608 1974-07-12; 0.008607838 1974-07-15; 0.006685262 1974-07-16;-0.002594516 1974-07-17;-0.011759352 1974-07-18; 0.003373949 1974-07-19;-0.012806201 1974-07-22; 0 1974-07-23;-0.017205548 1974-07-24; 0.001733937 1974-07-25; 0 1974-07-26;-0.003277743 1974-07-29; 0 1974-07-30;-0.001933115 1974-07-31; 0.020682468 1974-08-01; 0.025450475 1974-08-02; 0.020483525 1974-08-05; 0 1974-08-06; 0.012234769 1974-08-07; 0.051069736 1974-08-08; 0.01901934 1974-08-09;-0.007530786 1974-08-12; 0.007530786 1974-08-13; 0.033284489 1974-08-14;-0.003715975 1974-08-15;-0.04468723 1974-08-16; 0.033783061 1974-08-19; 0.003593601 1974-08-20;-0.022257946 1974-08-21;-0.007530786 1974-08-22;-0.023110629 1974-08-23;-0.007766024 1974-08-26; 0 1974-08-27;-0.015715357 1974-08-28;-0.003879391 1974-08-29;-0.044066357 1974-08-30; 0.036084053 1974-09-02; 0.023758267 1974-09-03; 0 1974-09-04;-0.02786285 1974-09-05;-0.008079764 1974-09-06; 0.012184347 1974-09-09;-0.004104583 1974-09-10; 0 1974-09-11; 0.004104583 1974-09-12;-0.012184347 1974-09-13;-0.02058173 1974-09-16;-0.025157387 1974-09-17; 0.01275097 1974-09-18; 0 1974-09-19; 0.024842569 1974-09-20; 0.008145579 1974-09-23; 0 1974-09-24; 0.043738236 1974-09-25;-0.011803643 1974-09-26;-0.034461669 1974-09-27; 0.002527077 1974-09-30;-0.058654777 1974-10-01; 0.050509198 1974-10-02; 0.016225342 1974-10-03;-0.0041215 1974-10-04;-0.01775409 1974-10-07; 0.006376992 1974-10-08; 0.0220934 1974-10-09;-0.018829571 1974-10-10; 0.012234769 1974-10-11;-0.008079764 1974-10-14;-0.012334639 1974-10-15; 0.028429407 1974-10-16; 0 1974-10-17;-0.024240347 1974-10-18;-0.008212474 1974-10-21;-0.008280478 1974-10-22; 0 1974-10-23; 0.02391716 1974-10-24;-0.028176031 1974-10-25; 0.008315672 1974-10-28; 0.004223677 1974-10-29; 0 1974-10-30; 0.0285424 1974-10-31; 0 1974-11-01; 0.011861695 1974-11-04;-0.028201048 1974-11-05;-0.020483525 1974-11-06;-0.008349617 1974-11-07; 0.004090746 1974-11-08; 0.032855666 1974-11-11; 0.012136504 1974-11-12; 0.002480512 1974-11-13;-0.022730285 1974-11-14; 0.043916405 1974-11-15; 0.003976836 1974-11-18; 0.034430604 1974-11-19;-0.026695283 1974-11-20; 0 1974-11-21; 0.006315631 1974-11-22; 0.005260937 1974-11-25;-0.007645947 1974-11-26; 0.015233876 1974-11-27; 0.026195132 1974-11-28;-0.033783061 1974-11-29; 0.073563768 1974-12-02; 0 1974-12-03;-0.007101742 1974-12-04;-0.00364935 1974-12-05; 0.00364935 1974-12-06;-0.001426421 1974-12-09;-0.005885645 1974-12-10;-0.021773298 1974-12-11; 0 1974-12-12; 0.00876629 1974-12-13;-0.001455722 1974-12-16;-0.025907335 1974-12-17;-0.026425841 1974-12-18; 0.011362795 1974-12-19; 0.011401867 1974-12-20; 0.007474497 1974-12-23;-0.018876364 1974-12-24; 0 1974-12-25; 0 1974-12-26; 0 1974-12-27; 0.018876364 1974-12-30; 0.012498107 1974-12-31; 0 1975-01-01; 0 1975-01-02; 0.020542574 1975-01-03; 0.035389397 1975-01-06;-0.017459524 1975-01-07;-0.014413808 1975-01-08; 0.021465471 1975-01-09; 0.027719668 1975-01-10; 0.020296871 1975-01-13;-0.020296871 1975-01-14;-0.041873073 1975-01-15;-0.00364935 1975-01-16; 0.024805039 1975-01-17; 0.018588752 1975-01-20;-0.044666259 1975-01-21;-0.024163547 1975-01-22; 0.007310568 1975-01-23;-0.001295757 1975-01-24; 0.001295757 1975-01-27; 0.01446273 1975-01-28;-0.003516066 1975-01-29; 0.066278121 1975-01-30; 0.013542881 1975-01-31;-0.003405645 1975-02-03; 0.016621696 1975-02-04; 0.013043663 1975-02-05; 0.009743593 1975-02-06; 0.040930359 1975-02-07; 0.029269066 1975-02-10; 0.007020361 1975-02-11;-0.007020361 1975-02-12;-0.017025681 1975-02-13; 0.019282868 1975-02-14;-0.005319161 1975-02-17; 0.024887716 1975-02-18; 0.017405197 1975-02-19;-0.002815822 1975-02-20; 0.036866476 1975-02-21; 0.008365161 1975-02-24; 0.002691462 1975-02-25;-0.019492352 1975-02-26; 0.005590424 1975-02-27; 0.008388897 1975-02-28;-0.002829552 1975-03-03; 0.011148661 1975-03-04; 0.013552966 1975-03-05;-0.01087624 1975-03-06; 0.002790756 1975-03-07; 0.008085484 1975-03-10; 0.016213994 1975-03-11; 0.013158085 1975-03-12; 0.015748357 1975-03-13; 0.005156718 1975-03-14;-0.012999895 1975-03-17;-0.00790518 1975-03-18;-0.005265942 1975-03-19;-0.007892143 1975-03-20;-0.013453385 1975-03-21; 0.013453385 1975-03-24; 0.012223942 1975-03-25; 0.000934143 1975-03-26; 0.020905075 1975-03-27; 0.007628844 1975-03-28; 0 1975-03-31; 0 1975-04-01; 0.007683654 1975-04-02; 0.002585578 1975-04-03; 0.017473039 1975-04-04; 0.01728141 1975-04-07; 0.0217738 1975-04-08; 0.007188952 1975-04-09;-0.002425778 1975-04-10; 0.032823886 1975-04-11; 0.013297663 1975-04-14; 0.020658386 1975-04-15; 0.006694256 1975-04-16;-0.013334189 1975-04-17;-0.011299555 1975-04-18; 0.020208741 1975-04-21; 0.012438337 1975-04-22; 0.020329232 1975-04-23; 0.024680982 1975-04-24; 0.023632197 1975-04-25;-0.018620121 1975-04-28;-0.029693058 1975-04-29; 0.012793351 1975-04-30; 0.014768004 1975-05-01; 0 1975-05-02; 0.00416648 1975-05-05;-0.01180366 1975-05-06; 0.02219026 1975-05-07;-0.033567374 1975-05-08; 0 1975-05-09; 0.002172579 1975-05-12;-0.008147842 1975-05-13;-0.026508854 1975-05-14;-0.017739698 1975-05-15;-0.017250453 1975-05-16; 0.012666032 1975-05-19; 0 1975-05-20; 0.013493607 1975-05-21;-0.008909186 1975-05-22; 0.004464515 1975-05-23;-0.004961804 1975-05-26; 0 1975-05-27;-0.040710083 1975-05-28;-0.03329076 1975-05-29; 0 1975-05-30; 0.026219918 1975-06-02; 0.018609035 1975-06-03; 0.047408878 1975-06-04;-0.013275184 1975-06-05;-0.006754098 1975-06-06; 0.017780002 1975-06-09;-0.013305277 1975-06-10;-0.006769563 1975-06-11;-0.009030766 1975-06-12;-0.01370093 1975-06-13;-0.002353063 1975-06-16;-0.002255948 1975-06-17; 0 1975-06-18; 0.004609011 1975-06-19; 0.004587866 1975-06-20; 0.026301456 1975-06-23;-0.001388063 1975-06-24;-0.004474725 1975-06-25;-0.011325603 1975-06-26;-0.002219981 1975-06-27;-0.00648629 1975-06-30; 0.009210125 1975-07-01; 0.013508986 1975-07-02; 0.047743616 1975-07-03;-0.008660535 1975-07-04;-0.009411382 1975-07-07; 0.020154462 1975-07-08; 0.001323002 1975-07-09;-0.018490805 1975-07-10; 0.015085258 1975-07-11; 0.002082545 1975-07-14;-0.004264399 1975-07-15;-0.019466501 1975-07-16; 0.006563097 1975-07-17; 0.004319661 1975-07-18;-0.006534715 1975-07-21; 0.004329219 1975-07-22;-0.004329219 1975-07-23;-0.01310126 1975-07-24;-0.008830513 1975-07-25; 0.019808424 1975-07-28;-0.002224695 1975-07-29; 0.021648355 1975-07-30; 0.019053559 1975-07-31;-0.010561339 1975-08-01; 0.002064953 1975-08-04;-0.006302048 1975-08-05;-0.012055773 1975-08-06;-0.024850203 1975-08-07;-0.004415451 1975-08-08; 0.018994386 1975-08-11;-0.003576438 1975-08-12; 0.008677262 1975-08-13;-0.002114166 1975-08-14;-0.007338065 1975-08-15;-0.012383757 1975-08-18;-0.000883436 1975-08-19; 0.000883436 1975-08-20;-0.008869675 1975-08-21;-0.022625853 1975-08-22; 0.013576917 1975-08-25; 0 1975-08-26;-0.020384157 1975-08-27;-0.00695655 1975-08-28; 0.004609011 1975-08-29; 0.006924671 1975-09-01;-0.013897628 1975-09-02; 0.006972957 1975-09-03;-0.002353063 1975-09-04; 0.009277734 1975-09-05; 0.006776259 1975-09-08; 0.027733998 1975-09-09; 0.005865119 1975-09-10;-0.017798788 1975-09-11;-0.002185142 1975-09-12; 0.017739698 1975-09-15;-0.006664731 1975-09-16;-0.015659388 1975-09-17;-0.008526911 1975-09-18;-0.007280113 1975-09-19; 0.011301836 1975-09-22;-0.002209946 1975-09-23;-0.00909189 1975-09-24; 0 1975-09-25;-0.002336806 1975-09-26;-0.004587866 1975-09-29;-0.000817829 1975-09-30;-0.006155128 1975-10-01; 0.002363946 1975-10-02; 0.00695655 1975-10-03; 0.015878968 1975-10-06; 0.013554124 1975-10-07;-0.018079701 1975-10-08; 0.004525577 1975-10-09; 0 1975-10-10; 0.031215494 1975-10-13; 0 1975-10-14; 0.006591726 1975-10-15;-0.015383421 1975-10-16;-0.002259222 1975-10-17; 0.002259222 1975-10-20; 0.021835988 1975-10-21; 0.003545593 1975-10-22;-0.005659759 1975-10-23;-0.002215054 1975-10-24;-0.006480653 1975-10-27;-0.002234421 1975-10-28; 0.017354851 1975-10-29;-0.002105062 1975-10-30; 0.004301082 1975-10-31;-0.004301082 1975-11-03; 0.008583744 1975-11-04;-0.002091454 1975-11-05;-0.008697785 1975-11-06;-0.008677262 1975-11-07;-0.003492098 1975-11-10; 0.016479918 1975-11-11; 0.017152754 1975-11-12; 0 1975-11-13; 0.008420708 1975-11-14; 0.002140631 1975-11-17; 0.006209761 1975-11-18;-0.002034777 1975-11-19; 0 1975-11-20;-0.004174984 1975-11-21;-0.002140631 1975-11-24; 0.003812717 1975-11-25; 0.036095789 1975-11-26; 0.00330697 1975-11-27;-0.002054398 1975-11-28; 0.02786285 1975-12-01; 0.023206886 1975-12-02;-0.019301478 1975-12-03;-0.009836002 1975-12-04; 0.002009875 1975-12-05; 0.003485842 1975-12-08; 0.002346093 1975-12-09; 0.001994191 1975-12-10;-0.009136457 1975-12-11; 0.00131033 1975-12-12;-0.005953962 1975-12-15;-0.009618428 1975-12-16; 0.007596539 1975-12-17; 0.029394755 1975-12-18; 0.013326174 1975-12-19; 0.02998439 1975-12-22; 0.001880238 1975-12-23; 0.012821729 1975-12-24; 0 1975-12-25; 0 1975-12-26; 0 1975-12-29; 0 1975-12-30;-0.014701966 1975-12-31; 0 1976-01-01; 0 1976-01-02; 0.023372541 1976-01-05; 0.007565236 1976-01-06;-0.012613931 1976-01-07;-0.018323847 1976-01-08;-0.003688982 1976-01-09;-0.009323885 1976-01-12;-0.005569656 1976-01-13;-0.007530786 1976-01-14; 0.011275018 1976-01-15; 0.011149308 1976-01-16; 0 1976-01-19; 0 1976-01-20;-0.007419043 1976-01-21;-0.015005283 1976-01-22;-0.00953634 1976-01-23; 0.027928237 1976-01-26; 0.000329788 1976-01-27;-0.003716402 1976-01-28;-0.001904841 1976-01-29;-0.001825424 1976-01-30; 0.007446667 1976-02-02; 0 1976-02-03;-0.003716402 1976-02-04; 0.007090474 1976-02-05; 0.01135494 1976-02-06; 0.003648603 1976-02-09; 0 1976-02-10;-0.003648603 1976-02-11; 0.003324822 1976-02-12;-0.00511344 1976-02-13;-0.00554877 1976-02-16;-0.003688982 1976-02-17; 0.007364406 1976-02-18; 0.005528469 1976-02-19; 0.001782098 1976-02-20;-0.003648603 1976-02-23; 0.003648603 1976-02-24;-0.003648603 1976-02-25; 0 1976-02-26; 0.003000935 1976-02-27;-0.008458086 1976-03-01;-0.001880238 1976-03-02; 0.00554877 1976-03-03;-0.00554877 1976-03-04;-0.00549745 1976-03-05;-0.009340841 1976-03-08; 0.007446667 1976-03-09; 0.001894174 1976-03-10; 0.015835773 1976-03-11; 0.016943433 1976-03-12;-0.001753268 1976-03-15;-0.011552475 1976-03-16; 0.002498289 1976-03-17;-0.001449859 1976-03-18;-0.016826245 1976-03-19;-0.013036488 1976-03-22; 0.009340841 1976-03-23; 0.001808467 1976-03-24;-0.001808467 1976-03-25;-0.003791943 1976-03-26;-0.011212276 1976-03-29; 0.007488802 1976-03-30;-0.001825424 1976-03-31;-0.003744232 1976-04-01;-0.007530786 1976-04-02; 0 1976-04-05;-0.005727778 1976-04-06;-0.028967661 1976-04-07;-0.015422668 1976-04-08; 0.015422668 1976-04-09; 0.015530942 1976-04-12;-0.019451661 1976-04-13; 0 1976-04-14; 0.011716341 1976-04-15; 0.00773532 1976-04-16; 0 1976-04-19; 0 1976-04-20; 0 1976-04-21;-0.001971119 1976-04-22;-0.02150434 1976-04-23; 0.002013923 1976-04-26;-0.005965977 1976-04-27; 0.003952054 1976-04-28;-0.011903328 1976-04-29;-0.003999472 1976-04-30;-0.015797833 1976-05-03;-0.012747145 1976-05-04; 0.010301381 1976-05-05; 0.022243069 1976-05-06;-0.014113678 1976-05-07;-0.012219005 1976-05-10;-0.012370158 1976-05-11; 0.002486304 1976-05-12;-0.004239638 1976-05-13;-0.008719907 1976-05-14; 0.006315615 1976-05-17; 0.018620121 1976-05-18; 0.006070234 1976-05-19;-0.001989151 1976-05-20;-0.016517235 1976-05-21;-0.004149192 1976-05-24; 0.012487537 1976-05-25;-0.016654017 1976-05-26; 0.006289329 1976-05-27; 0 1976-05-28; 0.004140412 1976-05-31; 0.014403166 1976-06-01; 0.010085633 1976-06-02;-0.004040047 1976-06-03;-0.010126669 1976-06-04; 0.003266198 1976-06-07; 0 1976-06-08; 0.004879381 1976-06-09;-0.012243385 1976-06-10;-0.004206297 1976-06-11; 0.004206297 1976-06-14; 0 1976-06-15;-0.012487537 1976-06-16; 0.0103866 1976-06-17; 0 1976-06-18; 0.008196021 1976-06-21;-0.001997277 1976-06-22; 0 1976-06-23;-0.006198744 1976-06-24; 0.004106407 1976-06-25; 0 1976-06-28;-0.018659487 1976-06-29; 0.01244772 1976-06-30;-0.004132048 1976-07-01;-0.008315672 1976-07-02; 0.003796828 1976-07-05; 0.002492501 1976-07-06; 0.005425051 1976-07-07;-0.005425051 1976-07-08;-0.010473241 1976-07-09;-0.006355756 1976-07-12; 0.004210533 1976-07-13; 0.006329135 1976-07-14; 0 1976-07-15; 0.00416648 1976-07-16; 0.003412815 1976-07-19; 0 1976-07-20; 0.002850446 1976-07-21;-0.006263261 1976-07-22; 0.0103866 1976-07-23; 0.002100937 1976-07-26; 0.005369263 1976-07-27;-0.001271456 1976-07-28;-0.029137226 1976-07-29;-0.004219218 1976-07-30;-0.009345421 1976-08-02;-0.001328652 1976-08-03;-0.015118458 1976-08-04; 0.007874813 1976-08-05; 0.002960984 1976-08-06;-0.002960984 1976-08-09;-0.007874813 1976-08-10;-0.004348043 1976-08-11; 0.007908992 1976-08-12;-0.005684297 1976-08-13; 0.002123348 1976-08-16; 0 1976-08-17; 0.027857484 1976-08-18; 0.029017005 1976-08-19;-0.002188384 1976-08-20;-0.006685925 1976-08-23; 0 1976-08-24;-0.004513017 1976-08-25;-0.018070536 1976-08-26;-0.006885196 1976-08-27; 0.006885196 1976-08-30; 0 1976-08-31; 0.017239396 1976-09-01;-0.004537255 1976-09-02; 0.000927644 1976-09-03; 0 1976-09-06;-0.002320725 1976-09-07;-0.000371816 1976-09-08; 0.002228827 1976-09-09;-0.004089985 1976-09-10;-0.018235302 1976-09-13; 0.006900817 1976-09-14;-0.004626796 1976-09-15;-0.00227402 1976-09-16; 0.003692661 1976-09-17;-0.008732851 1976-09-20; 0.000381279 1976-09-21; 0.011559727 1976-09-22; 0.015888185 1976-09-23; 0.004440751 1976-09-24;-0.004440751 1976-09-27;-0.002320725 1976-09-28;-0.005872226 1976-09-29;-0.00046753 1976-09-30; 0.008660482 1976-10-01; 0.011156817 1976-10-04;-0.031671798 1976-10-05; 0.002268861 1976-10-06;-0.009201791 1976-10-07;-0.000381279 1976-10-08;-0.00190858 1976-10-11;-0.023485013 1976-10-12;-0.041225459 1976-10-13; 0.002036039 1976-10-14; 0.012732589 1976-10-15;-0.00735705 1976-10-18; 0.004843602 1976-10-19;-0.001511107 1976-10-20; 0.004024555 1976-10-21; 0.009195467 1976-10-22;-0.009195467 1976-10-25;-0.012325878 1976-10-26;-0.001933351 1976-10-27; 0.010234674 1976-10-28; 0.004927852 1976-10-29; 0.001503684 1976-11-01; 0.002401202 1976-11-02; 0.008160873 1976-11-03;-0.010562075 1976-11-04; 0.012047739 1976-11-05; 0.04006161 1976-11-08; 0.004648303 1976-11-09;-0.004648303 1976-11-10; 0.004648303 1976-11-11; 0 1976-11-12;-0.018531431 1976-11-15;-0.030940396 1976-11-16; 0.009599757 1976-11-17; 0 1976-11-18;-0.000886831 1976-11-19; 0.010395308 1976-11-22;-0.004693926 1976-11-23; 0.002349717 1976-11-24;-0.007164268 1976-11-25;-0.009599757 1976-11-26; 0.009599757 1976-11-29; 0.014277575 1976-11-30;-0.011916531 1976-12-01;-0.007198887 1976-12-02;-0.002378122 1976-12-03; 0.004849334 1976-12-06; 0.014311164 1976-12-07; 0.004660655 1976-12-08; 0.002322207 1976-12-09; 0.009426772 1976-12-10; 0.003154426 1976-12-13;-0.003154426 1976-12-14;-0.007013527 1976-12-15;-0.004735452 1976-12-16; 0.004735452 1976-12-17;-0.002413245 1976-12-20; 0.004724494 1976-12-21; 0.006997393 1976-12-22; 0.006948769 1976-12-23; 0.015156798 1976-12-24; 0 1976-12-27; 0.000840532 1976-12-28; 0.013445425 1976-12-29; 0.00898594 1976-12-30;-0.007513321 1976-12-31; 0 1977-01-03; 0.00522865 1977-01-04; 0 1977-01-05; 0 1977-01-06; 0.008835509 1977-01-07; 0 1977-01-10; 0.004433795 1977-01-11;-0.007976837 1977-01-12;-0.003007795 1977-01-13; 0.002188384 1977-01-14; 0.004362454 1977-01-17; 0.010195424 1977-01-18;-0.001796946 1977-01-19;-0.006133882 1977-01-20;-0.002264596 1977-01-21;-0.005182536 1977-01-24; 0.003003689 1977-01-25;-0.006656661 1977-01-26; 0.008835509 1977-01-27;-0.004362454 1977-01-28; 0.00798335 1977-01-31; 0.002977401 1977-02-01;-0.006598298 1977-02-02; 0.013153343 1977-02-03; 0 1977-02-04; 0.002235037 1977-02-07; 0.018930242 1977-02-08;-0.008182704 1977-02-09; 0.004319661 1977-02-10;-0.010789881 1977-02-11;-0.006512356 1977-02-14;-0.008719548 1977-02-15;-0.002169198 1977-02-16; 0 1977-02-17; 0.006583421 1977-02-18;-0.026597797 1977-02-21; 0.004513017 1977-02-22; 0.011057915 1977-02-23; 0.004443444 1977-02-24;-0.002264596 1977-02-25;-0.004362454 1977-02-28; 0 1977-03-01;-0.015605237 1977-03-02; 0.008933976 1977-03-03;-0.002203048 1977-03-04; 0.008874309 1977-03-07; 0.00662705 1977-03-08;-0.011100105 1977-03-09; 0.000823083 1977-03-10;-0.003021289 1977-03-11; 0 1977-03-14;-0.004503063 1977-03-15; 0.004503063 1977-03-16; 0.006671261 1977-03-17; 0.004362454 1977-03-18; 0 1977-03-21; 0.011002997 1977-03-22;-0.008738401 1977-03-23; 0.005774105 1977-03-24;-0.007132247 1977-03-25;-0.008279172 1977-03-28;-0.010377062 1977-03-29; 0.002213002 1977-03-30;-0.002213002 1977-03-31; 0.001844509 1977-04-01; 0.000368494 1977-04-04; 0.002300015 1977-04-05;-0.000827396 1977-04-06;-0.001472619 1977-04-07; 0.005877508 1977-04-08; 0 1977-04-11; 0 1977-04-12; 0.011923866 1977-04-13; 0.010888747 1977-04-14; 0.012982576 1977-04-15; 0.002118084 1977-04-18; 0.019123045 1977-04-19; 0.004142937 1977-04-20; 0 1977-04-21; 0.012496953 1977-04-22; 0.004159422 1977-04-25;-0.012444757 1977-04-26; 0 1977-04-27; 0.026742729 1977-04-28; 0.012118342 1977-04-29; 0.018554621 1977-05-02;-0.000729129 1977-05-03; 0.001943163 1977-05-04;-0.001943163 1977-05-05;-0.019890158 1977-05-06; 0.006016915 1977-05-09; 0.005980928 1977-05-10; 0.00358774 1977-05-11; 0.010203344 1977-05-12;-0.005898769 1977-05-13; 0 1977-05-16;-0.021876256 1977-05-17; 0.001986098 1977-05-18; 0.023126669 1977-05-19; 0 1977-05-20;-0.003560739 1977-05-23;-0.009530476 1977-05-24;-0.002048258 1977-05-25;-0.003944454 1977-05-26;-0.001978077 1977-05-27; 0.00469156 1977-05-30; 0 1977-05-31; 0.001230971 1977-06-01;-0.004356231 1977-06-02;-0.023924786 1977-06-03; 0.002106949 1977-06-06; 0.002018504 1977-06-07;-0.004125453 1977-06-08;-0.002026857 1977-06-09; 0 1977-06-10;-0.004150965 1977-06-13;-0.006130809 1977-06-14; 0.00409138 1977-06-15; 0.010324201 1977-06-16;-0.004133806 1977-06-17; 0 1977-06-20;-0.004150965 1977-06-21;-0.002805289 1977-06-22; 0.002805289 1977-06-23;-0.00203943 1977-06-24;-0.00034031 1977-06-27; 0.00034031 1977-06-28; 0.007879727 1977-06-29;-0.003381523 1977-06-30; 0.003719047 1977-07-01; 0.016317671 1977-07-04; 0.015238547 1977-07-05; 0.001470348 1977-07-06; 0.005210465 1977-07-07;-0.003579277 1977-07-08;-0.034657755 1977-07-11;-0.006177822 1977-07-12; 0.001357313 1977-07-13;-0.020036632 1977-07-14; 0 1977-07-15; 0.002073614 1977-07-18;-0.002073614 1977-07-19;-0.008424942 1977-07-20;-0.00218293 1977-07-21; 0.00427407 1977-07-22; 0.001304745 1977-07-25;-0.008467599 1977-07-26;-0.012082874 1977-07-27; 0.005133209 1977-07-28; 0 1977-07-29; 0.015417264 1977-08-01; 0.011322996 1977-08-02; 0.022688656 1977-08-03; 0.007366516 1977-08-04; 0.002748513 1977-08-05; 0 1977-08-08; 0.006053337 1977-08-09; 0.016887031 1977-08-10; 0.006804952 1977-08-11; 0.004511044 1977-08-12; 0.013412304 1977-08-15; 0.001426421 1977-08-16;-0.005877231 1977-08-17;-0.00671358 1977-08-18;-0.00595192 1977-08-19;-0.003070213 1977-08-22;-0.001862877 1977-08-23; 0 1977-08-24;-0.000405433 1977-08-25;-0.004552113 1977-08-26;-0.018418544 1977-08-29;-0.00942184 1977-08-30; 0.016368609 1977-08-31;-0.011604905 1977-09-01; 0.018503749 1977-09-02; 0.002289079 1977-09-05; 0.004562498 1977-09-06; 0.002273466 1977-09-07; 0.004531485 1977-09-08; 0.001371576 1977-09-09;-0.005903062 1977-09-12; 0.004531485 1977-09-13; 0.011239682 1977-09-14; 0 1977-09-15; 0.002232856 1977-09-16; 0 1977-09-19;-0.011214472 1977-09-20;-0.004521241 1977-09-21;-0.001457608 1977-09-22;-0.009935744 1977-09-23;-0.002294331 1977-09-26; 0.007681659 1977-09-27; 0.001464248 1977-09-28;-0.002278647 1977-09-29; 0.013594642 1977-09-30; 0.004490785 1977-10-03;-0.009001829 1977-10-04; 0.009001829 1977-10-05; 0 1977-10-06; 0.00669859 1977-10-07; 0.004440927 1977-10-10; 0.00221309 1977-10-11; 0.002208203 1977-10-12;-0.006639291 1977-10-13;-0.002222929 1977-10-14; 0.001429593 1977-10-17; 0.000396747 1977-10-18; 0.00703588 1977-10-19;-0.004421293 1977-10-20; 0.00221309 1977-10-21; 0.002208203 1977-10-24;-0.004421293 1977-10-25; 0.00221309 1977-10-26;-0.00221309 1977-10-27; 0.000870012 1977-10-28; 0.02967623 1977-10-31;-0.001689838 1977-11-01; 0.016695642 1977-11-02; 0.027147614 1977-11-03; 0 1977-11-04;-0.006199739 1977-11-07;-0.012515994 1977-11-08; 0.005457753 1977-11-09;-0.001268326 1977-11-10;-0.00209252 1977-11-11;-0.004198222 1977-11-14; 0.002101314 1977-11-15; 0.010811722 1977-11-16; 0 1977-11-17; 0.009962079 1977-11-18;-0.012412424 1977-11-21;-0.00626447 1977-11-22;-0.01272368 1977-11-23; 0.002194892 1977-11-24; 0.00249179 1977-11-25;-0.002113846 1977-11-28;-0.013237166 1977-11-29; 0 1977-11-30;-0.004297781 1977-12-01; 0.017157003 1977-12-02; 0.004224827 1977-12-05;-0.017084049 1977-12-06;-0.026068195 1977-12-07; 0.010944449 1977-12-08; 0.005736895 1977-12-09; 0.002933233 1977-12-12;-0.021817914 1977-12-13;-0.002208203 1977-12-14;-0.013352607 1977-12-15; 0 1977-12-16; 0.011139517 1977-12-19;-0.011139517 1977-12-20;-0.004490785 1977-12-21; 0.008961494 1977-12-22; 0.017685602 1977-12-23; 0 1977-12-26; 0 1977-12-27; 0.000860484 1977-12-28;-0.009664188 1977-12-29;-0.00221309 1977-12-30; 0 1978-01-02; 0.00662463 1978-01-03;-0.00441154 1978-01-04;-0.015595478 1978-01-05; 0.017803681 1978-01-06;-0.011090101 1978-01-09; 0.008881898 1978-01-10; 0.002208203 1978-01-11; 0.002203337 1978-01-12; 0.002198493 1978-01-13; 0.004382539 1978-01-16;-0.006581033 1978-01-17;-0.007970685 1978-01-18; 0 1978-01-19;-0.001268533 1978-01-20;-0.010767801 1978-01-23; 0.015595478 1978-01-24; 0.002208203 1978-01-25; 0.002203337 1978-01-26;-0.002203337 1978-01-27; 0 1978-01-30;-0.006639291 1978-01-31;-0.008921518 1978-02-01; 0.00526695 1978-02-02; 0.005476856 1978-02-03;-0.006273098 1978-02-06; 0 1978-02-07; 0.006668808 1978-02-08;-0.001346055 1978-02-09; 0.001346055 1978-02-10; 0.028395043 1978-02-13;-0.004316332 1978-02-14;-0.008299447 1978-02-15; 0.010459941 1978-02-16; 0 1978-02-17; 0.006453618 1978-02-20;-0.004297781 1978-02-21;-0.006481504 1978-02-22; 0.006481504 1978-02-23;-0.004316332 1978-02-24; 0.002160495 1978-02-27;-0.006107715 1978-02-28;-0.013506861 1978-03-01;-0.012895238 1978-03-02; 0.00405261 1978-03-03; 0.004431088 1978-03-06; 0.008803704 1978-03-07; 0.003983291 1978-03-08;-0.006176962 1978-03-09; 0 1978-03-10;-0.002198493 1978-03-13; 0.004392164 1978-03-14;-0.008803704 1978-03-15;-0.006654017 1978-03-16; 0.004440927 1978-03-17; 0 1978-03-20;-0.001821566 1978-03-21;-0.004449042 1978-03-22; 0 1978-03-23;-0.0003982 1978-03-24; 0 1978-03-27; 0 1978-03-28;-0.00671358 1978-03-29; 0.00671358 1978-03-30; 0 1978-03-31; 0.006668808 1978-04-03;-0.001821566 1978-04-04; 0 1978-04-05; 0.013698844 1978-04-06; 0 1978-04-07;-0.009664188 1978-04-10;-0.00221309 1978-04-11;-0.014826896 1978-04-12;-0.023564916 1978-04-13; 0.011445514 1978-04-14; 0 1978-04-17;-0.025355326 1978-04-18; 0.006979091 1978-04-19;-0.008898558 1978-04-20; 0.011214139 1978-04-21; 0 1978-04-24;-0.004636538 1978-04-25; 0 1978-04-26; 0.016134693 1978-04-27; 0.027067868 1978-04-28; 0.01326405 1978-05-01; 0 1978-05-02; 0 1978-05-03; 0.006566628 1978-05-04; 0 1978-05-05;-0.008765121 1978-05-08;-0.00441154 1978-05-09; 0.002208203 1978-05-10;-0.006639291 1978-05-11; 0 1978-05-12;-0.002222929 1978-05-15; 0 1978-05-16; 0 1978-05-17;-0.002227881 1978-05-18; 0.013293438 1978-05-19; 0.002198493 1978-05-22;-0.002198493 1978-05-23;-0.00441154 1978-05-24; 0 1978-05-25; 0 1978-05-26; 0.008803704 1978-05-29; 0.013061918 1978-05-30; 0.004316332 1978-05-31; 0.010710017 1978-06-01; 0.006446987 1978-06-02; 0.004224827 1978-06-05;-0.004224827 1978-06-06; 0 1978-06-07; 0.004977386 1978-06-08; 0.015970489 1978-06-09; 0.006199739 1978-06-12;-0.002873671 1978-06-13;-0.005401219 1978-06-14; 0.009524936 1978-06-15; 0.000808021 1978-06-16; 0.00614891 1978-06-19; 0.020227519 1978-06-20; 0.002785219 1978-06-21;-0.027107808 1978-06-22; 0.002049631 1978-06-23; 0.004086702 1978-06-26;-0.007456175 1978-06-27; 0.005414912 1978-06-28;-0.022733284 1978-06-29; 0.012463994 1978-06-30; 0.011509125 1978-07-03; 0.008130126 1978-07-04; 0.002815581 1978-07-05;-0.005711616 1978-07-06; 0.003690976 1978-07-07; 0.004037205 1978-07-10; 0 1978-07-11;-0.008090776 1978-07-12;-0.010206402 1978-07-13;-0.002053841 1978-07-14; 0 1978-07-17; 0.016313813 1978-07-18; 0.011349066 1978-07-19; 0.016574965 1978-07-20; 0.000772445 1978-07-21; 0.028373642 1978-07-24;-0.009598319 1978-07-25; 0.02476654 1978-07-26; 0.005629287 1978-07-27;-0.005629287 1978-07-28; 0 1978-07-31; 0.007498696 1978-08-01; 0.012132611 1978-08-02; 0.002172268 1978-08-03;-0.008651201 1978-08-04;-0.006587946 1978-08-07;-0.011009778 1978-08-08;-0.004465199 1978-08-09;-0.008922245 1978-08-10; 0.004505127 1978-08-11; 0.004417118 1978-08-14; 0.017675785 1978-08-15;-0.00654995 1978-08-16; 0.004349142 1978-08-17;-0.002138752 1978-08-18;-0.00221039 1978-08-21; 0.00221039 1978-08-22;-0.008871026 1978-08-23; 0.003638573 1978-08-24;-0.001413428 1978-08-25; 0 1978-08-28;-0.002225145 1978-08-29;-0.006637342 1978-08-30;-0.011275617 1978-08-31; 0.01487067 1978-09-01; 0.011913316 1978-09-04; 0.002138752 1978-09-05;-0.006564428 1978-09-06;-0.005796336 1978-09-07; 0.004384049 1978-09-08; 0.003627574 1978-09-11; 0.00221039 1978-09-12; 0 1978-09-13; 0 1978-09-14;-0.006645881 1978-09-15; 0 1978-09-18; 0.017558952 1978-09-19; 0.004292561 1978-09-20;-0.015205631 1978-09-21;-0.00221039 1978-09-22; 0.00654995 1978-09-25;-0.00433956 1978-09-26; 0.006535535 1978-09-27; 0 1978-09-28; 0.004377536 1978-09-29; 0 1978-10-02; 0.007844729 1978-10-03; 0.008565223 1978-10-04;-0.005614691 1978-10-05;-0.009472509 1978-10-06; 0.000858851 1978-10-09;-0.013094673 1978-10-10; 0.002138752 1978-10-11;-0.012360765 1978-10-12;-0.000879121 1978-10-13; 0.015440693 1978-10-16; 0.004387138 1978-10-17;-0.013152374 1978-10-18; 0 1978-10-19; 0.008765236 1978-10-20;-0.00654995 1978-10-23; 0.00221039 1978-10-24;-0.008871026 1978-10-25; 0.001416574 1978-10-26; 0.000808571 1978-10-27;-0.004455252 1978-10-30;-0.013417535 1978-10-31; 0.004515298 1978-11-01;-0.002255101 1978-11-02; 0.011157337 1978-11-03; 0.011101133 1978-11-06;-0.007454452 1978-11-07;-0.010298892 1978-11-08;-0.002250027 1978-11-09;-0.004515298 1978-11-10; 0.0090103 1978-11-13; 0 1978-11-14;-0.006750102 1978-11-15; 0.00586632 1978-11-16; 0.004478835 1978-11-17;-0.001422909 1978-11-20;-0.002172143 1978-11-21;-0.002244975 1978-11-22; 0 1978-11-23;-0.002250027 1978-11-24;-0.004515298 1978-11-27;-0.002265318 1978-11-28;-0.004477054 1978-11-29;-0.00228066 1978-11-30; 0.00228066 1978-12-01; 0.020159906 1978-12-04;-0.004407235 1978-12-05;-0.004495002 1978-12-06; 0.008902237 1978-12-07; 0.002230107 1978-12-08;-0.002230107 1978-12-11; 0.004455252 1978-12-12; 0 1978-12-13; 0 1978-12-14; 0 1978-12-15;-0.008862487 1978-12-18; 0 1978-12-19;-0.002244975 1978-12-20; 0.004417118 1978-12-21; 0 1978-12-22; 0.002640936 1978-12-25; 0 1978-12-26; 0 1978-12-27;-0.000405844 1978-12-28;-0.011157337 1978-12-29; 0 1979-01-01; 0 1979-01-02; 0.020048081 1979-01-03; 0.015305063 1979-01-04;-0.010955921 1979-01-05;-0.012360765 1979-01-08; 0.013228328 1979-01-09; 0.00352922 1979-01-10;-0.002195975 1979-01-11; 0 1979-01-12; 0.005712783 1979-01-15;-0.003516808 1979-01-16; 0.013009924 1979-01-17; 0.019235111 1979-01-18;-0.000837063 1979-01-19; 0.010062575 1979-01-22;-0.000829373 1979-01-23; 0.005473885 1979-01-24; 0.009099014 1979-01-25; 0.002073581 1979-01-26;-0.004151472 1979-01-29; 0.004151472 1979-01-30;-0.009967279 1979-01-31;-0.004575213 1979-02-01;-0.004212414 1979-02-02;-0.004166005 1979-02-05; 0.004166005 1979-02-06; 0.00758231 1979-02-07;-0.010464618 1979-02-08;-0.009797681 1979-02-09; 0.004266053 1979-02-12;-0.021448718 1979-02-13; 0.007876641 1979-02-14;-0.007876641 1979-02-15;-0.021851512 1979-02-16;-0.004455252 1979-02-19;-0.004407235 1979-02-20; 0.004407235 1979-02-21; 0.006675457 1979-02-22;-0.00444535 1979-02-23; 0 1979-02-26; 0 1979-02-27; 0.010208282 1979-02-28;-0.010208282 1979-03-01;-0.006637342 1979-03-02; 0.008862487 1979-03-05; 0.015372579 1979-03-06;-0.004387138 1979-03-07;-0.010985441 1979-03-08; 0.00040404 1979-03-09; 0.004031451 1979-03-12;-0.013773764 1979-03-13;-0.004019216 1979-03-14; 0.004495002 1979-03-15;-0.002244975 1979-03-16;-0.001840554 1979-03-19; 0.006257672 1979-03-20; 0.013336225 1979-03-21;-0.008061309 1979-03-22;-0.018310419 1979-03-23; 0.008618384 1979-03-26; 0.002244975 1979-03-27; 0.004407235 1979-03-28; 0.01464096 1979-03-29;-0.004008289 1979-03-30; 0.007003998 1979-04-02;-0.004396783 1979-04-03; 0.004396783 1979-04-04; 0.002986761 1979-04-05; 0.003572377 1979-04-06; 0.002110958 1979-04-09;-0.004292561 1979-04-10;-0.002186372 1979-04-11;-0.003987511 1979-04-12; 0.003987511 1979-04-13; 0 1979-04-16; 0 1979-04-17; 0 1979-04-18;-0.001393821 1979-04-19; 0.003580193 1979-04-20; 0.01079526 1979-04-23;-0.012981633 1979-04-24; 0.004367975 1979-04-25; 0.002110958 1979-04-26;-0.008670096 1979-04-27;-0.001330318 1979-04-30; 0.001330318 1979-05-01; 0 1979-05-02;-0.006535535 1979-05-03;-0.006645881 1979-05-04;-0.002225145 1979-05-07;-0.004465199 1979-05-08; 0 1979-05-09;-0.001357036 1979-05-10; 0 1979-05-11;-0.005719749 1979-05-14;-0.008572559 1979-05-15; 0.008982199 1979-05-16; 0.003066964 1979-05-17;-0.005322065 1979-05-18; 0.008922245 1979-05-21;-0.004417118 1979-05-22;-0.015373304 1979-05-23; 0.001865608 1979-05-24; 0 1979-05-25;-0.004566534 1979-05-28;-0.001457372 1979-05-29;-0.000833739 1979-05-30;-0.00459803 1979-05-31;-0.016119731 1979-06-01;-0.014150168 1979-06-04; 0 1979-06-05;-0.02389043 1979-06-06;-0.014628069 1979-06-07;-0.019868453 1979-06-08; 0.014919433 1979-06-11;-0.007394028 1979-06-12; 0.012343048 1979-06-13;-0.002471449 1979-06-14; 0 1979-06-15; 0.002471449 1979-06-18;-0.00494902 1979-06-19;-0.017440539 1979-06-20;-0.028002605 1979-06-21;-0.023560466 1979-06-22; 0.011053376 1979-06-25; 0.030438497 1979-06-26;-0.010251721 1979-06-27;-0.020664826 1979-06-28;-0.015824259 1979-06-29;-0.005358025 1979-07-02;-0.021640701 1979-07-03; 0.018950884 1979-07-04;-0.016209677 1979-07-05; 0.008178822 1979-07-06; 0.030866398 1979-07-09;-0.012200167 1979-07-10;-0.013332447 1979-07-11;-0.069554216 1979-07-12; 0.010907137 1979-07-13; 0.003378821 1979-07-16; 0 1979-07-17; 0.002850112 1979-07-18; 0.068411993 1979-07-19;-0.010606957 1979-07-20; 0.010606957 1979-07-23;-0.018698212 1979-07-24; 0.005401437 1979-07-25; 0 1979-07-26; 0.008047842 1979-07-27;-0.002675424 1979-07-30;-0.00806949 1979-07-31;-0.005333784 1979-08-01; 0.005333784 1979-08-02; 0.010744914 1979-08-03; 0 1979-08-06; 0 1979-08-07;-0.017148877 1979-08-08;-0.008852178 1979-08-09;-0.000997672 1979-08-10; 0.008201181 1979-08-13;-0.013706241 1979-08-14;-0.005451433 1979-08-15; 0.002771364 1979-08-16;-0.0166593 1979-08-17; 0.009336343 1979-08-20;-0.001014285 1979-08-21;-0.00559703 1979-08-22;-0.014044934 1979-08-23;-0.00570837 1979-08-24; 0.00570837 1979-08-27;-0.002850112 1979-08-28;-0.002858258 1979-08-29; 0.002858258 1979-08-30; 0.002850112 1979-08-31; 0.001809487 1979-09-03; 0.001032525 1979-09-04; 0.033322322 1979-09-05; 0 1979-09-06; 0.021640701 1979-09-07;-0.010720672 1979-09-10;-0.013668771 1979-09-11; 0.008223662 1979-09-12; 0.005445109 1979-09-13;-0.002718848 1979-09-14; 0 1979-09-17;-0.003719474 1979-09-18;-0.020496807 1979-09-19;-0.00330187 1979-09-20; 0 1979-09-21;-0.011171395 1979-09-24;-0.007402341 1979-09-25; 0.001726371 1979-09-26; 0 1979-09-27;-0.009619208 1979-09-28;-0.001743072 1979-10-01; 0.00565391 1979-10-02;-0.002779468 1979-10-03; 0 1979-10-04;-0.005757169 1979-10-05; 0.011913702 1979-10-08; 0.002848636 1979-10-09;-0.000517331 1979-10-10;-0.002850112 1979-10-11;-0.005637727 1979-10-12; 0.002779468 1979-10-15; 0.001819837 1979-10-16;-0.013247536 1979-10-17; 0.00864823 1979-10-18; 0.001043206 1979-10-19;-0.003917647 1979-10-22;-0.011581109 1979-10-23;-0.014578036 1979-10-24;-0.004756999 1979-10-25;-0.007042283 1979-10-26;-0.015062588 1979-10-29; 0.003030723 1979-10-30; 0 1979-10-31;-0.004135085 1979-11-01;-0.004892242 1979-11-02;-0.002501507 1979-11-05;-0.012790166 1979-11-06; 0.00300216 1979-11-07;-0.021111211 1979-11-08;-0.000669953 1979-11-09; 0 1979-11-12; 0 1979-11-13; 0.006298933 1979-11-14; 0.009374625 1979-11-15; 0 1979-11-16; 0.015338872 1979-11-19;-0.008014207 1979-11-20; 0.001869509 1979-11-21; 0 1979-11-22; 0.017129255 1979-11-23; 0.013132884 1979-11-26;-0.002994422 1979-11-27; 0.03807012 1979-11-28;-0.017384069 1979-11-29; 0 1979-11-30;-0.011819622 1979-12-03;-0.017903873 1979-12-04; 0.017903873 1979-12-05; 0.004852197 1979-12-06;-0.016722042 1979-12-07;-0.012012432 1979-12-10; 0.005978404 1979-12-11; 0.020871901 1979-12-12;-0.020871901 1979-12-13;-0.003030723 1979-12-14;-0.002947681 1979-12-17;-0.015338437 1979-12-18; 0.003086567 1979-12-19;-0.005525135 1979-12-20; 0.008602204 1979-12-21; 0.00306763 1979-12-24; 0 1979-12-25; 0 1979-12-26; 0 1979-12-27;-0.006144699 1979-12-28; 0.029718365 1979-12-31; 0 1980-01-01; 0 1980-01-02;-0.026641296 1980-01-03;-0.014252468 1980-01-04; 0.005650265 1980-01-07; 0.002438568 1980-01-08; 0.001217058 1980-01-09; 0.001869509 1980-01-10;-0.003086567 1980-01-11; 0 1980-01-14;-0.006107606 1980-01-15;-0.008803957 1980-01-16;-0.006869601 1980-01-17;-0.01904083 1980-01-18; 0 1980-01-21;-0.038596396 1980-01-22; 0.002734594 1980-01-23; 0.013162712 1980-01-24; 0.013090231 1980-01-25; 0.006481413 1980-01-28; 0.000587142 1980-01-29; 0.005755271 1980-01-30;-0.009577868 1980-01-31; 0.006362901 1980-02-01; 0.025339763 1980-02-04; 0.027771744 1980-02-05; 0.003048924 1980-02-06;-0.009174801 1980-02-07;-0.006163636 1980-02-08; 0 1980-02-11; 0.012289513 1980-02-12;-0.01839712 1980-02-13; 0.009194173 1980-02-14; 0.024264302 1980-02-15; 0.008983319 1980-02-18;-0.020995751 1980-02-19; 0.015015847 1980-02-20; 0.011834458 1980-02-21; 0 1980-02-22; 0.011784798 1980-02-25; 0.007603927 1980-02-26;-0.01642948 1980-02-27;-0.002959245 1980-02-28;-0.008840036 1980-02-29;-0.005997837 1980-03-03;-0.006034028 1980-03-04; 0.003021565 1980-03-05;-0.003021565 1980-03-06;-0.005978404 1980-03-07;-0.018340597 1980-03-10;-0.012480071 1980-03-11;-0.01254145 1980-03-12; 0.018800955 1980-03-13; 0 1980-03-14; 0 1980-03-17;-0.012558437 1980-03-18;-0.038451263 1980-03-19; 0.013047531 1980-03-20; 0.009577868 1980-03-21;-0.009577868 1980-03-24; 0.006362901 1980-03-25;-0.016132555 1980-03-26; 0.006523696 1980-03-27; 0.01602849 1980-03-28; 0.003194427 1980-03-31; 0.012581198 1980-04-01; 0.003144507 1980-04-02; 0 1980-04-03; 0 1980-04-04; 0 1980-04-07; 0 1980-04-08;-0.009367302 1980-04-09;-0.003174148 1980-04-10; 0 1980-04-11; 0 1980-04-14;-0.000578202 1980-04-15;-0.018583013 1980-04-16;-0.001277453 1980-04-17; 0.026681185 1980-04-18; 0.009433583 1980-04-21; 0.033664422 1980-04-22;-0.018230274 1980-04-23; 0.006144699 1980-04-24; 0.018119604 1980-04-25;-0.024264302 1980-04-28; 0.009202947 1980-04-29;-0.009202947 1980-04-30; 0 1980-05-01; 0 1980-05-02;-0.003086567 1980-05-05;-0.006107606 1980-05-06;-0.006239975 1980-05-07; 0.003124855 1980-05-08; 0.012309293 1980-05-09; 0.01225187 1980-05-12; 0 1980-05-13; 0.002947681 1980-05-14; 0.006052288 1980-05-15; 0 1980-05-16;-0.008999969 1980-05-19; 0.005978404 1980-05-20;-0.012085575 1980-05-21;-0.00306763 1980-05-22; 0.00306763 1980-05-23;-0.007265984 1980-05-26; 0 1980-05-27; 0.004198355 1980-05-28; 0.006125878 1980-05-29; 0.024044674 1980-05-30; 0 1980-06-02;-0.027102922 1980-06-03;-0.037254947 1980-06-04; 0.018800955 1980-06-05; 0 1980-06-06; 0.024561164 1980-06-09;-0.003048924 1980-06-10;-0.015291673 1980-06-11; 0.006088727 1980-06-12; 0 1980-06-13; 0.027267717 1980-06-16; 0.017744217 1980-06-17; 0 1980-06-18; 0 1980-06-19;-0.002950514 1980-06-20;-0.068078687 1980-06-23;-0.005092982 1980-06-24; 0.003174148 1980-06-25;-0.035382894 1980-06-26;-0.023149182 1980-06-27; 0.010029971 1980-06-30; 0.006631191 1980-07-01; 0.003199363 1980-07-02; 0.009833702 1980-07-03; 0.003256528 1980-07-04;-0.009801573 1980-07-07;-0.013119211 1980-07-08;-0.013293615 1980-07-09; 0 1980-07-10; 0 1980-07-11; 0.003263644 1980-07-14;-0.013428524 1980-07-15;-0.006834447 1980-07-16; 0.016999328 1980-07-17; 0 1980-07-18;-0.006765093 1980-07-21;-0.003399787 1980-07-22;-0.010269267 1980-07-23;-0.006800256 1980-07-24;-0.006952519 1980-07-25;-0.00561829 1980-07-28;-0.001382905 1980-07-29;-0.00694336 1980-07-30; 0.013944555 1980-07-31;-0.003494471 1980-08-01; 0 1980-08-04;-0.002761846 1980-08-05; 0.009738618 1980-08-06; 0.003470217 1980-08-07; 0 1980-08-08; 0 1980-08-11; 0.069930216 1980-08-12; 0.002541794 1980-08-13;-0.005188206 1980-08-14; 0.005773858 1980-08-15; 0 1980-08-18;-0.009608859 1980-08-19;-0.009801573 1980-08-20; 0.005951808 1980-08-21;-0.000593589 1980-08-22;-0.002080342 1980-08-25;-0.005868036 1980-08-26;-0.0026969 1980-08-27; 0.001998402 1980-08-28;-0.003199363 1980-08-29;-0.009963349 1980-09-01; 0.015256745 1980-09-02; 0.025860543 1980-09-03; 0.001164144 1980-09-04; 0.018920132 1980-09-05;-0.001142313 1980-09-08;-0.027324896 1980-09-09; 0.012741504 1980-09-10;-0.003194427 1980-09-11;-0.006419631 1980-09-12; 0.009614058 1980-09-15;-0.006399091 1980-09-16; 0.012757494 1980-09-17; 0.009367302 1980-09-18; 0 1980-09-19; 0.021645867 1980-09-22;-0.006163636 1980-09-23;-0.006107606 1980-09-24; 0.003105446 1980-09-25; 0.00300216 1980-09-26; 0 1980-09-29;-0.006107606 1980-09-30; 0.003105446 1980-10-01; 0.018340597 1980-10-02; 0.001106399 1980-10-03; 0.022775877 1980-10-06; 0.017588954 1980-10-07; 0 1980-10-08;-0.02047548 1980-10-09; 0.005854554 1980-10-10; 0.002959245 1980-10-13; 0.008825553 1980-10-14;-0.002933205 1980-10-15;-0.009929858 1980-10-16;-0.00477629 1980-10-17;-0.008983319 1980-10-20;-0.010906033 1980-10-21; 0.001841282 1980-10-22;-0.002394328 1980-10-23;-0.009728154 1980-10-24;-0.009165796 1980-10-27;-0.006220567 1980-10-28;-0.018800955 1980-10-29;-0.012798313 1980-10-30; 0 1980-10-31;-0.009608859 1980-11-03;-0.016289593 1980-11-04; 0.019535551 1980-11-05; 0.006362901 1980-11-06;-0.016132555 1980-11-07;-0.013075996 1980-11-10;-0.003321092 1980-11-11; 0.019664256 1980-11-12; 0.009737942 1980-11-13; 0.009547077 1980-11-14; 0.00955283 1980-11-17;-0.003174148 1980-11-18; 0.009396943 1980-11-19; 0 1980-11-20;-0.006222795 1980-11-21; 0 1980-11-24;-0.003174148 1980-11-25; 0.001155402 1980-11-26;-0.004339657 1980-11-27; 0 1980-11-28; 0.003184255 1980-12-01; 0.005092982 1980-12-02;-0.005092982 1980-12-03; 0.009396943 1980-12-04;-0.008241542 1980-12-05;-0.008698228 1980-12-08;-0.008382932 1980-12-09;-0.013005109 1980-12-10;-0.003277877 1980-12-11;-0.009798119 1980-12-12;-0.00665325 1980-12-15; 0.00665325 1980-12-16;-0.0233798 1980-12-17;-0.010234234 1980-12-18; 0.003423062 1980-12-19;-0.013658139 1980-12-22; 0.040528019 1980-12-23; 0.013119211 1980-12-24; 0 1980-12-25; 0 1980-12-26; 0 1980-12-29;-0.00648802 1980-12-30; 0.032318084 1980-12-31; 0 1981-01-01; 0 1981-01-02;-0.012782532 1981-01-05;-0.009769654 1981-01-06; 0.009769654 1981-01-07;-0.019535551 1981-01-08; 0.003199363 1981-01-09;-0.003199363 1981-01-12;-0.003310099 1981-01-13; 0.003310099 1981-01-14; 0.001200961 1981-01-15;-0.014507609 1981-01-16;-0.002642009 1981-01-19;-0.000712504 1981-01-20; 0.002135992 1981-01-21; 0.001218522 1981-01-22;-0.013383251 1981-01-23; 0 1981-01-26;-0.013669054 1981-01-27;-0.041947815 1981-01-28; 0.035147558 1981-01-29; 0 1981-01-30; 0.013658139 1981-02-02; 0 1981-02-03; 0 1981-02-04;-0.010199922 1981-02-05;-0.003458217 1981-02-06; 0.010235076 1981-02-09;-0.00813776 1981-02-10;-0.002097316 1981-02-11; 0.017069524 1981-02-12; 0.016783038 1981-02-13; 0.006675457 1981-02-16;-0.013293615 1981-02-17; 0.006618158 1981-02-18; 0.029596241 1981-02-19; 0.01602849 1981-02-20; 0.006378682 1981-02-23;-0.009583346 1981-02-24; 0 1981-02-25;-0.006342413 1981-02-26;-0.009737942 1981-02-27;-0.003267168 1981-03-02;-0.011068568 1981-03-03; 0.004502034 1981-03-04; 0.006566534 1981-03-05;-0.009765897 1981-03-06;-0.003310099 1981-03-09; 0.003310099 1981-03-10; 0.013033065 1981-03-11; 0.009737942 1981-03-12;-0.009737942 1981-03-13; 0.019285018 1981-03-16; 0 1981-03-17; 0.006378682 1981-03-18; 0 1981-03-19; 0.006242517 1981-03-20; 0.004394352 1981-03-23;-0.004394352 1981-03-24;-0.017773094 1981-03-25; 0.02092752 1981-03-26; 0.003144507 1981-03-27;-0.015725705 1981-03-30; 0 1981-03-31; 0.003184255 1981-04-01; 0.018800955 1981-04-02; 0.019567165 1981-04-03; 0.040695897 1981-04-06; 0.014493007 1981-04-07; 0 1981-04-08; 0.002891062 1981-04-09;-0.014450864 1981-04-10; 0.013400536 1981-04-13; 0.020971306 1981-04-14;-0.01703825 1981-04-15; 0.029988929 1981-04-16;-0.004581715 1981-04-17; 0 1981-04-20; 0 1981-04-21; 0.009395304 1981-04-22;-0.006592873 1981-04-23;-0.00552746 1981-04-24;-0.005643935 1981-04-27; 0.002825949 1981-04-28; 0 1981-04-29;-0.025637988 1981-04-30; 0.001840733 1981-05-01; 0 1981-05-04;-0.010564408 1981-05-05;-0.014620926 1981-05-06; 0.002959245 1981-05-07; 0.005892348 1981-05-08; 0.014493007 1981-05-11; 0.002891062 1981-05-12; 0.001049226 1981-05-13; 0.013195781 1981-05-14;-0.009619208 1981-05-15; 0.015295178 1981-05-18; 0 1981-05-19;-0.01703825 1981-05-20;-0.008673233 1981-05-21; 0.002899444 1981-05-22;-0.002899444 1981-05-25; 0.002899444 1981-05-26; 0.019978081 1981-05-27; 0 1981-05-28; 0 1981-05-29; 0.005659907 1981-06-01; 0.002817986 1981-06-02; 0 1981-06-03; 0.005018511 1981-06-04; 0.008869425 1981-06-05; 0.002771364 1981-06-08; 0 1981-06-09; 0.01638631 1981-06-10; 0 1981-06-11; 0.031988439 1981-06-12; 0.022829697 1981-06-15; 0.003041294 1981-06-16;-0.018070888 1981-06-17; 0 1981-06-18; 0 1981-06-19; 0 1981-06-22; 0.007818401 1981-06-23; 0.020478 1981-06-24; 0.015979544 1981-06-25;-0.010445751 1981-06-26;-0.049572259 1981-06-29; 0.005301643 1981-06-30; 0.007900133 1981-07-01; 0.015537203 1981-07-02;-0.002585904 1981-07-03; 0.025409997 1981-07-06; 0.010046511 1981-07-07;-0.02779663 1981-07-08;-0.0025728 1981-07-09; 0.020322919 1981-07-10; 0 1981-07-13;-0.004523334 1981-07-14;-0.015253286 1981-07-15; 0 1981-07-16;-0.004692274 1981-07-17;-0.00518706 1981-07-20;-0.013965156 1981-07-21;-0.016922241 1981-07-22; 0.022182056 1981-07-23;-0.007900133 1981-07-24;-0.010550575 1981-07-27; 0.015824259 1981-07-28;-0.002633365 1981-07-29;-0.013190893 1981-07-30; 0 1981-07-31; 0.013190893 1981-08-03; 0.005259814 1981-08-04;-0.013201776 1981-08-05;-0.001612124 1981-08-06;-0.001049276 1981-08-07; 0.00314453 1981-08-10;-0.005732063 1981-08-11;-0.005358025 1981-08-12; 0 1981-08-13; 0.015908601 1981-08-14; 0.005273684 1981-08-17;-0.010575327 1981-08-18;-0.002661399 1981-08-19;-0.00096954 1981-08-20;-0.001617992 1981-08-21;-0.008047842 1981-08-24; 0.021238736 1981-08-25;-0.037448413 1981-08-26; 0.005459974 1981-08-27;-0.002726261 1981-08-28; 0.018848382 1981-08-31;-0.018848382 1981-09-01; 0.016165781 1981-09-02;-0.016165781 1981-09-03; 0.016165781 1981-09-04; 0.007945558 1981-09-07;-0.005262957 1981-09-08; 0.002675424 1981-09-09;-0.016078698 1981-09-10; 0.023981965 1981-09-11; 0.005287626 1981-09-14; 0.012072262 1981-09-15;-0.004272158 1981-09-16;-0.007800103 1981-09-17; 0.010413035 1981-09-18;-0.00515322 1981-09-21;-0.023808733 1981-09-22;-0.00973383 1981-09-23; 0.012416431 1981-09-24;-0.029828363 1981-09-25;-0.019339369 1981-09-28;-0.031355418 1981-09-29; 0.045243354 1981-09-30;-0.005565877 1981-10-01;-0.008322059 1981-10-02; 0.024844429 1981-10-05; 0.021640701 1981-10-06;-0.020643029 1981-10-07;-0.014733232 1981-10-08; 0.032686444 1981-10-09; 0 1981-10-12;-0.021699626 1981-10-13;-0.008207751 1981-10-14;-0.011162907 1981-10-15; 0 1981-10-16;-0.014044934 1981-10-19;-0.00570837 1981-10-20;-0.001736262 1981-10-21; 0.001736262 1981-10-22; 0.01421029 1981-10-23; 0 1981-10-26;-0.016989758 1981-10-27; 0.005637727 1981-10-28; 0.039014446 1981-10-29;-0.01652237 1981-10-30; 0.008337241 1981-11-02; 0.011921278 1981-11-03;-0.016460245 1981-11-04;-0.001011463 1981-11-05; 0.023585409 1981-11-06; 0.003699597 1981-11-09;-0.01080824 1981-11-10; 0.002733713 1981-11-11;-0.018199016 1981-11-12; 0.012724096 1981-11-13; 0.008201181 1981-11-16; 0.009115983 1981-11-17;-0.006397135 1981-11-18; 0 1981-11-19;-0.002718848 1981-11-20; 0.010749703 1981-11-23;-0.002697072 1981-11-24;-0.00098256 1981-11-25; 0.019630741 1981-11-26; 0.01308773 1981-11-27; 0.020637085 1981-11-30; 0 1981-12-01; 0.012656443 1981-12-02; 0.008476245 1981-12-03;-0.005948767 1981-12-04;-0.002527478 1981-12-07; 0.00756335 1981-12-08; 0 1981-12-09;-0.00909827 1981-12-10;-0.005082016 1981-12-11; 0.001619808 1981-12-14;-0.010225513 1981-12-15; 0.007678921 1981-12-16; 0.00754372 1981-12-17;-0.00754372 1981-12-18;-0.010251721 1981-12-21;-0.002501174 1981-12-22; 0.007640171 1981-12-23; 0.002559629 1981-12-24; 0 1981-12-25; 0 1981-12-28;-0.017977661 1981-12-29;-0.005219053 1981-12-30;-0.007800103 1981-12-31; 0 1982-01-01; 0 1982-01-04; 0.013019157 1982-01-05;-0.010385791 1982-01-06; 0.004214886 1982-01-07;-0.005251444 1982-01-08; 0.004616372 1982-01-11; 0.004199856 1982-01-12;-0.014737193 1982-01-13; 0.004324158 1982-01-14; 0 1982-01-15;-0.002640318 1982-01-18; 0.002640318 1982-01-19; 0.005259814 1982-01-20;-0.002626449 1982-01-21; 0.007779669 1982-01-22;-0.003564784 1982-01-25; 0.003564784 1982-01-26; 0.007798078 1982-01-27;-0.018211113 1982-01-28; 0.007800103 1982-01-29; 0.012996914 1982-02-01; 0.007640171 1982-02-02;-0.002566198 1982-02-03;-0.0025728 1982-02-04; 0.005604872 1982-02-05; 0.002093754 1982-02-08; 0.006639926 1982-02-09; 0.005984366 1982-02-10; 0.044288785 1982-02-11;-0.002417849 1982-02-12;-0.006402495 1982-02-15; 0.001549187 1982-02-16; 0 1982-02-17; 0.018260678 1982-02-18;-0.007118502 1982-02-19; 0.010442444 1982-02-22; 0.008547982 1982-02-23;-0.010931429 1982-02-24; 0.014144914 1982-02-25; 0.003771575 1982-02-26;-0.007628999 1982-03-01;-0.005598235 1982-03-02; 0.015568407 1982-03-03;-0.003762739 1982-03-04; 0.004612718 1982-03-05; 0.008881429 1982-03-08; 0.002733104 1982-03-09;-0.00231214 1982-03-10; 0.00231214 1982-03-11;-0.01388275 1982-03-12;-0.006192852 1982-03-15; 0.007611091 1982-03-16; 0 1982-03-17; 0.003183702 1982-03-18;-0.006946441 1982-03-19; 0.006946441 1982-03-22;-0.004601941 1982-03-23; 0 1982-03-24;-0.007907995 1982-03-25;-0.006242173 1982-03-26;-0.006208958 1982-03-29;-0.003264302 1982-03-30; 0.004784004 1982-03-31; 0 1982-04-01; 0.011789368 1982-04-02; 0.003780453 1982-04-05;-0.008508256 1982-04-06;-0.009450707 1982-04-07;-0.004795475 1982-04-08; 0.005664915 1982-04-09; 0 1982-04-12; 0 1982-04-13;-0.003264302 1982-04-14;-0.007146013 1982-04-15;-0.01943387 1982-04-16; 0.009727198 1982-04-19; 0.004865114 1982-04-20; 0.014382434 1982-04-21; 0.002389141 1982-04-22; 0.004689256 1982-04-23; 0.000935218 1982-04-26;-0.005624474 1982-04-27;-0.026525588 1982-04-28; 0.014595571 1982-04-29;-0.004841559 1982-04-30;-0.002429598 1982-05-03; 0 1982-05-04;-0.02108164 1982-05-05;-0.015935988 1982-05-06; 0.00754433 1982-05-07; 0.011473556 1982-05-10;-0.001577347 1982-05-11; 0.017141573 1982-05-12; 0.002435515 1982-05-13;-0.006359557 1982-05-14; 0.00148258 1982-05-17; 0.002441462 1982-05-18;-0.008832209 1982-05-19; 0.001564304 1982-05-20; 0 1982-05-21; 0.003343863 1982-05-24; 0.00148258 1982-05-25; 0.009730285 1982-05-26;-0.007288823 1982-05-27;-0.008832209 1982-05-28; 0.013697323 1982-05-31; 0 1982-06-01; 0.00432917 1982-06-02;-0.010081398 1982-06-03;-0.004001784 1982-06-04; 0.002447437 1982-06-07;-0.009751091 1982-06-08; 0.014628069 1982-06-09;-0.002435515 1982-06-10; 0 1982-06-11; 0.008754884 1982-06-14;-0.018482081 1982-06-15;-0.000970475 1982-06-16; 0.000970475 1982-06-17; 0 1982-06-18;-0.010802806 1982-06-21;-0.009016237 1982-06-22; 0 1982-06-23; 0.002508458 1982-06-24; 0.004922574 1982-06-25; 0.007451207 1982-06-28;-0.000900225 1982-06-29; 0.000900225 1982-06-30; 0.002471449 1982-07-01;-0.019868453 1982-07-02; 0 1982-07-05; 0 1982-07-06;-0.002521106 1982-07-07; 0.001605075 1982-07-08;-0.009129681 1982-07-09; 0.010045712 1982-07-12; 0.028136965 1982-07-13;-0.008268511 1982-07-14;-0.002471449 1982-07-15; 0 1982-07-16;-0.004961297 1982-07-19; 0.004961297 1982-07-20; 0 1982-07-21; 0.002471449 1982-07-22;-0.002471449 1982-07-23; 0 1982-07-26; 0.01318504 1982-07-27;-0.0009625 1982-07-28;-0.002447437 1982-07-29;-0.004838299 1982-07-30; 0 1982-08-02;-0.003213635 1982-08-03; 0.003735808 1982-08-04;-0.00104462 1982-08-05;-0.001643754 1982-08-06;-0.0065269 1982-08-09;-0.013793322 1982-08-10; 0.008283666 1982-08-11; 0 1982-08-12;-0.002728308 1982-08-13; 0 1982-08-16; 0.002198386 1982-08-17;-0.030210991 1982-08-18; 0.021388299 1982-08-19;-0.009055391 1982-08-20; 0.004537946 1982-08-23; 0.016666418 1982-08-24;-0.008336539 1982-08-25; 0.008336539 1982-08-26; 0.002713297 1982-08-27;-0.002713297 1982-08-30;-0.013831059 1982-08-31; 0.022023821 1982-09-01; 0.021549207 1982-09-02;-0.010753584 1982-09-03; 0.013387475 1982-09-06;-0.002633891 1982-09-07; 0.010639173 1982-09-08; 0.010455444 1982-09-09; 0.00164845 1982-09-10; 0.001002076 1982-09-13;-0.005236177 1982-09-14; 0.010373908 1982-09-15; 0.019593269 1982-09-16; 0.015100377 1982-09-17; 0.003431477 1982-09-20;-0.002469476 1982-09-21;-0.005026347 1982-09-22; 0.022388485 1982-09-23;-0.017362138 1982-09-24;-0.008483687 1982-09-27;-0.045415661 1982-09-28; 0.018243701 1982-09-29; 0.010337839 1982-09-30; 0 1982-10-01; 0.005129117 1982-10-04; 0.005102944 1982-10-05; 0 1982-10-06; 0.002506965 1982-10-07; 0.006654676 1982-10-08; 0.010925316 1982-10-11; 0.017276267 1982-10-12; 0.007294662 1982-10-13;-0.009782978 1982-10-14;-0.00736664 1982-10-15;-0.009953044 1982-10-18;-0.002469476 1982-10-19; 0.002469476 1982-10-20;-0.002469476 1982-10-21; 0.007458381 1982-10-22;-0.007458381 1982-10-25;-0.010078086 1982-10-26; 0.010078086 1982-10-27; 0 1982-10-28;-0.010078086 1982-10-29;-0.00759083 1982-11-01; 0.005090134 1982-11-02; 0.012578782 1982-11-03;-0.005026347 1982-11-04; 0.010027557 1982-11-05;-0.005001209 1982-11-08;-0.005026347 1982-11-09; 0.002550758 1982-11-10; 0.01245312 1982-11-11;-0.00251915 1982-11-12; 0.014819096 1982-11-15; 0.009692265 1982-11-16; 0.023924901 1982-11-17; 0 1982-11-18; 0.027986842 1982-11-19; 0.020503281 1982-11-22;-0.002291945 1982-11-23;-0.011351001 1982-11-24;-0.016123773 1982-11-25;-0.002297385 1982-11-26; 0.004653098 1982-11-29; 0 1982-11-30;-0.006955773 1982-12-01; 0.016134505 1982-12-02; 0.009157688 1982-12-03; 0.012718476 1982-12-06; 0.019414529 1982-12-07;-0.011860371 1982-12-08; 0.002200221 1982-12-09; 0.016289076 1982-12-10;-0.007415256 1982-12-13;-0.00887382 1982-12-14; 0.00887382 1982-12-15;-0.00887382 1982-12-16;-0.013398271 1982-12-17;-0.008200841 1982-12-20;-0.001748252 1982-12-21; 0.005422094 1982-12-22; 0.028975106 1982-12-23;-0.017726532 1982-12-24; 0 1982-12-27; 0.012520394 1982-12-28; 0.002182613 1982-12-29;-0.012492926 1982-12-30; 0.015516451 1982-12-31; 0 1983-01-03; 0.010929071 1983-01-04; 0.004350294 1983-01-05; 0.009410302 1983-01-06;-0.007271899 1983-01-07;-0.006488697 1983-01-10;-0.008697533 1983-01-11; 0.002166457 1983-01-12;-0.008815418 1983-01-13;-0.011099028 1983-01-14; 0.000429171 1983-01-17; 0 1983-01-18;-0.002639253 1983-01-19;-0.002214977 1983-01-20;-0.002281628 1983-01-21;-0.001791949 1983-01-24;-0.02695412 1983-01-25; 0.006017818 1983-01-26; 0.018211336 1983-01-27; 0.011223601 1983-01-28; 0.008913368 1983-01-31; 0.01238275 1983-02-01; 0.009499698 1983-02-02;-0.004350294 1983-02-03; 0.01646664 1983-02-04; 0.011390643 1983-02-07; 0.010515466 1983-02-08; 0.020704909 1983-02-09;-0.006155256 1983-02-10; 0.010648888 1983-02-11; 0.01181138 1983-02-14; 0.011235454 1983-02-15; 0.014624992 1983-02-16; 0.005865751 1983-02-17; 0.001233343 1983-02-18; 0.02576385 1983-02-21; 0.028117197 1983-02-22; 0.003649454 1983-02-23; 0.003686594 1983-02-24; 0.02646394 1983-02-25; 0.006020134 1983-02-28;-0.003519581 1983-03-01;-0.02163183 1983-03-02; 0.015590406 1983-03-03; 0.007802763 1983-03-04;-0.001761339 1983-03-07; 0.038427474 1983-03-08;-0.012041484 1983-03-09;-0.003487737 1983-03-10; 0.010379563 1983-03-11;-0.012151976 1983-03-14;-0.001727531 1983-03-15;-0.021211813 1983-03-16; 0.008888947 1983-03-17;-0.001751996 1983-03-18; 0.003549465 1983-03-21;-0.001797469 1983-03-22; 0 1983-03-23; 0.00881063 1983-03-24; 0.010499917 1983-03-25; 0.005185179 1983-03-28; 0.01880108 1983-03-29;-0.011944775 1983-03-30; 0.015338154 1983-03-31; 0.009468237 1983-04-01; 0 1983-04-04; 0 1983-04-05; 0.003304271 1983-04-06; 0.020452836 1983-04-07;-0.008203418 1983-04-08;-0.008271271 1983-04-11; 0.027234921 1983-04-12; 0.012840206 1983-04-13;-0.000964997 1983-04-14; 0.022091474 1983-04-15; 0.02471774 1983-04-18; 0.032953268 1983-04-19; 0.001498128 1983-04-20;-0.003526197 1983-04-21; 0.0093757 1983-04-22;-0.005849503 1983-04-25;-0.000566595 1983-04-26;-0.0098042 1983-04-27; 0.020635139 1983-04-28; 0 1983-04-29; 0.00869224 1983-05-02;-0.011619912 1983-05-03; 0 1983-05-04; 0.008199882 1983-05-05;-0.017034681 1983-05-06;-0.005892769 1983-05-09; 0 1983-05-10;-0.014947716 1983-05-11;-0.017655988 1983-05-12; 0 1983-05-13; 0.005543205 1983-05-16;-0.010736267 1983-05-17; 0.00460334 1983-05-18; 0.015801683 1983-05-19; 0.005995842 1983-05-20;-0.000536094 1983-05-23; 0 1983-05-24;-0.003015721 1983-05-25; 0.004499584 1983-05-26; 0 1983-05-27;-0.006031581 1983-05-30;-0.015197988 1983-05-31;-0.004596352 1983-06-01;-0.017050711 1983-06-02; 0 1983-06-03; 0.017050711 1983-06-06; 0.010720019 1983-06-07; 0.012094659 1983-06-08;-0.005468116 1983-06-09;-0.000540148 1983-06-10; 0.001495079 1983-06-13; 0.012003857 1983-06-14; 0.014289738 1983-06-15;-0.016711891 1983-06-16; 0.011361901 1983-06-17; 0 1983-06-20; 0.016684517 1983-06-21; 0.016764487 1983-06-22; 0.011371974 1983-06-23; 0.012664751 1983-06-24; 0.030233191 1983-06-27; 0.037267309 1983-06-28;-0.013140509 1983-06-29;-0.004005249 1983-06-30; 0.018436034 1983-07-01; 0.025741265 1983-07-04; 0.013866482 1983-07-05; 0 1983-07-06;-0.001240139 1983-07-07; 0.034521814 1983-07-08;-0.008057684 1983-07-11;-0.023951003 1983-07-12;-0.03051167 1983-07-13;-0.005973139 1983-07-14; 0.009829571 1983-07-15; 0 1983-07-18;-0.015515773 1983-07-19;-0.001327855 1983-07-20; 0.003906745 1983-07-21; 0.0193431 1983-07-22;-0.003831759 1983-07-25; 0.003831759 1983-07-26; 0.003852085 1983-07-27; 0 1983-07-28;-0.002554727 1983-07-29;-0.010249275 1983-08-01;-0.015591589 1983-08-02; 0.014280857 1983-08-03; 0 1983-08-04;-0.000815646 1983-08-05;-0.018223005 1983-08-08;-0.019076682 1983-08-09;-0.005131908 1983-08-10;-0.011091788 1983-08-11; 0.017548541 1983-08-12; 0.030317974 1983-08-15; 0.003881426 1983-08-16;-0.002562188 1983-08-17;-0.006506064 1983-08-18; 0.007787979 1983-08-19;-0.007787979 1983-08-22;-0.005249922 1983-08-23;-0.002635333 1983-08-24; 0.001336585 1983-08-25;-0.003978881 1983-08-26;-0.001305625 1983-08-29;-0.006626881 1983-08-30; 0.005319549 1983-08-31;-0.006635579 1983-09-01; 0.01582323 1983-09-02;-0.013192899 1983-09-05; 0 1983-09-06;-0.003472035 1983-09-07; 0.000329447 1983-09-08; 0.001828288 1983-09-09;-0.002670424 1983-09-12; 0.002670424 1983-09-13;-0.002670424 1983-09-14;-0.002677574 1983-09-15; 0.014620623 1983-09-16;-0.002645744 1983-09-19; 0.011833177 1983-09-20;-0.001327855 1983-09-21;-0.001293661 1983-09-22; 0.002621516 1983-09-23; 0.001290277 1983-09-26;-0.001290277 1983-09-27;-0.001327855 1983-09-28; 0.001327855 1983-09-29;-0.002621516 1983-09-30;-0.005263739 1983-10-03; 0 1983-10-04; 0 1983-10-05; 0.003932397 1983-10-06; 0.007854429 1983-10-07; 0.006480812 1983-10-10; 0.000816022 1983-10-11; 0.005623059 1983-10-12;-0.005162123 1983-10-13; 0.017917219 1983-10-14; 0.010081324 1983-10-17; 0 1983-10-18; 0.007486299 1983-10-19;-0.003736144 1983-10-20;-0.013831479 1983-10-21; 0.007561866 1983-10-24; 0.008773344 1983-10-25; 0.040316266 1983-10-26;-0.013247859 1983-10-27;-0.001234342 1983-10-28; 0.009237174 1983-10-31; 0.00405988 1983-11-01;-0.001219532 1983-11-02;-0.001188001 1983-11-03;-0.006027706 1983-11-04;-0.010955719 1983-11-07; 0.000470083 1983-11-08; 0.009289027 1983-11-09; 0.001960361 1983-11-10; 0.012239732 1983-11-11; 0.007122816 1983-11-14; 0.029418132 1983-11-15; 0.003439954 1983-11-16; 0 1983-11-17;-0.003439954 1983-11-18;-0.020924273 1983-11-21;-0.015419954 1983-11-22; 0.004774996 1983-11-23; 0.007087617 1983-11-24;-0.001166975 1983-11-25; 0.003529168 1983-11-28; 0.003516757 1983-11-29;-0.00587895 1983-11-30; 0.007069905 1983-12-01;-0.003512563 1983-12-02; 0.002321608 1983-12-05;-0.00116013 1983-12-06; 0.004696657 1983-12-07; 0 1983-12-08; 0.010439875 1983-12-09;-0.006532118 1983-12-12; 0.003064256 1983-12-13;-0.001147996 1983-12-14; 0 1983-12-15;-0.012877299 1983-12-16;-0.00944981 1983-12-19; 0.01765779 1983-12-20;-0.00189312 1983-12-21; 0.00189312 1983-12-22; 0.011600984 1983-12-23;-0.011600984 1983-12-26; 0 1983-12-27;-0.002342861 1983-12-28;-0.002348363 1983-12-29; 0.007028609 1983-12-30; 0 1984-01-02; 0.01040367 1984-01-03;-0.00114007 1984-01-04;-0.008112925 1984-01-05; 0.009252995 1984-01-06;-0.002281442 1984-01-09;-0.001174436 1984-01-10;-0.013976401 1984-01-11;-0.002321608 1984-01-12;-0.003557342 1984-01-13;-0.014225826 1984-01-16;-0.008414919 1984-01-17; 0.008414919 1984-01-18; 0.004753562 1984-01-19; 0.005934736 1984-01-20;-0.002376187 1984-01-23; 0.012533156 1984-01-24;-0.004257247 1984-01-25; 0.003516757 1984-01-26; 0.012832381 1984-01-27; 0.021733491 1984-01-30; 0.006790618 1984-01-31;-0.001144041 1984-02-01; 0.015655056 1984-02-02; 0.004436888 1984-02-03;-0.002215983 1984-02-06;-0.029201181 1984-02-07;-0.009147124 1984-02-08; 0 1984-02-09;-0.039844882 1984-02-10;-0.004809285 1984-02-13; 0.011947495 1984-02-14;-0.009539961 1984-02-15; 0.010290112 1984-02-16; 0.020395699 1984-02-17; 0.002329256 1984-02-20;-0.014025295 1984-02-21;-0.014224806 1984-02-22;-0.009585843 1984-02-23; 0.004820878 1984-02-24; 0 1984-02-27; 0.003584056 1984-02-28;-0.00599159 1984-02-29;-0.015741543 1984-03-01; 0 1984-03-02; 0.007285885 1984-03-05;-0.003636307 1984-03-06;-0.003649578 1984-03-07;-0.002451681 1984-03-08;-0.010614663 1984-03-09;-0.006683286 1984-03-12;-0.026486105 1984-03-13; 0.017758127 1984-03-14; 0 1984-03-15; 0.004991834 1984-03-16; 0.021034092 1984-03-19;-0.001211265 1984-03-20; 0.00443415 1984-03-21;-0.001543003 1984-03-22; 0.006858164 1984-03-23;-0.008538046 1984-03-26; 0 1984-03-27; 0.003222885 1984-03-28; 0.007746024 1984-03-29;-0.001231343 1984-03-30; 0.005280738 1984-04-02;-0.012566623 1984-04-03; 0.005619496 1984-04-04;-0.016682749 1984-04-05; 0 1984-04-06;-0.002478989 1984-04-09;-0.017457957 1984-04-10;-0.001281008 1984-04-11; 0.0162879 1984-04-12;-0.006222668 1984-04-13; 0.013625581 1984-04-16;-0.011159235 1984-04-17;-0.003736144 1984-04-18;-0.007514426 1984-04-19; 0 1984-04-20; 0 1984-04-23; 0 1984-04-24;-0.011413583 1984-04-25; 0 1984-04-26;-0.005087463 1984-04-27;-0.007733226 1984-04-30; 0.003856432 1984-05-01; 0 1984-05-02; 0.026655237 1984-05-03; 0.013218534 1984-05-04;-0.003262757 1984-05-07;-0.013710583 1984-05-08;-0.010128776 1984-05-09;-0.014043695 1984-05-10;-0.011664843 1984-05-11;-0.003906745 1984-05-14;-0.011812654 1984-05-15; 0.003953076 1984-05-16; 0.005234575 1984-05-17;-0.003932397 1984-05-18;-0.002642296 1984-05-21; 0.010527552 1984-05-22; 0.005186826 1984-05-23; 0.001319238 1984-05-24; 0.002562188 1984-05-25;-0.0017786 1984-05-28;-0.007289652 1984-05-29; 0 1984-05-30;-0.010527552 1984-05-31; 0 1984-06-01;-0.007932506 1984-06-04; 0.019750335 1984-06-05; 0.002111026 1984-06-06; 0.003104761 1984-06-07; 0.005153277 1984-06-08; 0.016628088 1984-06-11; 0 1984-06-12;-0.008894862 1984-06-13; 0.005087463 1984-06-14;-0.008964256 1984-06-15;-0.013402024 1984-06-18;-0.002113749 1984-06-19; 0.004722897 1984-06-20; 0.000463929 1984-06-21; 0 1984-06-22; 0.001319238 1984-06-25;-0.010458923 1984-06-26; 0.015612199 1984-06-27; 0.025479085 1984-06-28; 0.013284784 1984-06-29;-0.012007005 1984-07-02; 0.006261632 1984-07-03;-0.036889858 1984-07-04;-0.005209088 1984-07-05;-0.045258579 1984-07-06;-0.001385794 1984-07-09;-0.002702197 1984-07-10; 0.016252641 1984-07-11;-0.01216465 1984-07-12;-0.019272788 1984-07-13; 0.015184797 1984-07-16; 0.010876782 1984-07-17;-0.009524771 1984-07-18;-0.008215301 1984-07-19;-0.00691072 1984-07-20;-0.001410787 1984-07-23;-0.011165584 1984-07-24; 0.004196914 1984-07-25;-0.007017573 1984-07-26; 0.009818534 1984-07-27; 0.002793138 1984-07-30; 0.003623261 1984-07-31;-0.000837904 1984-08-01; 0.030026651 1984-08-02; 0.0160291 1984-08-03; 0.013158085 1984-08-06; 0.003906745 1984-08-07;-0.019724648 1984-08-08; 0.011895835 1984-08-09; 0.002628406 1984-08-10; 0.020711747 1984-08-13;-0.002574458 1984-08-14; 0.002327879 1984-08-15;-0.001022189 1984-08-16;-0.011634637 1984-08-17; 0.005195556 1984-08-20;-0.002594404 1984-08-21; 0.011604588 1984-08-22;-0.002571103 1984-08-23; 0.002571103 1984-08-24;-0.001302336 1984-08-27;-0.007707849 1984-08-28;-0.010382383 1984-08-29; 0.012970073 1984-08-30;-0.012970073 1984-08-31;-0.009187433 1984-09-03;-0.001340119 1984-09-04; 0.005782243 1984-09-05;-0.0083952 1984-09-06; 0 1984-09-07;-0.005319549 1984-09-10; 0.002663312 1984-09-11; 0.009248076 1984-09-12; 0.00654867 1984-09-13; 0.001290277 1984-09-14; 0.009092106 1984-09-17;-0.006480812 1984-09-18; 0.02946307 1984-09-19; 0.005051564 1984-09-20;-0.010128776 1984-09-21;-0.017905046 1984-09-24;-0.009092106 1984-09-25;-0.002618131 1984-09-26; 0.024547203 1984-09-27;-0.008975615 1984-09-28; 0.003846498 1984-10-01; 0.001302336 1984-10-02;-0.011604588 1984-10-03;-0.020928488 1984-10-04; 0.005255254 1984-10-05; 0.010464146 1984-10-08; 0.005209088 1984-10-09;-0.006497702 1984-10-10;-0.001290277 1984-10-11; 0.001290277 1984-10-12;-0.003911792 1984-10-15; 0.007808342 1984-10-16; 0.004130177 1984-10-17;-0.014566926 1984-10-18; 0.007363671 1984-10-19;-0.039381058 1984-10-22; 0.054088773 1984-10-23;-0.011634637 1984-10-24; 0.005195556 1984-10-25; 0.001276958 1984-10-26;-0.016404649 1984-10-29;-0.011051438 1984-10-30; 0.015294522 1984-10-31;-0.007853066 1984-11-01; 0.021325364 1984-11-02;-0.010391183 1984-11-05;-0.00257889 1984-11-06;-0.009187433 1984-11-07;-0.009272625 1984-11-08;-0.002670424 1984-11-09; 0.009297305 1984-11-12;-0.014622816 1984-11-13; 0.001324845 1984-11-14; 0.00535506 1984-11-15;-0.004509549 1984-11-16; 0.000477581 1984-11-19;-0.002647937 1984-11-20; 0.002647937 1984-11-21; 0 1984-11-22; 0.004507401 1984-11-23;-0.000987691 1984-11-26; 0.000512258 1984-11-27;-0.009371795 1984-11-28; 0.001586511 1984-11-29;-0.008329525 1984-11-30;-0.001376412 1984-12-03; 0.008119425 1984-12-04; 0.008017402 1984-12-05; 0.002670424 1984-12-06;-0.00131603 1984-12-07;-0.006679904 1984-12-10;-0.000515692 1984-12-11;-0.000847786 1984-12-12; 0 1984-12-13;-0.003176365 1984-12-14;-0.025401283 1984-12-17; 0.00548693 1984-12-18; 0.013642879 1984-12-19; 0 1984-12-20; 0 1984-12-21;-0.00406588 1984-12-24; 0 1984-12-25; 0 1984-12-26; 0 1984-12-27; 0.018883156 1984-12-28;-0.001358023 1984-12-31; 0 1985-01-01; 0 1985-01-02; 0.004031968 1985-01-03;-0.00535506 1985-01-04;-0.009422354 1985-01-07; 0.012103469 1985-01-08;-0.002681114 1985-01-09; 0.030317974 1985-01-10; 0.006472515 1985-01-11;-0.00775777 1985-01-14;-0.011786826 1985-01-15; 0.013072082 1985-01-16;-0.009139685 1985-01-17;-0.006574693 1985-01-18; 0.013106442 1985-01-21;-0.003906745 1985-01-22; 0.001327855 1985-01-23;-0.023808056 1985-01-24; 0.005347998 1985-01-25;-0.007995935 1985-01-28;-0.004059046 1985-01-29;-0.00266578 1985-01-30;-0.01223485 1985-01-31; 0.013568628 1985-02-01;-0.021783929 1985-02-04;-0.019487091 1985-02-05; 0.011165584 1985-02-06; 0.004150411 1985-02-07; 0.001404948 1985-02-08;-0.005555358 1985-02-11;-0.013986242 1985-02-12;-0.002828637 1985-02-13; 0.014025583 1985-02-14; 0.024267898 1985-02-15;-0.006293806 1985-02-18; 0.004087991 1985-02-19; 0.050467667 1985-02-20; 0.005182094 1985-02-21;-0.012970073 1985-02-22; 0 1985-02-25;-0.002621516 1985-02-26;-0.005263739 1985-02-27; 0.000253004 1985-02-28; 0.008922527 1985-03-01; 0.010369064 1985-03-04;-0.006472515 1985-03-05; 0 1985-03-06; 0.011634637 1985-03-07;-0.005162123 1985-03-08; 0 1985-03-11;-0.001276958 1985-03-12;-0.002594404 1985-03-13;-0.003065082 1985-03-14;-0.012608152 1985-03-15; 0.002635333 1985-03-18; 0.006540199 1985-03-19; 0.016799955 1985-03-20; 0.005129117 1985-03-21; 0.002554727 1985-03-22;-0.001294046 1985-03-25;-0.032365285 1985-03-26; 0.005263739 1985-03-27;-0.010518993 1985-03-28; 0.001307332 1985-03-29;-0.001307332 1985-04-01;-0.016007375 1985-04-02; 0.004016736 1985-04-03;-0.009422354 1985-04-04; 0.002706462 1985-04-05; 0 1985-04-08; 0 1985-04-09;-0.001333778 1985-04-10; 0.011537384 1985-04-11;-0.003745185 1985-04-12;-0.001067373 1985-04-15; 0.005325511 1985-04-16;-0.002677574 1985-04-17; 0 1985-04-18; 0.006844704 1985-04-19;-0.00416713 1985-04-22; 0.002670424 1985-04-23;-0.005347998 1985-04-24;-0.009372762 1985-04-25; 0 1985-04-26;-0.00949887 1985-04-29;-0.009589965 1985-04-30;-0.011057394 1985-05-01; 0 1985-05-02;-0.015440308 1985-05-03; 0.003988775 1985-05-06; 0.025263698 1985-05-07; 0.002747203 1985-05-08; 0.01894821 1985-05-09; 0.001363477 1985-05-10;-0.00809751 1985-05-13; 0.006734032 1985-05-14; 0 1985-05-15;-0.012131704 1985-05-16; 0 1985-05-17;-0.010959014 1985-05-20; 0.002751033 1985-05-21; 0.029699096 1985-05-22; 0.018460058 1985-05-23; 0.012970073 1985-05-24; 0.025446132 1985-05-27; 0 1985-05-28;-0.013131572 1985-05-29;-0.020097807 1985-05-30;-0.007808342 1985-05-31; 0.006523087 1985-06-03; 0.000821326 1985-06-04;-0.012608152 1985-06-05;-0.003947922 1985-06-06; 0 1985-06-07; 0.011833177 1985-06-10; 0.009068252 1985-06-11; 0.066342789 1985-06-12; 0.033329332 1985-06-13;-0.01654217 1985-06-14;-0.010752261 1985-06-17; 0 1985-06-18; 0.022586719 1985-06-19; 0.026692913 1985-06-20; 0.014806293 1985-06-21; 0.02891046 1985-06-24;-0.008804498 1985-06-25;-0.015620054 1985-06-26;-0.051884835 1985-06-27; 0.024567315 1985-06-28; 0.018294343 1985-07-01;-0.007974399 1985-07-02; 0.010245607 1985-07-03; 0.012354225 1985-07-04; 0.016620881 1985-07-05; 0.019581212 1985-07-08;-0.010834407 1985-07-09;-0.013133906 1985-07-10;-0.05561317 1985-07-11; 0.019648619 1985-07-12;-0.040869145 1985-07-15;-0.035189556 1985-07-16;-0.009918789 1985-07-17;-0.002503731 1985-07-18; 0.01242252 1985-07-19; 0.012270093 1985-07-22; 0.003444877 1985-07-23;-0.001002138 1985-07-24; 0.002436787 1985-07-25;-0.015895487 1985-07-26;-0.006184186 1985-07-29; 0 1985-07-30;-0.010002481 1985-07-31;-0.006285419 1985-08-01; 0.041995046 1985-08-02; 0 1985-08-05; 0.022727505 1985-08-06; 0.004697506 1985-08-07;-0.011834458 1985-08-08; 0.051285118 1985-08-09; 0.002048545 1985-08-12;-0.011350647 1985-08-13;-0.002291959 1985-08-14; 0.002291959 1985-08-15; 0.006813378 1985-08-16;-0.00455795 1985-08-19;-0.03004736 1985-08-20; 0.002351086 1985-08-21; 0.011641426 1985-08-22; 0.021733491 1985-08-23;-0.019415036 1985-08-26; 0.020565551 1985-08-27; 0.028975106 1985-08-28;-0.002206272 1985-08-29; 0.028249876 1985-08-30; 0.020120934 1985-09-02;-0.002077743 1985-09-03; 0.004179945 1985-09-04;-0.022223137 1985-09-05; 0.016973781 1985-09-06; 0.041242959 1985-09-09; 0.008042828 1985-09-10; 0.02961733 1985-09-11;-0.009775301 1985-09-12; 0 1985-09-13;-0.031916728 1985-09-16; 0.006055574 1985-09-17; 0.008026633 1985-09-18; 0 1985-09-19;-0.012078142 1985-09-20; 0.008086671 1985-09-23;-0.026467736 1985-09-24;-0.029284964 1985-09-25; 0.018922177 1985-09-26;-0.009401889 1985-09-27;-0.01165152 1985-09-30; 0.01165152 1985-10-01; 0.006277738 1985-10-02; 0.009371765 1985-10-03; 0.002045513 1985-10-04; 0.008253064 1985-10-07; 0.016249171 1985-10-08;-0.022432575 1985-10-09; 0.004126514 1985-10-10;-0.020747396 1985-10-11; 0.017668254 1985-10-14; 0.015329628 1985-10-15; 0.014082207 1985-10-16;-0.008026633 1985-10-17; 0.012029599 1985-10-18; 0.007931034 1985-10-21;-0.009930514 1985-10-22;-0.014081629 1985-10-23; 0.018076599 1985-10-24; 0.017728801 1985-10-25;-0.019724292 1985-10-28;-0.00199948 1985-10-29; 0.007946845 1985-10-30; 0.033119684 1985-10-31; 0.017089081 1985-11-01; 0.0260186 1985-11-04; 0.018182319 1985-11-05;-0.046091107 1985-11-06; 0.047896229 1985-11-07; 0.007163548 1985-11-08;-0.019843346 1985-11-11;-0.012817299 1985-11-12; 0.014642139 1985-11-13; 0.090348294 1985-11-14;-0.03896884 1985-11-15; 0.008598546 1985-11-18; 0.010226258 1985-11-19; 0.021808328 1985-11-20; 0 1985-11-21; 0.001638785 1985-11-22;-0.003303077 1985-11-25;-0.006662036 1985-11-26;-0.018570356 1985-11-27;-0.02240957 1985-11-28;-0.008749004 1985-11-29;-0.012363979 1985-12-02;-0.03808727 1985-12-03; 0.00919965 1985-12-04; 0.027101795 1985-12-05; 0.008873129 1985-12-06;-0.023226027 1985-12-09;-0.010914058 1985-12-10; 0.00363459 1985-12-11;-0.009149241 1985-12-12; 0.009149241 1985-12-13; 0.028732294 1985-12-16; 0.014074369 1985-12-17; 0.003469941 1985-12-18;-0.001745431 1985-12-19;-0.014025678 1985-12-20;-0.007087305 1985-12-23; 0.012363979 1985-12-24; 0 1985-12-25; 0 1985-12-26; 0 1985-12-27; 0.003518415 1985-12-30;-0.00175766 1985-12-31; 0 1986-01-01; 0 1986-01-02; 0.003512236 1986-01-03; 0.019052726 1986-01-06; 0.038683196 1986-01-07;-0.018323114 1986-01-08; 0.088410957 1986-01-09;-0.015504187 1986-01-10;-0.001568021 1986-01-13;-0.004697272 1986-01-14; 0.00783086 1986-01-15; 0.010869672 1986-01-16; 0.013788966 1986-01-17;-0.009178519 1986-01-20; 0.003075888 1986-01-21;-0.012339434 1986-01-22;-0.017205696 1986-01-23;-0.046816163 1986-01-24; 0.02933129 1986-01-27; 0.001586218 1986-01-28;-0.034215101 1986-01-29;-0.005001209 1986-01-30;-0.039077866 1986-01-31; 0.006903696 1986-02-03; 0.015367052 1986-02-04; 0.025105921 1986-02-05; 0.022872376 1986-02-06; 0.004848092 1986-02-07;-0.004848092 1986-02-10;-0.014641877 1986-02-11;-0.004921114 1986-02-12;-0.001653323 1986-02-13;-0.047296392 1986-02-14;-0.005218087 1986-02-17;-0.01932066 1986-02-18; 0.01058698 1986-02-19; 0.017391743 1986-02-20;-0.042254868 1986-02-21;-0.00540033 1986-02-24;-0.00363311 1986-02-25;-0.018315438 1986-02-26;-0.033827134 1986-02-27;-0.065191831 1986-02-28; 0.030153038 1986-03-03;-0.017976964 1986-03-04; 0.033710445 1986-03-05; 0.032585096 1986-03-06; 0.024247491 1986-03-07;-0.005555358 1986-03-10; 0.014721187 1986-03-11; 0.02700394 1986-03-12;-0.008920535 1986-03-13; 0.001770826 1986-03-14;-0.010771653 1986-03-17;-0.034982211 1986-03-18;-0.007513688 1986-03-19;-0.003765114 1986-03-20;-0.013356578 1986-03-21;-0.015463404 1986-03-24;-0.001956554 1986-03-25; 0.003882564 1986-03-26; 0.017379302 1986-03-27; 0.055775683 1986-03-28; 0 1986-03-31; 0 1986-04-01;-0.005454627 1986-04-02;-0.01279378 1986-04-03; 0.003661297 1986-04-04; 0 1986-04-07; 0.009132484 1986-04-08; 0.046194152 1986-04-09; 0.003475697 1986-04-10;-0.015712522 1986-04-11; 0.012236824 1986-04-14; 0.012088893 1986-04-15; 0.006832857 1986-04-16; 0.003387339 1986-04-17; 0.035037438 1986-04-18; 0.004919424 1986-04-21;-0.026452064 1986-04-22; 0.001678219 1986-04-23;-0.01178387 1986-04-24;-0.003399147 1986-04-25;-0.010220196 1986-04-28;-0.036689697 1986-04-29; 0.008857368 1986-04-30; 0.003506612 1986-05-01; 0 1986-05-02; 0.003518415 1986-05-05;-0.01056829 1986-05-06; 0.015798879 1986-05-07; 0.025796909 1986-05-08; 0 1986-05-09;-0.02056973 1986-05-12;-0.017482795 1986-05-13; 0.001766935 1986-05-14; 0.003500432 1986-05-15;-0.012342094 1986-05-16;-0.00178264 1986-05-19; 0 1986-05-20;-0.008936522 1986-05-21; 0.008936522 1986-05-22; 0.028076501 1986-05-23; 0.01202372 1986-05-26; 0 1986-05-27;-0.018987237 1986-05-28;-0.005230589 1986-05-29; 0 1986-05-30; 0.012194107 1986-06-02;-0.005218087 1986-06-03;-0.035401927 1986-06-04;-0.007228319 1986-06-05; 0.016196989 1986-06-06; 0.015938822 1986-06-09; 0.003518415 1986-06-10;-0.003518415 1986-06-11;-0.007049875 1986-06-12; 0.00881063 1986-06-13; 0.00873368 1986-06-16; 0.034191365 1986-06-17; 0 1986-06-18; 0.018323114 1986-06-19;-0.006617947 1986-06-20;-0.020144035 1986-06-23; 0.003393379 1986-06-24; 0 1986-06-25;-0.010191438 1986-06-26;-0.006844589 1986-06-27; 0.025446428 1986-06-30; 0 1986-07-01;-0.016892137 1986-07-02; 0.006786486 1986-07-03; 0.00169525 1986-07-04;-0.044916984 1986-07-07;-0.021439204 1986-07-08;-0.012700881 1986-07-09; 0.005459431 1986-07-10; 0.014455454 1986-07-11; 0.028250878 1986-07-14; 0 1986-07-15;-0.012255616 1986-07-16;-0.026810994 1986-07-17; 0.017953627 1986-07-18;-0.001785824 1986-07-21;-0.019807524 1986-07-22;-0.01279378 1986-07-23; 0.003661297 1986-07-24; 0.01458711 1986-07-25; 0.044215223 1986-07-28;-0.011400561 1986-07-29;-0.028675101 1986-07-30; 0.002075715 1986-07-31;-0.004155747 1986-08-01;-0.010465559 1986-08-04;-0.021291135 1986-08-05; 0.021291135 1986-08-06; 0.004199376 1986-08-07; 0.016623348 1986-08-08; 0.058067072 1986-08-11; 0.032544118 1986-08-12; 0.016798155 1986-08-13; 0.066280459 1986-08-14;-0.006952807 1986-08-15;-0.0105207 1986-08-18; 0.039762131 1986-08-19; 0.033338073 1986-08-20;-0.01654003 1986-08-21;-0.003337111 1986-08-22; 0.024780446 1986-08-25; 0.02256947 1986-08-26;-0.016068905 1986-08-27; 0.033470136 1986-08-28; 0.003128203 1986-08-29; 0.003118448 1986-09-01; 0.007753837 1986-09-02; 0.001543579 1986-09-03;-0.018682086 1986-09-04;-0.009473577 1986-09-05;-0.04880244 1986-09-08; 0.044012805 1986-09-09; 0.00159278 1986-09-10; 0 1986-09-11;-0.00159278 1986-09-12;-0.02256947 1986-09-15; 0.001629107 1986-09-16; 0.001626457 1986-09-17;-0.014753871 1986-09-18; 0 1986-09-19;-0.03013681 1986-09-22; 0.01182803 1986-09-23; 0.037926211 1986-09-24;-0.00161856 1986-09-25;-0.00813233 1986-09-26;-0.001634432 1986-09-29;-0.00988276 1986-09-30; 0.013148958 1986-10-01; 0.027359104 1986-10-02; 0 1986-10-03;-0.001587692 1986-10-06;-0.006395133 1986-10-07;-0.001600427 1986-10-08;-0.004816707 1986-10-09;-0.01459091 1986-10-10;-0.001634432 1986-10-13;-0.008232109 1986-10-14; 0.008232109 1986-10-15;-0.001637108 1986-10-16;-0.014875642 1986-10-17;-0.018462432 1986-10-20; 0.001692559 1986-10-21; 0.010095633 1986-10-22;-0.018587223 1986-10-23;-0.010306529 1986-10-24; 0.008599524 1986-10-27;-0.008599524 1986-10-28;-0.006916739 1986-10-29;-0.005219132 1986-10-30; 0.001742739 1986-10-31; 0.006940743 1986-11-03;-0.005201035 1986-11-04; 0.005201035 1986-11-05;-0.006940743 1986-11-06; 0.001739707 1986-11-07; 0 1986-11-10; 0.005201035 1986-11-11;-0.017443027 1986-11-12;-0.010634926 1986-11-13; 0.012392984 1986-11-14;-0.005283474 1986-11-17;-0.00176738 1986-11-18;-0.007122131 1986-11-19; 0 1986-11-20; 0.005351622 1986-11-21; 0.017565589 1986-11-24; 0.034251807 1986-11-25; 0.006707817 1986-11-26;-0.006707817 1986-11-27; 0.010044928 1986-11-28;-0.003337111 1986-12-01; 0.001669947 1986-12-02;-0.008377764 1986-12-03; 0.010044928 1986-12-04;-0.001667163 1986-12-05; 0.004993174 1986-12-08;-0.003326011 1986-12-09;-0.003337111 1986-12-10; 0.001669947 1986-12-11; 0.001667163 1986-12-12;-0.02019178 1986-12-15;-0.005112299 1986-12-16; 0.011888294 1986-12-17; 0 1986-12-18;-0.017047307 1986-12-19; 0.006866018 1986-12-22;-0.010306529 1986-12-23; 0.008599524 1986-12-24; 0 1986-12-25; 0 1986-12-26; 0 1986-12-29; 0.001707005 1986-12-30;-0.001707005 1986-12-31; 0 1987-01-01; 0 1987-01-02;-0.041909867 1987-01-05; 0.010653772 1987-01-06; 0.017473507 1987-01-07;-0.008698589 1987-01-08;-0.01230656 1987-01-09;-0.036041675 1987-01-12;-0.022274406 1987-01-13;-0.040198064 1987-01-14; 0.003896561 1987-01-15; 0.011622284 1987-01-16; 0.007658681 1987-01-19;-0.019280965 1987-01-20;-0.001946382 1987-01-21;-0.015708965 1987-01-22; 0.003950437 1987-01-23; 0.003934892 1987-01-26;-0.011851433 1987-01-27;-0.026194627 1987-01-28;-0.04167528 1987-01-29; 0.035537302 1987-01-30; 0.034317623 1987-02-02;-0.003973985 1987-02-03;-0.018105128 1987-02-04;-0.045651541 1987-02-05; 0.031358639 1987-02-06; 0.026407284 1987-02-09; 0.009964732 1987-02-10;-0.012973617 1987-02-11;-0.007080228 1987-02-12; 0.008084196 1987-02-13; 0.001002961 1987-02-16;-0.004041859 1987-02-17;-0.033779256 1987-02-18;-0.008363667 1987-02-19; 0.043172876 1987-02-20; 0 1987-02-23;-0.020339028 1987-02-24;-0.008243018 1987-02-25;-0.010400252 1987-02-26;-0.004190577 1987-02-27;-0.008459417 1987-03-02; 0.006357524 1987-03-03; 0.002101892 1987-03-04; 0.024884029 1987-03-05; 0.006125445 1987-03-06;-0.012288641 1987-03-09; 0.005138632 1987-03-10;-0.001025616 1987-03-11;-0.008243018 1987-03-12;-0.002071415 1987-03-13;-0.008328837 1987-03-16;-0.012649994 1987-03-17; 0.006357524 1987-03-18;-0.014863689 1987-03-19;-0.021587455 1987-03-20; 0.004354933 1987-03-23; 0.021494648 1987-03-24; 0.021067122 1987-03-25; 0.004155747 1987-03-26; 0.030653462 1987-03-27; 0.043313442 1987-03-30; 0.00192387 1987-03-31;-0.003874419 1987-04-01; 0.032296957 1987-04-02; 0.022192098 1987-04-03;-0.007335477 1987-04-06; 0.021846949 1987-04-07;-0.034837152 1987-04-08;-0.007486666 1987-04-09; 0.003750339 1987-04-10;-0.0284765 1987-04-13;-0.025376592 1987-04-14; 0.009827629 1987-04-15; 0.040275125 1987-04-16; 0.005620248 1987-04-17; 0 1987-04-20; 0 1987-04-21; 0.013014314 1987-04-22; 0.045090089 1987-04-23; 0.017473507 1987-04-24;-0.019237769 1987-04-27;-0.041483519 1987-04-28; 0.046766994 1987-04-29; 0.001754973 1987-04-30;-0.007038447 1987-05-01; 0 1987-05-04;-0.005311538 1987-05-05; 0.015850718 1987-05-06; 0.029291783 1987-05-07; 0.001695429 1987-05-08;-0.008506036 1987-05-11; 0.003411102 1987-05-12;-0.017193689 1987-05-13; 0.005183064 1987-05-14; 0 1987-05-15;-0.008653425 1987-05-18; 0.001736686 1987-05-19;-0.008713748 1987-05-20;-0.017679856 1987-05-21; 0.005351622 1987-05-22; 0.01582285 1987-05-25; 0 1987-05-26; 0.010411166 1987-05-27; 0.018830265 1987-05-28; 0 1987-05-29; 0.020124055 1987-06-01; 0.027852393 1987-06-02;-0.026193527 1987-06-03; 0.016458458 1987-06-04; 0.003255564 1987-06-05;-0.00488733 1987-06-08; 0 1987-06-09;-0.004911333 1987-06-10; 0.004911333 1987-06-11; 0.01459091 1987-06-12;-0.00484002 1987-06-15; 0.033416901 1987-06-16; 0.001562878 1987-06-17; 0 1987-06-18; 0 1987-06-19; 0.013957064 1987-06-22; 0.013783025 1987-06-23; 0.018063065 1987-06-24;-0.018063065 1987-06-25; 0.010576399 1987-06-26; 0.023780126 1987-06-29; 0.001466558 1987-06-30; 0.00146441 1987-07-01;-0.023709698 1987-07-02; 0.03679377 1987-07-03;-0.004342364 1987-07-06;-0.001451655 1987-07-07; 0.001451655 1987-07-08; 0.012987975 1987-07-09;-0.01443963 1987-07-10; 0.007237293 1987-07-13; 0.008633196 1987-07-14; 0.002855591 1987-07-15; 0.011341511 1987-07-16;-0.004238007 1987-07-17; 0.004238007 1987-07-20; 0.001408687 1987-07-21;-0.019904523 1987-07-22;-0.002893268 1987-07-23;-0.005777282 1987-07-24; 0.004336087 1987-07-27; 0.005769428 1987-07-28; 0.015650196 1987-07-29; 0.007033555 1987-07-30; 0.00839203 1987-07-31; 0.012432939 1987-08-03; 0.029772202 1987-08-04; 0.009285059 1987-08-05; 0.01182817 1987-08-06;-0.01579693 1987-08-07;-0.016034448 1987-08-10;-0.005418586 1987-08-11;-0.00952527 1987-08-12; 0 1987-08-13;-0.009616874 1987-08-14; 0.017786934 1987-08-17; 0.017491944 1987-08-18; 0 1987-08-19;-0.00937208 1987-08-20; 0.004027366 1987-08-21; 0.006676441 1987-08-24; 0 1987-08-25; 0.026284181 1987-08-26; 0.021813163 1987-08-27;-0.011496038 1987-08-28; 0 1987-08-31; 0.003841644 1987-09-01; 0.006385243 1987-09-02;-0.005107968 1987-09-03;-0.005118919 1987-09-04;-0.014213656 1987-09-07;-0.02505288 1987-09-08;-0.006694319 1987-09-09; 0.008027822 1987-09-10; 0.007963889 1987-09-11;-0.003974016 1987-09-14; 0.005295187 1987-09-15; 0 1987-09-16;-0.018657139 1987-09-17; 0 1987-09-18;-0.008119864 1987-09-21;-0.004076686 1987-09-22;-0.0095774 1987-09-23; 0.016362673 1987-09-24;-0.00542453 1987-09-25;-0.001360743 1987-09-28; 0 1987-09-29; 0.006785273 1987-09-30;-0.00542453 1987-10-01; 0.002715943 1987-10-02; 0.009464123 1987-10-05; 0.001342454 1987-10-06;-0.010806576 1987-10-07;-0.00817006 1987-10-08; 0.004093373 1987-10-09;-0.019247415 1987-10-12;-0.006981497 1987-10-13; 0.012518664 1987-10-14; 0.004132847 1987-10-15;-0.016651511 1987-10-16;-0.012660517 1987-10-19;-0.085731355 1987-10-20;-0.057146533 1987-10-21; 0.041602466 1987-10-22;-0.07821208 1987-10-23;-0.043293772 1987-10-26;-0.065845022 1987-10-27; 0.007528941 1987-10-28;-0.07801705 1987-10-29;-0.016351525 1987-10-30; 0.071609532 1987-11-02;-0.023312479 1987-11-03;-0.023845009 1987-11-04;-0.055876331 1987-11-05;-0.025849581 1987-11-06;-0.002184599 1987-11-09;-0.108521596 1987-11-10;-0.08127924 1987-11-11; 0.117191789 1987-11-12; 0.06158756 1987-11-13; 0.011021487 1987-11-16; 0.015192913 1987-11-17;-0.053107494 1987-11-18; 0 1987-11-19; 0.004532708 1987-11-20;-0.041581633 1987-11-23;-0.002360016 1987-11-24; 0.077323522 1987-11-25;-0.004383569 1987-11-26;-0.033531013 1987-11-27; 0.006791381 1987-11-30;-0.046200321 1987-12-01; 0.004714475 1987-12-02; 0.02097175 1987-12-03;-0.013941452 1987-12-04;-0.023629127 1987-12-07; 0.004770703 1987-12-08; 0.011828125 1987-12-09; 0.00936279 1987-12-10; 0.016204154 1987-12-11;-0.01387709 1987-12-14; 0.011582132 1987-12-15; 0.038315574 1987-12-16; 0.053856606 1987-12-17;-0.023343436 1987-12-18;-0.026074264 1987-12-21; 0.028216739 1987-12-22; 0.027467144 1987-12-23; 0 1987-12-24; 0 1987-12-25; 0 1987-12-28;-0.04256177 1987-12-29;-0.01756102 1987-12-30; 0.006637918 1987-12-31; 0 1988-01-01; 0 1988-01-04;-0.033531013 1988-01-05; 0.043367157 1988-01-06; 0.005423007 1988-01-07; 0.008616101 1988-01-08; 0.01914406 1988-01-11;-0.03209621 1988-01-12;-0.002175096 1988-01-13;-0.02650362 1988-01-14; 0.048044571 1988-01-15;-0.015029805 1988-01-18; 0.085028505 1988-01-19;-0.016047652 1988-01-20;-0.024527971 1988-01-21;-0.015641224 1988-01-22; 0.038148019 1988-01-25; 0.004038273 1988-01-26; 0.004045923 1988-01-27;-0.021322358 1988-01-28;-0.017580165 1988-01-29;-0.002088722 1988-02-01; 0.01864327 1988-02-02; 0 1988-02-03; 0.006137977 1988-02-04; 0.028179646 1988-02-05;-0.012973617 1988-02-08; 0.014954703 1988-02-09;-0.007948002 1988-02-10; 0.004974899 1988-02-11; 0.008892921 1988-02-12; 0.009789147 1988-02-15; 0.011644796 1988-02-16; 0.007673373 1988-02-17; 0 1988-02-18; 0 1988-02-19;-0.000955958 1988-02-22; 0.009518701 1988-02-23; 0.000946906 1988-02-24; 0.003778682 1988-02-25; 0.026080246 1988-02-26;-0.017630058 1988-02-29;-0.008450188 1988-03-01; 0.005641385 1988-03-02;-0.007528941 1988-03-03; 0 1988-03-04;-0.01044573 1988-03-07;-0.000955045 1988-03-08;-0.005749502 1988-03-09; 0 1988-03-10; 0.004793545 1988-03-11;-0.00963317 1988-03-14; 0 1988-03-15; 0.017820178 1988-03-16; 0.015441986 1988-03-17; 0.005588837 1988-03-18; 0.003356004 1988-03-21;-0.012688161 1988-03-22;-0.007528941 1988-03-23;-0.003785835 1988-03-24;-0.023044126 1988-03-25;-0.029542861 1988-03-28;-0.014115288 1988-03-29; 0.018105128 1988-03-30; 0.003973985 1988-03-31;-0.003973985 1988-04-01; 0 1988-04-04; 0 1988-04-05;-0.000995969 1988-04-06; 0.004969954 1988-04-07; 0.007900904 1988-04-08;-0.001969381 1988-04-11; 0.010783915 1988-04-12; 0.024107501 1988-04-13;-0.002859674 1988-04-14; 0.002859674 1988-04-15;-0.017305069 1988-04-18; 0.007740848 1988-04-19; 0 1988-04-20;-0.005805765 1988-04-21;-0.011667069 1988-04-22; 0 1988-04-25; 0 1988-04-26;-0.004901742 1988-04-27;-0.001967444 1988-04-28; 0.008823175 1988-04-29;-0.00980835 1988-05-02; 0.005896547 1988-05-03;-0.013813088 1988-05-04; 0.009885923 1988-05-05;-0.001969381 1988-05-06;-0.005931523 1988-05-09;-0.013978594 1988-05-10;-0.01726533 1988-05-11;-0.032251678 1988-05-12; 0 1988-05-13; 0.01053471 1988-05-16; 0.040991244 1988-05-17; 0.00818526 1988-05-18; 0.017570273 1988-05-19;-0.02174971 1988-05-20; 0.007963826 1988-05-23; 0 1988-05-24;-0.002979007 1988-05-25; 0.007924383 1988-05-26;-0.005937392 1988-05-27; 0 1988-05-30; 0.008892921 1988-05-31; 0.011735529 1988-06-01; 0.026881436 1988-06-02; 0 1988-06-03; 0.002835349 1988-06-06; 0.00470779 1988-06-07;-0.009437848 1988-06-08;-0.00761494 1988-06-09; 0.013288331 1988-06-10;-0.001887556 1988-06-13; 0.001887556 1988-06-14;-0.005673391 1988-06-15; 0.018787455 1988-06-16;-0.017839652 1988-06-17; 0 1988-06-20;-0.014312246 1988-06-21; 0.009564221 1988-06-22; 0.009473613 1988-06-23;-0.005673391 1988-06-24; 0.001894709 1988-06-27;-0.017183022 1988-06-28;-0.017506778 1988-06-29; 0.003911803 1988-06-30;-0.00980835 1988-07-01; 0.013704911 1988-07-04; 0.011622284 1988-07-05; 0.001920176 1988-07-06; 0.024632454 1988-07-07;-0.004690126 1988-07-08;-0.010396367 1988-07-11;-0.001901916 1988-07-12;-0.00190554 1988-07-13;-0.0115331 1988-07-14; 0.009623921 1988-07-15; 0.001909178 1988-07-18; 0.000953224 1988-07-19;-0.011522048 1988-07-20; 0.000986273 1988-07-21;-0.007755813 1988-07-22;-0.023564053 1988-07-25; 0.007916541 1988-07-26; 0.005896547 1988-07-27;-0.003927166 1988-07-28;-0.01386782 1988-07-29; 0.01583333 1988-08-01; 0.005873458 1988-08-02;-0.005873458 1988-08-03;-0.00590816 1988-08-04;-0.017936849 1988-08-05; 0.005014816 1988-08-08;-0.005014816 1988-08-09;-0.002036978 1988-08-10;-0.006063541 1988-08-11;-0.012238509 1988-08-12; 0.009192895 1988-08-15;-0.005096727 1988-08-16;-0.008209184 1988-08-17; 0.012288641 1988-08-18; 0.003048709 1988-08-19;-0.012251004 1988-08-22;-0.003086347 1988-08-23;-0.006201418 1988-08-24; 0.010314433 1988-08-25;-0.004113016 1988-08-26;-0.016623348 1988-08-29;-0.001048192 1988-08-30; 0.008354932 1988-08-31;-0.001040557 1988-09-01;-0.012596981 1988-09-02; 0.002131422 1988-09-05; 0.010465559 1988-09-06; 0.024679312 1988-09-07; 0.018141576 1988-09-08; 0.004974899 1988-09-09;-0.002981968 1988-09-12; 0.01344293 1988-09-13;-0.005510689 1988-09-14; 0.00590816 1988-09-15;-0.006896256 1988-09-16;-0.000989073 1988-09-19; 0.007885329 1988-09-20;-0.007885329 1988-09-21; 0.01862712 1988-09-22;-0.001156979 1988-09-23;-0.006643771 1988-09-26;-0.002941041 1988-09-27;-0.00590816 1988-09-28;-0.003958255 1988-09-29; 0.004945376 1988-09-30; 0.008840508 1988-10-03;-0.013384633 1988-10-04; 0.002568908 1988-10-05; 0.000988096 1988-10-06; 0.003942649 1988-10-07; 0.020447671 1988-10-10; 0.004830319 1988-10-11;-0.008693014 1988-10-12;-0.011678424 1988-10-13; 0.006828978 1988-10-14; 0.003881436 1988-10-17;-0.007777997 1988-10-18; 0.023177526 1988-10-19; 0.028208721 1988-10-20;-0.007444863 1988-10-21;-0.006560034 1988-10-24;-0.011346873 1988-10-25; 0.00757887 1988-10-26; 0.024263929 1988-10-27; 0.014630903 1988-10-28; 0.006334317 1988-10-31;-0.01362301 1988-11-01; 0.005471495 1988-11-02;-0.010054054 1988-11-03;-0.016695541 1988-11-04; 0.00465953 1988-11-07;-0.016876907 1988-11-08; 0.013151022 1988-11-09;-0.01031835 1988-11-10;-0.012333286 1988-11-11;-0.012510312 1988-11-14; 0.011555267 1988-11-15;-0.007673373 1988-11-16; 0 1988-11-17;-0.001950548 1988-11-18; 0.0115331 1988-11-21; 0.003807456 1988-11-22;-0.005716635 1988-11-23;-0.000955958 1988-11-24;-0.002873369 1988-11-25;-0.003844046 1988-11-28;-0.016527392 1988-11-29; 0.002932417 1988-11-30; 0.007777997 1988-12-01;-0.002909664 1988-12-02; 0.001940716 1988-12-05; 0.016368476 1988-12-06;-0.000954134 1988-12-07; 0.01327573 1988-12-08;-0.00851414 1988-12-09; 0.001898306 1988-12-12; 0 1988-12-13;-0.002848812 1988-12-14;-0.010515631 1988-12-15; 0 1988-12-16;-0.008709795 1988-12-19; 0.002904031 1988-12-20; 0.015369986 1988-12-21;-0.014403847 1988-12-22; 0.006759802 1988-12-23; 0.000958707 1988-12-26; 0 1988-12-27; 0.012380268 1988-12-28;-0.012380268 1988-12-29; 0.002870619 1988-12-30; 0 1989-01-02; 0.003814719 1989-01-03; 0.01323807 1989-01-04; 0.018634561 1989-01-05; 0.003681228 1989-01-06;-0.011106704 1989-01-09; 0.005579769 1989-01-10;-0.013038514 1989-01-11; 0.003736327 1989-01-12; 0.002793112 1989-01-13;-0.014044235 1989-01-16;-0.007571697 1989-01-17;-0.023088421 1989-01-18; 0.007747865 1989-01-19; 0.009623921 1989-01-20;-0.005749502 1989-01-23;-0.013568667 1989-01-24;-0.001950178 1989-01-25; 0.004868333 1989-01-26;-0.012707302 1989-01-27; 0.001965511 1989-01-30;-0.01583333 1989-01-31;-0.010048657 1989-02-01; 0.010048657 1989-02-02; 0.021706789 1989-02-03; 0.002923843 1989-02-06; 0.006789237 1989-02-07; 0.002895622 1989-02-08; 0.013425774 1989-02-09;-0.008595455 1989-02-10; 0 1989-02-13;-0.01354246 1989-02-14;-0.011735529 1989-02-15;-0.018867592 1989-02-16; 0.008981669 1989-02-17; 0 1989-02-20; 0.005943274 1989-02-21;-0.008928209 1989-02-22;-0.001994918 1989-02-23;-0.01005874 1989-02-24; 0.015038594 1989-02-27;-0.005978807 1989-02-28; 0.004582209 1989-03-01; 0.010298315 1989-03-02; 0.004911371 1989-03-03; 0.0116898 1989-03-06; 0.007740848 1989-03-07;-0.005805765 1989-03-08;-0.003873918 1989-03-09;-0.000369728 1989-03-10; 0.007139268 1989-03-13;-0.00676954 1989-03-14; 0.01504236 1989-03-15; 0.007053063 1989-03-16;-0.007622196 1989-03-17;-0.008667964 1989-03-20;-0.015556229 1989-03-21;-0.000980346 1989-03-22;-0.000981308 1989-03-23; 0 1989-03-24; 0 1989-03-27; 0 1989-03-28;-0.00590816 1989-03-29; 0.00590816 1989-03-30; 0.008797301 1989-03-31;-0.002923843 1989-04-03; 0.012608702 1989-04-04;-0.00676954 1989-04-05; 0.001938835 1989-04-06; 0 1989-04-07;-0.001938835 1989-04-10; 0.002906845 1989-04-11; 0.010609511 1989-04-12; 0.00952777 1989-04-13; 0 1989-04-14;-0.002848812 1989-04-17; 0.00474352 1989-04-18;-0.001894709 1989-04-19;-0.001898306 1989-04-20;-0.00476159 1989-04-21;-0.00766602 1989-04-24;-0.005811366 1989-04-25;-0.002906845 1989-04-26; 0.004840057 1989-04-27;-0.000966139 1989-04-28;-0.00581652 1989-05-01; 0 1989-05-02;-0.003896561 1989-05-03;-0.000976517 1989-05-04; 0 1989-05-05; 0.004873078 1989-05-08; 0.000971772 1989-05-09;-0.00780075 1989-05-10; 0.00585626 1989-05-11;-0.00390036 1989-05-12;-0.022727182 1989-05-15; 0 1989-05-16;-0.006014769 1989-05-17; 0.004013863 1989-05-18;-0.002004917 1989-05-19; 0.011969649 1989-05-22; 0.015739873 1989-05-23; 0 1989-05-24; 0.015518845 1989-05-25; 0 1989-05-26; 0.001920176 1989-05-29; 0.006691729 1989-05-30; 0.017940725 1989-05-31; 0.013961794 1989-06-01; 0.010100213 1989-06-02; 0.029723723 1989-06-05; 0.016709281 1989-06-06;-0.002619816 1989-06-07; 0.002619816 1989-06-08;-0.00087251 1989-06-09;-0.002622106 1989-06-12;-0.000875566 1989-06-13;-0.021268204 1989-06-14; 0.000894378 1989-06-15;-0.008979984 1989-06-16;-0.004520414 1989-06-19; 0.019738748 1989-06-20; 0.002682807 1989-06-21; 0.004420408 1989-06-22; 0.016621574 1989-06-23;-0.008713748 1989-06-26;-0.013214665 1989-06-27; 0.000886431 1989-06-28; 0.00794272 1989-06-29; 0.004385514 1989-06-30;-0.015899855 1989-07-03; 0.00622621 1989-07-04; 0.002647561 1989-07-05;-0.009763376 1989-07-06;-0.013439916 1989-07-07;-0.01362301 1989-07-10; 0.01362301 1989-07-11; 0.015218334 1989-07-12; 0.001796376 1989-07-13; 0.00442432 1989-07-14; 0.036431458 1989-07-17; 0.013529227 1989-07-18;-0.002522827 1989-07-19; 0.014212588 1989-07-20; 0.008286552 1989-07-21; 0.003287674 1989-07-24;-0.004130902 1989-07-25; 0.005770695 1989-07-26; 0.008971108 1989-07-27;-0.005699568 1989-07-28;-0.006553819 1989-07-31;-0.010267798 1989-08-01; 0.007779382 1989-08-02; 0.005770695 1989-08-03;-0.019041818 1989-08-04;-0.002508063 1989-08-07; 0.009382849 1989-08-08; 0.022606229 1989-08-09; 0.026984661 1989-08-10;-0.004859316 1989-08-11;-0.006497035 1989-08-14;-0.0114868 1989-08-15;-0.003311835 1989-08-16;-0.003303489 1989-08-17;-0.000832422 1989-08-18; 0 1989-08-21; 0.015660598 1989-08-22; 0.003273948 1989-08-23;-0.020601472 1989-08-24; 0.00083381 1989-08-25; 0.01075756 1989-08-28;-0.004959546 1989-08-29;-0.003300747 1989-08-30;-0.009187296 1989-08-31; 0.002514009 1989-09-01; 0.00417602 1989-09-04; 0.017313206 1989-09-05; 0.006531875 1989-09-06; 0.014505262 1989-09-07; 0.005599025 1989-09-08; 0.007926212 1989-09-11; 0.010671796 1989-09-12;-0.007529826 1989-09-13;-0.011068182 1989-09-14;-0.001596525 1989-09-15;-0.019321916 1989-09-18; 0.00323377 1989-09-19; 0.006473854 1989-09-20;-0.001614539 1989-09-21; 0.008829254 1989-09-22; 0.005571562 1989-09-25; 0.011856464 1989-09-26;-0.019833375 1989-09-27;-0.007232153 1989-09-28;-0.004051068 1989-09-29;-0.007314518 1989-10-02;-0.00491898 1989-10-03; 0.008999728 1989-10-04; 0.00566638 1989-10-05;-0.007296681 1989-10-06;-0.004906912 1989-10-09; 0.004906912 1989-10-10;-0.01146795 1989-10-11;-0.016622704 1989-10-12; 0 1989-10-13;-0.01688385 1989-10-16;-0.140615651 1989-10-17; 0.057152069 1989-10-18; 0.009233478 1989-10-19; 0.013650133 1989-10-20; 0.006326408 1989-10-23;-0.003610188 1989-10-24;-0.019127455 1989-10-25;-0.02704717 1989-10-26;-0.009491957 1989-10-27;-0.011515069 1989-10-30; 0 1989-10-31;-0.005818953 1989-11-01; 0.003883062 1989-11-02;-0.006805285 1989-11-03;-0.024643272 1989-11-06; 0.013877727 1989-11-07;-0.007896626 1989-11-08; 0.0128148 1989-11-09; 0.01842672 1989-11-10; 0.024693705 1989-11-13; 0 1989-11-14;-0.018930516 1989-11-15;-0.015420316 1989-11-16; 0.015420316 1989-11-17; 0.011405663 1989-11-20;-0.00379482 1989-11-21;-0.014315378 1989-11-22; 0 1989-11-23; 0.000941345 1989-11-24; 0 1989-11-27;-0.003838173 1989-11-28; 0 1989-11-29;-0.005818953 1989-11-30; 0.005818953 1989-12-01; 0.028531879 1989-12-04; 0.004688037 1989-12-05;-0.002810184 1989-12-06; 0.020405566 1989-12-07; 0.01455636 1989-12-08;-0.010908005 1989-12-11; 0 1989-12-12;-0.01471719 1989-12-13;-0.012132957 1989-12-14;-0.016098436 1989-12-15;-0.017334021 1989-12-18;-0.000973126 1989-12-19;-0.000974074 1989-12-20; 0.005830261 1989-12-21; 0.011537254 1989-12-22; 0.007610843 1989-12-25; 0 1989-12-26; 0 1989-12-27; 0.057176834 1989-12-28; 0.015988081 1989-12-29; 0 1990-01-01; 0 1990-01-02;-0.001768456 1990-01-03; 0.051660609 1990-01-04;-0.028951321 1990-01-05;-0.012165526 1990-01-08; 0.006981398 1990-01-09; 0.006912911 1990-01-10;-0.027075996 1990-01-11; 0.003522545 1990-01-12;-0.000884619 1990-01-15;-0.019620291 1990-01-16;-0.020012964 1990-01-17; 0 1990-01-18;-0.014820519 1990-01-19;-0.013147866 1990-01-22; 0.003780474 1990-01-23; 0 1990-01-24;-0.025754976 1990-01-25; 0.016299006 1990-01-26; 0.000929718 1990-01-29; 0.012270632 1990-01-30;-0.00563283 1990-01-31; 0.00563283 1990-02-01; 0.031411239 1990-02-02; 0.039209308 1990-02-05; 0.030999976 1990-02-06; 0.041497805 1990-02-07; 0.00323377 1990-02-08; 0.027192289 1990-02-09;-0.022332973 1990-02-12; 0 1990-02-13; 0.006423905 1990-02-14; 0.007180224 1990-02-15; 0.012653151 1990-02-16; 0.02711847 1990-02-19;-0.016957779 1990-02-20;-0.015666403 1990-02-21;-0.012723454 1990-02-22; 0.026830586 1990-02-23;-0.025228947 1990-02-26;-0.028348474 1990-02-27; 0.021926468 1990-02-28;-0.004824896 1990-03-01;-0.020399753 1990-03-02; 0.013923817 1990-03-05; 0.00323377 1990-03-06;-0.004048589 1990-03-07; 0.008907904 1990-03-08; 0.006423905 1990-03-09;-0.004809366 1990-03-12;-0.004851457 1990-03-13; 0.001619769 1990-03-14; 0 1990-03-15; 0.00161715 1990-03-16;-0.004047788 1990-03-19; 0.000810869 1990-03-20; 0.003236919 1990-03-21; 0.010912936 1990-03-22;-0.015772252 1990-03-23;-0.001625033 1990-03-26; 0.008905181 1990-03-27;-0.00565775 1990-03-28;-0.00324743 1990-03-29; 0.008905181 1990-03-30; 0 1990-04-02;-0.033544844 1990-04-03; 0.020584477 1990-04-04; 0.001631631 1990-04-05;-0.007363397 1990-04-06; 0 1990-04-09;-0.009883684 1990-04-10;-0.018374498 1990-04-11;-0.005061407 1990-04-12; 0.006749403 1990-04-13; 0 1990-04-16; 0 1990-04-17;-0.01356455 1990-04-18;-0.019815748 1990-04-19;-0.006122074 1990-04-20; 0.006993604 1990-04-23;-0.0336012 1990-04-24;-0.001803465 1990-04-25; 0.026675428 1990-04-26; 0.002612513 1990-04-27; 0.015633693 1990-04-30;-0.009516968 1990-05-01; 0 1990-05-02; 0.019798655 1990-05-03; 0.029396614 1990-05-04; 0.019670637 1990-05-07; 0.001304015 1990-05-08;-0.024278141 1990-05-09; 0.002473814 1990-05-10;-0.01082938 1990-05-11;-0.022017066 1990-05-14;-0.012909104 1990-05-15;-0.006975311 1990-05-16; 0 1990-05-17; 0.000874579 1990-05-18; 0.017312873 1990-05-21;-0.020815788 1990-05-22; 0.006122074 1990-05-23; 0.019815748 1990-05-24; 0 1990-05-25;-0.001711069 1990-05-28; 0.015275618 1990-05-29; 0.010049159 1990-05-30;-0.006681691 1990-05-31;-0.01949972 1990-06-01;-0.007722819 1990-06-04; 0 1990-06-05; 0.006027311 1990-06-06;-0.012070965 1990-06-07; 0.002583094 1990-06-08; 0 1990-06-11;-0.01043375 1990-06-12;-0.003488625 1990-06-13;-0.007055137 1990-06-14; 0 1990-06-15; 0 1990-06-18;-0.007976238 1990-06-19; 0.013272251 1990-06-20; 0.019142057 1990-06-21; 0.006865451 1990-06-22;-0.001696963 1990-06-25; 0.006830179 1990-06-26;-0.011998667 1990-06-27; 0.006865451 1990-06-28; 0.000857368 1990-06-29;-0.003413892 1990-07-02; 0.011097304 1990-07-03; 0.008448841 1990-07-04; 0.02165015 1990-07-05;-0.006623688 1990-07-06; 0.00166004 1990-07-09;-0.00166004 1990-07-10;-0.005812505 1990-07-11;-0.002509802 1990-07-12;-0.000838002 1990-07-13; 0.003347805 1990-07-16; 0.000835203 1990-07-17;-0.02020033 1990-07-18; 0.005078611 1990-07-19; 0 1990-07-20; 0.00507256 1990-07-23; 0 1990-07-24;-0.010151171 1990-07-25;-0.003413379 1990-07-26; 0.005115709 1990-07-27;-0.003407563 1990-07-30;-0.013727449 1990-07-31;-0.002598791 1990-08-01;-0.019225878 1990-08-02;-0.018701445 1990-08-03;-0.016328187 1990-08-06;-0.066112864 1990-08-07; 0.015487385 1990-08-08;-0.020391088 1990-08-09; 0.001964368 1990-08-10; 0.003917197 1990-08-13;-0.02071542 1990-08-14; 0.009928963 1990-08-15; 0.03105917 1990-08-16;-0.009601363 1990-08-17;-0.023435729 1990-08-20;-0.011927097 1990-08-21;-0.049208452 1990-08-22; 0.004200558 1990-08-23;-0.049303298 1990-08-24; 0.010923505 1990-08-27; 0.05909805 1990-08-28;-0.018624576 1990-08-29; 0.016569568 1990-08-30; 0.008171089 1990-08-31;-0.012293818 1990-09-03;-0.002067756 1990-09-04;-0.008289777 1990-09-05;-0.036075561 1990-09-06;-0.002140924 1990-09-07; 0.012901789 1990-09-10; 0.039794958 1990-09-11;-0.010338867 1990-09-12; 0.010338867 1990-09-13;-0.010338867 1990-09-14;-0.01460733 1990-09-17;-0.002111311 1990-09-18;-0.021336858 1990-09-19; 0 1990-09-20;-0.035078767 1990-09-21;-0.018025124 1990-09-24;-0.045331853 1990-09-25;-0.075291383 1990-09-26; 0.017792325 1990-09-27;-0.033294645 1990-09-28;-0.014422152 1990-10-01; 0.067674756 1990-10-02; 0.023171231 1990-10-03; 0 1990-10-04;-0.003632016 1990-10-05;-0.019539215 1990-10-08; 0.036349154 1990-10-09;-0.020455195 1990-10-10;-0.018370633 1990-10-11; 0.014740453 1990-10-12; 0.028844653 1990-10-15; 0.019950923 1990-10-16;-0.021138621 1990-10-17;-0.015541757 1990-10-18; 0.037816219 1990-10-19; 0.01839828 1990-10-22;-0.002284683 1990-10-23; 0.01810684 1990-10-24;-0.011268391 1990-10-25; 0.006765765 1990-10-26;-0.030853653 1990-10-29;-0.010527129 1990-10-30;-0.021336796 1990-10-31;-0.002405326 1990-11-01;-0.014526325 1990-11-02;-0.006127383 1990-11-05; 0.006127383 1990-11-06;-0.015981094 1990-11-07;-0.03430183 1990-11-08;-0.001016351 1990-11-09; 0.019077538 1990-11-12; 0.001260942 1990-11-13; 0.011248516 1990-11-14;-0.00499667 1990-11-15; 0.009968497 1990-11-16; 0.002476674 1990-11-19; 0.02919543 1990-11-20;-0.004816452 1990-11-21; 0 1990-11-22; 0.024976697 1990-11-23;-0.011814576 1990-11-26;-0.02164714 1990-11-27;-0.02334246 1990-11-28;-0.002495214 1990-11-29; 0 1990-11-30; 0.033114946 1990-12-03; 0.026184444 1990-12-04;-0.010153768 1990-12-05; 0.004277698 1990-12-06; 0.016415527 1990-12-07; 0.003461615 1990-12-10;-0.00116155 1990-12-11;-0.008141599 1990-12-12; 0.00234071 1990-12-13; 0.002335244 1990-12-14;-0.010551814 1990-12-17;-0.02379876 1990-12-18;-0.002416954 1990-12-19;-0.009698245 1990-12-20;-0.034748401 1990-12-21; 0.007531723 1990-12-24; 0 1990-12-25; 0 1990-12-26; 0 1990-12-27;-0.020231904 1990-12-28; 0.005081659 1990-12-31; 0 1991-01-01; 0 1991-01-02;-0.037571611 1991-01-03;-0.001324279 1991-01-04; 0.015746431 1991-01-07;-0.042575442 1991-01-08; 0.005429992 1991-01-09; 0.018745188 1991-01-10; 0.005300638 1991-01-11; 0.009178587 1991-01-14;-0.043286834 1991-01-15;-0.003536331 1991-01-16;-0.009652925 1991-01-17; 0.088632045 1991-01-18;-0.01788339 1991-01-21; 0.001290187 1991-01-22;-0.010338112 1991-01-23;-0.029048132 1991-01-24; 0.014644905 1991-01-25; 0.009178587 1991-01-28;-0.003936472 1991-01-29; 0.010463019 1991-01-30; 0.003865439 1991-01-31; 0.019224473 1991-02-01; 0.00507256 1991-02-04; 0.023691936 1991-02-05;-0.006166811 1991-02-06; 0.006166811 1991-02-07; 0.007384543 1991-02-08; 0.02297526 1991-02-11; 0.027162435 1991-02-12;-0.009127507 1991-02-13; 0.007960567 1991-02-14; 0.00881325 1991-02-15; 0.062040653 1991-02-18; 0.032037986 1991-02-19; 0.008805257 1991-02-20;-0.02150251 1991-02-21; 0.012697253 1991-02-22; 0.014616552 1991-02-25; 0.021543704 1991-02-26;-0.034055559 1991-02-27; 0.00733175 1991-02-28;-0.025314697 1991-03-01;-0.017248083 1991-03-04; 0.016177193 1991-03-05; 0.012751011 1991-03-06; 0.04238841 1991-03-07;-0.001014498 1991-03-08; 0.028941675 1991-03-11;-0.009886354 1991-03-12; 0.00889981 1991-03-13;-0.004924305 1991-03-14; 0.013768358 1991-03-15;-0.010797067 1991-03-18;-0.002971291 1991-03-19; 0.009847321 1991-03-20;-0.013822826 1991-03-21;-0.022105005 1991-03-22;-0.007152307 1991-03-25; 0.032240422 1991-03-26;-0.000993381 1991-03-27; 0.005347976 1991-03-28; 0.029739359 1991-03-29; 0 1991-04-01; 0 1991-04-02; 0.029270597 1991-04-03; 0.040997961 1991-04-04;-0.012580889 1991-04-05; 0 1991-04-08;-0.01455636 1991-04-09;-0.014793074 1991-04-10;-0.00840872 1991-04-11; 0.001857741 1991-04-12; 0.025907738 1991-04-15; 0.009086447 1991-04-16;-0.00361198 1991-04-17; 0.01353559 1991-04-18; 0.010693957 1991-04-19; 0.011459207 1991-04-22;-0.004399749 1991-04-23; 0.014860627 1991-04-24;-0.000869258 1991-04-25; 0.003452352 1991-04-26;-0.017443721 1991-04-29;-0.018651503 1991-04-30; 0.005355686 1991-05-01; 0 1991-05-02; 0.005864512 1991-05-03;-0.000516684 1991-05-06; 0.002828155 1991-05-07; 0.000700641 1991-05-08;-0.000886187 1991-05-09; 0 1991-05-10;-0.000515586 1991-05-13;-0.003016344 1991-05-14;-0.004458507 1991-05-15;-0.005355686 1991-05-16; 0.018651503 1991-05-17;-0.026770798 1991-05-20; 0 1991-05-21; 0.015260769 1991-05-22; 0.003562039 1991-05-23;-0.000889321 1991-05-24; 0 1991-05-27; 0.001777852 1991-05-28;-0.007130451 1991-05-29; 0.004110363 1991-05-30; 0 1991-05-31; 0.013600893 1991-06-03; 0.01305536 1991-06-04; 0.006053372 1991-06-05; 0.018750425 1991-06-06;-0.013610774 1991-06-07; 0.013177771 1991-06-10; 0.000944492 1991-06-11; 0.004748272 1991-06-12;-0.009499437 1991-06-13;-0.003821219 1991-06-14; 0.005716505 1991-06-17;-0.000947194 1991-06-18;-0.004769311 1991-06-19;-0.011572125 1991-06-20;-0.011687304 1991-06-21; 0.006839225 1991-06-24;-0.016694335 1991-06-25;-0.005964151 1991-06-26;-0.02010631 1991-06-27;-0.006122167 1991-06-28;-0.032213305 1991-07-01; 0.008405973 1991-07-02;-0.015825121 1991-07-03; 0.002112816 1991-07-04;-0.002112816 1991-07-05;-0.00963004 1991-07-08;-0.002784493 1991-07-09; 0.01665765 1991-07-10; 0.004225189 1991-07-11; 0.005272803 1991-07-12; 0.01870823 1991-07-15; 0.0153237 1991-07-16; 0.006072681 1991-07-17;-0.01319735 1991-07-18;-0.01129643 1991-07-19; 0.008224361 1991-07-22;-0.001019043 1991-07-23; 0.019290632 1991-07-24; 0.016960939 1991-07-25;-0.001968464 1991-07-26;-0.005970044 1991-07-29;-0.002998441 1991-07-30;-0.003007459 1991-07-31; 0.003007459 1991-08-01; 0.003989051 1991-08-02;-0.00099061 1991-08-05; 0.004963812 1991-08-06;-0.001974334 1991-08-07; 0.009894074 1991-08-08; 0.017558312 1991-08-09; 0.019163071 1991-08-12;-0.007633098 1991-08-13; 0.017059197 1991-08-14;-0.012279224 1991-08-15; 0.010408899 1991-08-16;-0.005671278 1991-08-19;-0.105774626 1991-08-20; 0.03107813 1991-08-21; 0.026196543 1991-08-22; 0.044707716 1991-08-23;-0.004755665 1991-08-26; 0.001897084 1991-08-27; 0 1991-08-28; 0.000947194 1991-08-29; 0.006644543 1991-08-30;-0.004733156 1991-09-02; 0.001907741 1991-09-03; 0.005662407 1991-09-04;-0.008515532 1991-09-05; 0.002656619 1991-09-06;-0.002656619 1991-09-09;-0.002861289 1991-09-10;-0.008633318 1991-09-11; 0 1991-09-12; 0 1991-09-13; 0.001931598 1991-09-16;-0.008691624 1991-09-17;-0.011687304 1991-09-18;-0.014809025 1991-09-19;-0.002992439 1991-09-20;-0.011035598 1991-09-23;-0.001024515 1991-09-24; 0.003028691 1991-09-25;-0.001001586 1991-09-26;-0.007081381 1991-09-27;-0.006115969 1991-09-30;-0.005111195 1991-10-01; 0.002039126 1991-10-02;-0.004103726 1991-10-03; 0 1991-10-04;-0.008258321 1991-10-07;-0.012538536 1991-10-08;-0.011618751 1991-10-09;-0.009597597 1991-10-10; 0.007482546 1991-10-11;-0.006416519 1991-10-14; 0.000643508 1991-10-15; 0.007888062 1991-10-16;-0.005318164 1991-10-17;-0.002569898 1991-10-18;-0.001709535 1991-10-21; 0 1991-10-22;-0.00539193 1991-10-23; 0.001071788 1991-10-24;-0.01300572 1991-10-25;-0.012078073 1991-10-28; 0.003312661 1991-10-29; 0.00985006 1991-10-30; 0.008702257 1991-10-31; 0 1991-11-01;-0.006513949 1991-11-04; 0.000428077 1991-11-05; 0.006085872 1991-11-06; 0 1991-11-07; 0.009248492 1991-11-08; 0.04132586 1991-11-11; 0.002678288 1991-11-12; 0.010599985 1991-11-13;-0.008140585 1991-11-14; 0.002242106 1991-11-15; 0.00183647 1991-11-18;-0.01435909 1991-11-19;-0.012486438 1991-11-20; 0 1991-11-21; 0 1991-11-22;-0.003754793 1991-11-25;-0.004642402 1991-11-26; 0.006315352 1991-11-27;-0.009488048 1991-11-28; 0.003172696 1991-11-29;-0.002099417 1991-12-02;-0.016844595 1991-12-03;-0.001292134 1991-12-04; 0.013462849 1991-12-05;-0.005956207 1991-12-06; 0 1991-12-09;-0.001084755 1991-12-10;-0.001063759 1991-12-11; 0.007466678 1991-12-12; 0.003186151 1991-12-13; 0.012622384 1991-12-16; 0.001060939 1991-12-17; 0.007287813 1991-12-18; 0.006210801 1991-12-19;-0.022956749 1991-12-20;-0.012729503 1991-12-23;-0.009671363 1991-12-24; 0 1991-12-25; 0 1991-12-26; 0 1991-12-27; 0.016045377 1991-12-30; 0.003182794 1991-12-31; 0 1992-01-01; 0 1992-01-02; 0.013669027 1992-01-03; 0.012460417 1992-01-06;-0.005802704 1992-01-07;-0.004562975 1992-01-08; 0.004154877 1992-01-09; 0.017483968 1992-01-10; 0.02016724 1992-01-13;-0.004001042 1992-01-14; 0.003007459 1992-01-15; 0.016859927 1992-01-16; 0.008819204 1992-01-17; 0.003888116 1992-01-20; 0 1992-01-21; 0.00291121 1992-01-22; 0 1992-01-23;-0.009730427 1992-01-24; 0 1992-01-27; 0.014550388 1992-01-28; 0.002888822 1992-01-29;-0.005786014 1992-01-30; 0.011538743 1992-01-31; 0.023593976 1992-02-03; 0.010206033 1992-02-04;-0.004638423 1992-02-05; 0.014741345 1992-02-06;-0.000909074 1992-02-07;-0.003663599 1992-02-10;-0.006448558 1992-02-11; 0.000918309 1992-02-12; 0.009193848 1992-02-13; 0 1992-02-14;-0.00550997 1992-02-17; 0.001846371 1992-02-18; 0.007313825 1992-02-19;-0.009160196 1992-02-20; 0.01462006 1992-02-21; 0.008115683 1992-02-24; 0.000893555 1992-02-25; 0 1992-02-26; 0.00360334 1992-02-27; 0.014211793 1992-02-28;-0.00708065 1992-03-02;-0.000884011 1992-03-03; 0.002649691 1992-03-04;-0.002649691 1992-03-05;-0.003580859 1992-03-06;-0.007163168 1992-03-09; 0 1992-03-10;-0.001248591 1992-03-11;-0.010516251 1992-03-12;-0.010056808 1992-03-13; 0.01097976 1992-03-16;-0.004566563 1992-03-17; 0.002738667 1992-03-18; 0.008171285 1992-03-19; 0.001794359 1992-03-20; 0.011308578 1992-03-23; 0.001955323 1992-03-24; 0.016068787 1992-03-25; 0.007839636 1992-03-26; 0.003466644 1992-03-27;-0.006079046 1992-03-30;-0.001733353 1992-03-31; 0.002616928 1992-04-01;-0.003484733 1992-04-02; 0.018174172 1992-04-03;-0.003451654 1992-04-06; 0.008924908 1992-04-07;-0.004621072 1992-04-08;-0.014676834 1992-04-09; 0.004330684 1992-04-10; 0.012048339 1992-04-13;-0.006861883 1992-04-14; 0.003436827 1992-04-15; 0.006856076 1992-04-16; 0.00135854 1992-04-17; 0 1992-04-20; 0 1992-04-21;-0.005640293 1992-04-22; 0.003416265 1992-04-23;-0.003416265 1992-04-24;-0.003427976 1992-04-27;-0.002583175 1992-04-28; 0.001728794 1992-04-29;-0.005177474 1992-04-30;-0.002078519 1992-05-01; 0 1992-05-04;-0.012726148 1992-05-05;-0.000872378 1992-05-06; 0.007860223 1992-05-07; 0.006079046 1992-05-08; 0.014613872 1992-05-11; 0.008498709 1992-05-12;-0.000666024 1992-05-13;-0.027642028 1992-05-14;-0.00927123 1992-05-15;-0.014512926 1992-05-18; 0.031576216 1992-05-19;-0.00259659 1992-05-20; 0.021429138 1992-05-21; 0.004727479 1992-05-22; 0.035958313 1992-05-25; 0.005679447 1992-05-26;-0.005679447 1992-05-27;-0.012292145 1992-05-28; 0 1992-05-29; 0.006732773 1992-06-01; 0.003113001 1992-06-02;-0.000828059 1992-06-03;-0.002437457 1992-06-04;-0.001645253 1992-06-05; 0.001645253 1992-06-08; 0 1992-06-09; 0.000813146 1992-06-10;-0.000813146 1992-06-11;-0.001645253 1992-06-12; 0.00735714 1992-06-15;-0.004086256 1992-06-16; 0.001639885 1992-06-17;-0.00245237 1992-06-18;-0.000813146 1992-06-19; 0.004565369 1992-06-22;-0.003261267 1992-06-23;-0.00213487 1992-06-24;-0.001629633 1992-06-25;-0.003284299 1992-06-26;-0.02080538 1992-06-29; 0.000852404 1992-06-30;-0.009276229 1992-07-01;-0.012805855 1992-07-02; 0.005990589 1992-07-03; 0.01187458 1992-07-06;-0.004217237 1992-07-07;-0.004252708 1992-07-08;-0.015421915 1992-07-09; 0.004995104 1992-07-10;-0.002405239 1992-07-13;-0.016492735 1992-07-14;-0.00350613 1992-07-15; 0.00087314 1992-07-16; 0.01653586 1992-07-17;-0.019175801 1992-07-20;-0.043177266 1992-07-21; 0 1992-07-22;-0.010158975 1992-07-23;-0.005592101 1992-07-24;-0.01789124 1992-07-27; 0.004733156 1992-07-28;-0.002825415 1992-07-29; 0.024359967 1992-07-30; 0.005545583 1992-07-31; 0.01823506 1992-08-03; 0.006848639 1992-08-04; 0.006635798 1992-08-05; 0.006224927 1992-08-06;-0.009796855 1992-08-07;-0.001800047 1992-08-10;-0.026347522 1992-08-11;-0.002768948 1992-08-12;-0.009839043 1992-08-13;-0.007871461 1992-08-14;-0.002806801 1992-08-17; 0.004693062 1992-08-18;-0.009427863 1992-08-19;-0.009517595 1992-08-20;-0.001902535 1992-08-21;-0.007306787 1992-08-24;-0.008145949 1992-08-25;-0.029605139 1992-08-26;-0.012108707 1992-08-27; 0.02503579 1992-08-28;-0.003961377 1992-08-31; 0.010861335 1992-09-01;-0.01982704 1992-09-02;-0.007038616 1992-09-03; 0.015407731 1992-09-04; 0.007523842 1992-09-07; 0 1992-09-08; 0.011776308 1992-09-09;-0.009797139 1992-09-10; 0.004900426 1992-09-11; 0.010713199 1992-09-14; 0.055598597 1992-09-15; 0.006395602 1992-09-16;-0.003646915 1992-09-17;-0.004572673 1992-09-18; 0.012773689 1992-09-21;-0.026657083 1992-09-22;-0.021636584 1992-09-23;-0.022135244 1992-09-24;-0.05806183 1992-09-25;-0.003100579 1992-09-28;-0.036865106 1992-09-29; 0.008540631 1992-09-30;-0.00963004 1992-10-01; 0.011742857 1992-10-02; 0.008472308 1992-10-05;-0.04743187 1992-10-06; 0.015334314 1992-10-07;-0.017531162 1992-10-08; 0.012091275 1992-10-09;-0.013214445 1992-10-12;-0.004436228 1992-10-13; 0.020927179 1992-10-14;-0.00765437 1992-10-15;-0.003301723 1992-10-16; 0.00985006 1992-10-19; 0.016241215 1992-10-20; 0.035407724 1992-10-21;-0.007491801 1992-10-22;-0.000410655 1992-10-23; 0.012460417 1992-10-26; 0.014329565 1992-10-27;-0.001031807 1992-10-28;-0.020540285 1992-10-29;-0.003123152 1992-10-30; 0.010365678 1992-11-02;-0.024005906 1992-11-03; 0.009446353 1992-11-04;-0.008812355 1992-11-05; 0.004622572 1992-11-06; 0.005250723 1992-11-09; 0.018630817 1992-11-10; 0.013251096 1992-11-11;-0.002035314 1992-11-12; 0.017097281 1992-11-13; 0.006954761 1992-11-16;-0.005964151 1992-11-17; 0.005964151 1992-11-18; 0 1992-11-19; 0.00592879 1992-11-20;-0.010882704 1992-11-23;-0.012837573 1992-11-24;-0.012370339 1992-11-25; 0.002047775 1992-11-26;-0.00306266 1992-11-27;-0.002032865 1992-11-30; 0.017232385 1992-12-01; 0.002018962 1992-12-02;-0.014155822 1992-12-03;-0.008173855 1992-12-04;-0.012408965 1992-12-07;-0.004163572 1992-12-08;-0.00628892 1992-12-09;-0.005256569 1992-12-10;-0.001050259 1992-12-11;-0.014909519 1992-12-14;-0.002157738 1992-12-15; 0.010698369 1992-12-16;-0.01176784 1992-12-17; 0.003227209 1992-12-18; 0 1992-12-21; 0.013836241 1992-12-22; 0.008445498 1992-12-23;-0.001065391 1992-12-24; 0 1992-12-25; 0 1992-12-28; 0.018749337 1992-12-29; 0.007783795 1992-12-30;-0.00163255 1992-12-31; 0 1993-01-01; 0 1993-01-04;-0.012362047 1993-01-05; 0.016449001 1993-01-06; 0.006109784 1993-01-07;-0.012235864 1993-01-08;-0.005158826 1993-01-11; 0.007197953 1993-01-12;-0.005126962 1993-01-13;-0.013484701 1993-01-14; 0.00312969 1993-01-15; 0.017538126 1993-01-18; 0.020249293 1993-01-19; 0.02082339 1993-01-20; 0.003914773 1993-01-21; 0.003899507 1993-01-22; 0.00639211 1993-01-25;-0.030041206 1993-01-26;-0.00902243 1993-01-27;-0.006039536 1993-01-28; 0.008058499 1993-01-29; 0.002014894 1993-02-01; 0.011553667 1993-02-02;-0.011553667 1993-02-03; 0.003996982 1993-02-04; 0.006961636 1993-02-05; 0.010839827 1993-02-08;-0.000406157 1993-02-09;-0.008465206 1993-02-10; 0.009845468 1993-02-11; 0.007799122 1993-02-12;-0.002902409 1993-02-15; 0 1993-02-16;-0.002931101 1993-02-17;-0.006866038 1993-02-18; 0.009797139 1993-02-19;-0.000989549 1993-02-22;-0.018104839 1993-02-23;-0.008574876 1993-02-24;-0.026409171 1993-02-25; 0.007175795 1993-02-26; 0.010563404 1993-03-01; 0.016442139 1993-03-02;-0.010785626 1993-03-03;-0.008087565 1993-03-04;-0.003026102 1993-03-05;-0.020540366 1993-03-08;-0.002086045 1993-03-09; 0.020582821 1993-03-10;-0.006134729 1993-03-11; 0.002056153 1993-03-12; 0.002030801 1993-03-15;-0.003259745 1993-03-16;-0.002866335 1993-03-17;-0.018671673 1993-03-18; 0 1993-03-19;-0.008397195 1993-03-22;-0.013172118 1993-03-23;-0.012473433 1993-03-24; 0.012916048 1993-03-25; 0.007450712 1993-03-26; 0.003179374 1993-03-29; 0.005262078 1993-03-30; 0.003152691 1993-03-31;-0.003152691 1993-04-01;-0.001045843 1993-04-02; 0.001045843 1993-04-05;-0.003162661 1993-04-06; 0.029107995 1993-04-07;-0.022792643 1993-04-08; 0.01559469 1993-04-09; 0 1993-04-12; 0 1993-04-13;-0.001026409 1993-04-14; 0.001026409 1993-04-15;-0.005164094 1993-04-16; 0 1993-04-19; 0.006210801 1993-04-20;-0.006834008 1993-04-21;-0.008765925 1993-04-22; 0.005234255 1993-04-23;-0.005863343 1993-04-26;-0.015196033 1993-04-27;-0.002779863 1993-04-28;-0.01008091 1993-04-29;-0.006470486 1993-04-30; 0.006470486 1993-05-03; 0.012860773 1993-05-04; 0.001056966 1993-05-05;-0.002115051 1993-05-06; 0.007426973 1993-05-07;-0.001073279 1993-05-10; 0.003806029 1993-05-11;-0.000633333 1993-05-12;-0.000633734 1993-05-13; 0.002750553 1993-05-14;-0.039735321 1993-05-17;-0.008130959 1993-05-18;-0.000228713 1993-05-19;-0.009307096 1993-05-20; 0 1993-05-21;-0.002242024 1993-05-24;-0.004475941 1993-05-25; 0.010037087 1993-05-26; 0.001126916 1993-05-27; 0.004426359 1993-05-28; 0.002194437 1993-05-31; 0 1993-06-01;-0.005518108 1993-06-02; 0.002224644 1993-06-03; 0.005938667 1993-06-04; 0.002206577 1993-06-07; 0.019130509 1993-06-08;-0.00216472 1993-06-09; 0.001071788 1993-06-10; 0 1993-06-11; 0.019229662 1993-06-14; 0.021955587 1993-06-15;-0.008322718 1993-06-16; 0.003126451 1993-06-17; 0.015487295 1993-06-18; 0.001016949 1993-06-21; 0.012186161 1993-06-22; 0.013051706 1993-06-23; 0.007938508 1993-06-24; 0.005922978 1993-06-25; 0.003334082 1993-06-28; 0.014787328 1993-06-29;-0.006399797 1993-06-30;-0.00583351 1993-07-01; 0.001355439 1993-07-02;-0.002347894 1993-07-05;-0.005873583 1993-07-06; 0.002544712 1993-07-07; 0.022715001 1993-07-08; 0.068605893 1993-07-09; 0.001798445 1993-07-12; 0.003568758 1993-07-13;-0.007150297 1993-07-14;-0.002699258 1993-07-15;-0.001809786 1993-07-16; 0.006292139 1993-07-19; 0.031761456 1993-07-20; 0.000862534 1993-07-21;-0.009583441 1993-07-22; 0 1993-07-23; 0.002626076 1993-07-26; 0.010417979 1993-07-27;-0.028928575 1993-07-28;-0.016159641 1993-07-29; 0 1993-07-30;-0.01732013 1993-08-02; 0.000914094 1993-08-03; 0.01097976 1993-08-04; 0.004527062 1993-08-05;-0.010910947 1993-08-06; 0.008189652 1993-08-09;-0.001805768 1993-08-10; 0.003627039 1993-08-11; 0.001799236 1993-08-12; 0.016159641 1993-08-13; 0.00176724 1993-08-16; 0.005319649 1993-08-17;-0.001776183 1993-08-18; 0.007067683 1993-08-19; 0.008733363 1993-08-20;-0.009625481 1993-08-23;-0.017733405 1993-08-24; 0.008014373 1993-08-25; 0.005319649 1993-08-26;-0.019620427 1993-08-27; 0.002683065 1993-08-30; 0.014281074 1993-08-31; 0.013193332 1993-09-01;-0.011415587 1993-09-02;-0.004441108 1993-09-03; 0.003543466 1993-09-06;-0.012466736 1993-09-07;-0.01262412 1993-09-08; 0.010841025 1993-09-09; 0.003581539 1993-09-10;-0.010802057 1993-09-13; 0.000917114 1993-09-14;-0.00037423 1993-09-15;-0.012353043 1993-09-16;-0.001839613 1993-09-17; 0.009314872 1993-09-20; 0.004709334 1993-09-21; 0.007738028 1993-09-22;-0.01173297 1993-09-23; 0.01262412 1993-09-24;-0.015899478 1993-09-27; 0.014116384 1993-09-28; 0.002691992 1993-09-29;-0.000908897 1993-09-30; 0.006252795 1993-10-01; 0.003552925 1993-10-04; 0.004437199 1993-10-05; 0.037276749 1993-10-06; 0.009315612 1993-10-07; 0.010077052 1993-10-08;-0.002509759 1993-10-11;-0.002516074 1993-10-12;-0.011814395 1993-10-13; 0 1993-10-14; 0.003387305 1993-10-15; 0.005068257 1993-10-18; 0.011715499 1993-10-19; 0.019772222 1993-10-20; 0.018576696 1993-10-21;-0.010450879 1993-10-22; 0.016039703 1993-10-25; 0.004770374 1993-10-26;-0.010359197 1993-10-27;-0.008843646 1993-10-28; 0 1993-10-29; 0.015240098 1993-11-01;-0.000807628 1993-11-02; 0.014227134 1993-11-03;-0.001561789 1993-11-04;-0.015059093 1993-11-05;-0.020151437 1993-11-08;-0.000320483 1993-11-09; 0.009235847 1993-11-10; 0.005633818 1993-11-11;-0.004815111 1993-11-12;-0.002424649 1993-11-15; 0.017623795 1993-11-16; 0.002382342 1993-11-17; 0 1993-11-18; 0.011032344 1993-11-19; 0.004695757 1993-11-22;-0.026883515 1993-11-23;-0.017780478 1993-11-24; 0.003254887 1993-11-25; 0.007280812 1993-11-26;-0.007280812 1993-11-29;-0.00031996 1993-11-30;-0.007845697 1993-12-01; 0.012215232 1993-12-02; 0.0184592 1993-12-03; 0.004762774 1993-12-06; 0.004723891 1993-12-07; 0.014071398 1993-12-08; 0.019994299 1993-12-09; 0.00379119 1993-12-10; 0.005293006 1993-12-13; 0.011259719 1993-12-14; 0.00223681 1993-12-15;-0.007470397 1993-12-16; 0.022974346 1993-12-17; 0.00072799 1993-12-20; 0.013806822 1993-12-21;-0.005066945 1993-12-22; 0.005799376 1993-12-23; 0.011469276 1993-12-24; 0 1993-12-27; 0.021178345 1993-12-28; 0.001387404 1993-12-29;-0.016880066 1993-12-30; 0.023831384 1993-12-31; 0 1994-01-03; 0.006903331 1994-01-04;-0.004139138 1994-01-05;-0.003452849 1994-01-06; 0.00690807 1994-01-07;-0.01246332 1994-01-10; 0.009708675 1994-01-11; 0.000685802 1994-01-12; 0 1994-01-13;-0.023731495 1994-01-14;-0.019972007 1994-01-17; 0.002875556 1994-01-18;-0.008651594 1994-01-19; 0.013667707 1994-01-20;-0.006445407 1994-01-21;-0.024768601 1994-01-24;-0.009637593 1994-01-25; 0.024283317 1994-01-26;-0.004374262 1994-01-27; 0.001465246 1994-01-28;-0.004387034 1994-01-31; 0.079474594 1994-02-01; 0.066689116 1994-02-02;-0.003161923 1994-02-03;-0.013414319 1994-02-04;-0.014244949 1994-02-07;-0.008520042 1994-02-08; 0.019536773 1994-02-09; 0.002588739 1994-02-10; 0.032902879 1994-02-11;-0.003733734 1994-02-14; 0.020409525 1994-02-15; 0.012777714 1994-02-16; 0.000600834 1994-02-17; 0.037371804 1994-02-18; 0.009836224 1994-02-21;-0.022733053 1994-02-22;-0.01066811 1994-02-23;-0.010783147 1994-02-24;-0.017011193 1994-02-25; 0.006715721 1994-02-28; 0.011492435 1994-03-01; 0.004810779 1994-03-02;-0.012051796 1994-03-03; 0.018023661 1994-03-04; 0.0165291 1994-03-07; 0.023143827 1994-03-08; 0.012503842 1994-03-09;-0.021692414 1994-03-10; 0.003449658 1994-03-11;-0.022108402 1994-03-14; 0.008201541 1994-03-15; 0.015062043 1994-03-16; 0.004583732 1994-03-17;-0.003441772 1994-03-18;-0.010384955 1994-03-21;-0.014020589 1994-03-22;-0.00117019 1994-03-23;-0.011851882 1994-03-24;-0.007780983 1994-03-25;-0.017567205 1994-03-28; 0.024150295 1994-03-29;-0.010796142 1994-03-30;-0.006051399 1994-03-31; 0.005451654 1994-04-01; 0 1994-04-04; 0 1994-04-05; 0.01379024 1994-04-06; 0.014186198 1994-04-07; 0.004680328 1994-04-08;-0.003514261 1994-04-11; 0.010493935 1994-04-12;-0.002899268 1994-04-13;-0.001748431 1994-04-14; 0.001748431 1994-04-15; 0.002899268 1994-04-18; 0.018389544 1994-04-19;-0.014911906 1994-04-20; 0.002307744 1994-04-21;-0.001147228 1994-04-22; 0.003449658 1994-04-25;-0.011565533 1994-04-26; 0.017872979 1994-04-27; 0.006279678 1994-04-28; 0.016894974 1994-04-29; 0.006688063 1994-05-02; 0.016504432 1994-05-03;-0.003283703 1994-05-04; 0.011984157 1994-05-05; 0.001623641 1994-05-06; 0.003228242 1994-05-09;-0.003776625 1994-05-10;-0.001624532 1994-05-11; 0.008096396 1994-05-12; 0 1994-05-13; 0.008549806 1994-05-16; 0.01585277 1994-05-17; 0.003142782 1994-05-18;-0.018455342 1994-05-19;-0.007478573 1994-05-20;-0.014586062 1994-05-23; 0 1994-05-24;-0.019777388 1994-05-25;-0.021314596 1994-05-26;-0.029923051 1994-05-27; 0.008144231 1994-05-30;-0.015185146 1994-05-31;-0.001048231 1994-06-01; 0 1994-06-02; 0 1994-06-03; 0.00365186 1994-06-06;-0.001215806 1994-06-07;-0.0061013 1994-06-08;-0.00122474 1994-06-09;-0.008615438 1994-06-10; 0.001235331 1994-06-13;-0.026267927 1994-06-14;-0.018548661 1994-06-15; 0.010915036 1994-06-16;-0.008980176 1994-06-17; 0.001931124 1994-06-20;-0.040018459 1994-06-21; 0.019881371 1994-06-22; 0.002621233 1994-06-23; 0.011711259 1994-06-24; 0 1994-06-27;-0.007792247 1994-06-28; 0.018088348 1994-06-29; 0.011457796 1994-06-30;-0.012739026 1994-07-01; 0.005115101 1994-07-04; 0.015190165 1994-07-05;-0.005037794 1994-07-06;-0.006968669 1994-07-07; 0.004440223 1994-07-08; 0.011328 1994-07-11; 0.012437971 1994-07-12; 0 1994-07-13; 0.007389196 1994-07-14;-0.002457004 1994-07-15; 0.014046032 1994-07-18; 0.003027553 1994-07-19; 0.00962703 1994-07-20; 0.016627461 1994-07-21;-0.008279172 1994-07-22; 0.03500941 1994-07-25;-0.010374733 1994-07-26; 0.012665685 1994-07-27;-0.004587164 1994-07-28;-0.008078521 1994-07-29; 0.004624286 1994-08-01;-0.006363921 1994-08-02; 0.009818156 1994-08-03; 0.007443493 1994-08-04;-0.008593579 1994-08-05;-0.008087855 1994-08-08; 0.00115942 1994-08-09;-0.003482302 1994-08-10; 0.001742667 1994-08-11; 0.005209853 1994-08-12;-0.01278344 1994-08-15;-0.001170275 1994-08-16;-0.001171646 1994-08-17; 0.001171646 1994-08-18;-0.012371292 1994-08-19;-0.01312668 1994-08-22;-0.018794127 1994-08-23;-0.017284381 1994-08-24; 0.001244555 1994-08-25; 0.012361097 1994-08-26; 0.018259789 1994-08-29; 0.004813487 1994-08-30;-0.001201201 1994-08-31;-0.004215604 1994-09-01;-0.003022063 1994-09-02;-0.00851069 1994-09-05;-0.014760416 1994-09-06; 0.004327673 1994-09-07; 0.005536772 1994-09-08; 0.005506285 1994-09-09; 0.005476132 1994-09-12;-0.017136282 1994-09-13;-0.010549276 1994-09-14;-0.00124844 1994-09-15;-0.001875587 1994-09-16; 0.002500001 1994-09-19;-0.011299555 1994-09-20;-0.015267472 1994-09-21;-0.003853569 1994-09-22;-0.00128783 1994-09-23; 0.009618542 1994-09-26;-0.003195912 1994-09-27;-0.00964948 1994-09-28; 0.001937359 1994-09-29;-0.030126705 1994-09-30; 0.002656044 1994-10-03; 0 1994-10-04;-0.010666768 1994-10-05; 0.002008705 1994-10-06;-0.00873368 1994-10-07; 0.005383593 1994-10-10; 0.030405515 1994-10-11; 0.024438515 1994-10-12; 0.006964257 1994-10-13; 0.00252048 1994-10-14; 0.023018124 1994-10-17;-0.007407441 1994-10-18;-0.018762276 1994-10-19;-0.024282343 1994-10-20; 0.011575692 1994-10-21;-0.025252232 1994-10-24;-0.004600731 1994-10-25;-0.029413885 1994-10-26; 0.022804476 1994-10-27;-0.00798939 1994-10-28; 0.015915455 1994-10-31; 0.019544596 1994-11-01; 0.001289491 1994-11-02;-0.002580647 1994-11-03; 0 1994-11-04; 0.009643276 1994-11-07;-0.018728348 1994-11-08; 0.009730858 1994-11-09; 0.014739133 1994-11-10;-0.003824096 1994-11-11;-0.00512165 1994-11-14;-0.003858526 1994-11-15; 0.016613801 1994-11-16; 0 1994-11-17;-0.0063573 1994-11-18; 0.003819228 1994-11-21;-0.004457187 1994-11-22;-0.010908032 1994-11-23;-0.034124046 1994-11-24; 0.002000668 1994-11-25;-0.002668447 1994-11-28; 0.003334448 1994-11-29;-0.004002674 1994-11-30; 0.009314771 1994-12-01;-0.008646545 1994-12-02; 0.00066778 1994-12-05; 0.017207572 1994-12-06;-0.00790518 1994-12-07;-0.001323627 1994-12-08;-0.008646545 1994-12-09;-0.014127379 1994-12-12;-0.005434796 1994-12-13;-0.005464494 1994-12-14;-0.005494519 1994-12-15; 0.017747906 1994-12-16; 0.012105057 1994-12-19; 0.015915455 1994-12-20; 0.0104713 1994-12-21; 0.001301236 1994-12-22; 0 1994-12-23;-0.000650407 1994-12-26; 0 1994-12-27; 0.005838486 1994-12-28;-0.001942377 1994-12-29;-0.015018239 1994-12-30; 0.013072082 1995-01-02;-0.005208345 1995-01-03;-0.001306336 1995-01-04;-0.011834458 1995-01-05;-0.001323627 1995-01-06;-0.002652521 1995-01-09; 0.013192803 1995-01-10;-0.004597709 1995-01-11; 0.011780241 1995-01-12; 0.00906742 1995-01-13;-0.009718249 1995-01-16; 0.00778214 1995-01-17;-0.001292825 1995-01-18;-0.010403215 1995-01-19; 0.005865119 1995-01-20;-0.0163777 1995-01-23;-0.018667209 1995-01-24;-0.013550343 1995-01-25;-0.006844654 1995-01-26; 0 1995-01-27; 0.006844654 1995-01-30; 0.00544219 1995-01-31;-0.00544219 1995-02-01; 0.012877169 1995-02-02;-0.00472495 1995-02-03; 0.004051322 1995-02-06; 0.014051753 1995-02-07;-0.001329787 1995-02-08;-0.004000005 1995-02-09; 0.030913346 1995-02-10; 0.0064558 1995-02-13;-0.011650617 1995-02-14; 0.010362787 1995-02-15;-0.001289491 1995-02-16;-0.012987196 1995-02-17; 0.002610968 1995-02-20;-0.00522877 1995-02-21; 0 1995-02-22; 0.005880448 1995-02-23; 0.010369503 1995-02-24;-0.005819609 1995-02-27;-0.00781254 1995-02-28;-0.009192448 1995-03-01; 0.011151313 1995-03-02;-0.001305483 1995-03-03;-0.003271184 1995-03-06;-0.018519048 1995-03-07;-0.018868484 1995-03-08;-0.016461277 1995-03-09;-0.032328887 1995-03-10; 0.008534902 1995-03-13;-0.004258346 1995-03-14; 0.009908078 1995-03-15; 0 1995-03-16;-0.015614228 1995-03-17; 0.004282662 1995-03-20;-0.005714301 1995-03-21;-0.007189104 1995-03-22;-0.004338402 1995-03-23;-0.020498522 1995-03-24;-0.001480385 1995-03-27; 0.019076147 1995-03-28;-0.010667157 1995-03-29;-0.001028882 1995-03-30;-0.001471671 1995-03-31; 0.01316771 1995-04-03; 0.009403324 1995-04-04; 0 1995-04-05;-0.006210752 1995-04-06; 0.003326827 1995-04-07; 0.001443002 1995-04-10; 0.005751274 1995-04-11; 0.016353013 1995-04-12; 0.001409444 1995-04-13; 0.007716629 1995-04-14; 0 1995-04-17; 0 1995-04-18;-0.011950933 1995-04-19;-0.014245255 1995-04-20;-0.01154414 1995-04-21; 0.01154414 1995-04-24;-0.018827493 1995-04-25; 0.022407876 1995-04-26; 0.019115626 1995-04-27; 0.002101577 1995-04-28;-0.006318027 1995-05-01; 0 1995-05-02; 0.016898663 1995-05-03; 0.000553787 1995-05-04; 0.011011811 1995-05-05;-0.004115232 1995-05-08; 0.012295237 1995-05-09;-0.003400207 1995-05-10; 0.00475706 1995-05-11; 0.03136727 1995-05-12; 0.011757157 1995-05-15;-0.006514681 1995-05-16; 0.017493157 1995-05-17;-0.022735633 1995-05-18;-0.021920506 1995-05-19;-0.002016807 1995-05-22; 0.014696323 1995-05-23; 0.003970885 1995-05-24; 0.00395518 1995-05-25; 0 1995-05-26;-0.006600684 1995-05-29; 0.01185004 1995-05-30; 0.000654236 1995-05-31;-0.003931853 1995-06-01; 0.025284978 1995-06-02;-0.00064041 1995-06-05; 0 1995-06-06; 0.005111832 1995-06-07;-0.008320048 1995-06-08;-0.018158735 1995-06-09;-0.001309758 1995-06-12; 0.00522877 1995-06-13;-0.002610968 1995-06-14; 0.003913899 1995-06-15; 0 1995-06-16;-0.003913899 1995-06-19; 0.008460838 1995-06-20; 0.000647878 1995-06-21; 0.002587324 1995-06-22; 0.007722046 1995-06-23;-0.002567396 1995-06-26;-0.001286174 1995-06-27; 0.003853569 1995-06-28;-0.015504187 1995-06-29; 0.002600782 1995-06-30;-0.011757157 1995-07-03; 0.010457612 1995-07-04; 0.002597404 1995-07-05;-0.005201572 1995-07-06; 0.009730858 1995-07-07; 0.023605562 1995-07-10; 0.005031457 1995-07-11; 0.024784416 1995-07-12;-0.002450982 1995-07-13; 0.008552282 1995-07-14;-0.019656653 1995-07-17; 0.013555352 1995-07-18;-0.009222322 1995-07-19;-0.003712876 1995-07-20; 0.003095019 1995-07-21; 0.003701423 1995-07-24; 0.001230769 1995-07-25; 0.015258154 1995-07-26; 0.006640531 1995-07-27;-0.001806685 1995-07-28;-0.009082715 1995-07-31;-0.005489492 1995-08-01;-0.020389956 1995-08-02;-0.001874415 1995-08-03; 0.004368182 1995-08-04;-0.018856624 1995-08-07; 0.007585371 1995-08-08; 0 1995-08-09;-0.005050516 1995-08-10; 0.000632711 1995-08-11; 0.010695289 1995-08-14;-0.009431066 1995-08-15; 0.016912398 1995-08-16; 0.014796817 1995-08-17; 0.009744291 1995-08-18;-0.002427186 1995-08-21;-0.004261802 1995-08-22;-0.000610314 1995-08-23; 0.004872117 1995-08-24;-0.002433091 1995-08-25;-0.003660773 1995-08-28;-0.003060915 1995-08-29;-0.001226994 1995-08-30; 0.004287909 1995-08-31;-0.001223242 1995-09-01; 0.007924455 1995-09-04; 0.00060698 1995-09-05; 0 1995-09-06; 0.009060769 1995-09-07;-0.00120337 1995-09-08; 0.001804512 1995-09-11;-0.01087624 1995-09-12; 0.003638573 1995-09-13; 0.004830927 1995-09-14; 0.00240674 1995-09-15; 0.00599163 1995-09-18;-0.002392346 1995-09-19;-0.000598982 1995-09-20;-0.012055601 1995-09-21;-0.014046032 1995-09-22;-0.03123302 1995-09-25;-0.001269841 1995-09-26; 0.007594973 1995-09-27;-0.025544173 1995-09-28; 0.006447476 1995-09-29; 0.006406172 1995-10-02; 0.01646649 1995-10-03; 0 1995-10-04; 0.005012542 1995-10-05;-0.00250313 1995-10-06;-0.021533448 1995-10-09;-0.010943141 1995-10-10;-0.01106422 1995-10-11;-0.005907467 1995-10-12;-0.003297069 1995-10-13; 0.01442648 1995-10-16;-0.006531702 1995-10-17; 0.011726519 1995-10-18;-0.006497749 1995-10-19;-0.006540246 1995-10-20;-0.00526317 1995-10-23;-0.034902872 1995-10-24; 0.013838235 1995-10-25; 0.007784229 1995-10-26;-0.010752792 1995-10-27;-0.011552966 1995-10-30; 0.022973983 1995-10-31; 0.008646545 1995-11-01;-0.002652521 1995-11-02; 0.011881328 1995-11-03;-0.002628122 1995-11-06;-0.002635048 1995-11-07; 0.001318392 1995-11-08; 0.013089192 1995-11-09; 0.012920076 1995-11-10;-0.007731997 1995-11-13; 0 1995-11-14; 0.014767524 1995-11-15;-0.008962928 1995-11-16; 0.005771096 1995-11-17; 0.00255428 1995-11-20; 0.010783485 1995-11-21;-0.008235713 1995-11-22;-0.00446287 1995-11-23;-0.013509372 1995-11-24;-0.011071425 1995-11-27; 0.021380795 1995-11-28; 0.003838776 1995-11-29;-0.001917546 1995-11-30;-0.003204104 1995-12-01; 0.006397974 1995-12-04;-0.005115101 1995-12-05;-0.022035888 1995-12-06;-0.008555498 1995-12-07;-0.000661157 1995-12-08;-0.011307071 1995-12-11; 0.003338901 1995-12-12; 0.010610179 1995-12-13;-0.007282389 1995-12-14; 0.011232361 1995-12-15;-0.005270104 1995-12-18;-0.008623602 1995-12-19;-0.012739026 1995-12-20; 0.001348618 1995-12-21;-0.000674082 1995-12-22; 0.007390024 1995-12-25; 0 1995-12-26; 0 1995-12-27;-0.006715942 1995-12-28;-0.003374961 1995-12-29;-0.006103783 1996-01-01; 0 1996-01-02; 0.010825546 1996-01-03; 0.033093688 1996-01-04; 0.012293911 1996-01-05; 0.003210276 1996-01-08; 0.005115101 1996-01-09; 0.01242252 1996-01-10;-0.001008319 1996-01-11;-0.004423388 1996-01-12; 0.008199352 1996-01-15; 0.001255493 1996-01-16; 0.017413375 1996-01-17;-0.004944386 1996-01-18;-0.001239926 1996-01-19;-0.00062054 1996-01-22;-0.006851475 1996-01-23; 0.00623055 1996-01-24; 0.02756683 1996-01-25; 0.001811048 1996-01-26;-0.001207001 1996-01-29; 0.013793322 1996-01-30; 0.000595415 1996-01-31; 0.007117468 1996-02-01;-0.013087635 1996-02-02;-0.007452853 1996-02-05;-0.011284473 1996-02-06; 0.000609942 1996-02-07; 0.001218769 1996-02-08;-0.007334996 1996-02-09;-0.009864445 1996-02-12; 0.004944386 1996-02-13; 0.012255055 1996-02-14;-0.002805393 1996-02-15; 0.002805393 1996-02-16;-0.003660773 1996-02-19;-0.009210995 1996-02-20;-0.009296627 1996-02-21; 0 1996-02-22; 0.006207345 1996-02-23; 0.015351852 1996-02-26;-0.007953545 1996-02-27; 0.003066546 1996-02-28; 0.006713483 1996-02-29; 0.004854378 1996-03-01; 0.010836951 1996-03-04;-0.010231808 1996-03-05;-0.002422775 1996-03-06;-0.011589029 1996-03-07; 0.003674223 1996-03-08;-0.008594282 1996-03-11;-0.019297206 1996-03-12; 0.016209831 1996-03-13; 0.001236094 1996-03-14;-0.005574496 1996-03-15; 0.00619197 1996-03-18;-0.001235331 1996-03-19; 0.01106342 1996-03-20;-0.009828089 1996-03-21;-0.002472189 1996-03-22;-0.01370738 1996-03-25;-0.01262643 1996-03-26;-0.00957556 1996-03-27;-0.003212338 1996-03-28; 0.000643294 1996-03-29;-0.007746972 1996-04-01; 0.01543439 1996-04-02; 0.003185731 1996-04-03;-0.003185731 1996-04-04; 0.015199786 1996-04-05; 0 1996-04-08; 0 1996-04-09; 0.00376412 1996-04-10; 0.026569373 1996-04-11;-0.001220256 1996-04-12; 0 1996-04-15; 0.019347641 1996-04-16;-0.010231808 1996-04-17;-0.004243717 1996-04-18; 0.007263954 1996-04-19; 0.011990551 1996-04-22;-0.008378266 1996-04-23; 0.008378266 1996-04-24; 0.001786246 1996-04-25;-0.003575689 1996-04-26; 0.004170396 1996-04-29;-0.014371505 1996-04-30;-0.003020238 1996-05-01; 0 1996-05-02;-0.003029387 1996-05-03;-0.017753757 1996-05-06; 0.004929154 1996-05-07; 0 1996-05-08; 0.00551641 1996-05-09; 0.007308193 1996-05-10;-0.005476132 1996-05-13; 0.011525757 1996-05-14;-0.00241546 1996-05-15;-0.012777783 1996-05-16; 0 1996-05-17; 0.017001017 1996-05-20;-0.003014775 1996-05-21; 0.00361664 1996-05-22; 0.004202948 1996-05-23; 0 1996-05-24;-0.002399521 1996-05-27; 0 1996-05-28; 0.007181359 1996-05-29; 0.00095363 1996-05-30; 0.001428742 1996-05-31;-0.000595061 1996-06-03;-0.00202586 1996-06-04; 0.015623468 1996-06-05; 0.011095004 1996-06-06; 0 1996-06-07; 0.006944472 1996-06-10; 0.005750447 1996-06-11;-0.001147447 1996-06-12; 0.005153175 1996-06-13;-0.005153175 1996-06-14; 0.008573931 1996-06-17;-0.000569314 1996-06-18;-0.001139601 1996-06-19;-0.001140901 1996-06-20;-0.001142205 1996-06-21; 0.002853069 1996-06-24; 0.005681833 1996-06-25;-0.005112195 1996-06-26; 0.002275314 1996-06-27;-0.003414915 1996-06-28; 0.006251796 1996-07-01;-0.001133787 1996-07-02;-0.003978408 1996-07-03;-0.005711038 1996-07-04; 0.007986352 1996-07-05; 0.019133955 1996-07-08;-0.002232144 1996-07-09; 0.001674575 1996-07-10;-0.005592856 1996-07-11;-0.015828482 1996-07-12;-0.020144566 1996-07-15;-0.00583092 1996-07-16;-0.013541567 1996-07-17; 0.002013384 1996-07-18;-0.001420791 1996-07-19; 0.004138345 1996-07-22;-0.004138345 1996-07-23; 0 fExtremes/R/0000755000176200001440000000000013203504345012414 5ustar liggesusersfExtremes/R/GpdSim.R0000644000176200001440000000355612323220004013720 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: GPD SIMULATION: # gpdSim Simulates a GPD distributed process ################################################################################ gpdSim = function(model = list(xi = 0.25, mu = 0, beta = 1), n = 1000, seed = NULL) { # A function implemented by Diethelm Wuertz # Description: # Generates random variates from a GPD distribution # Arguments: # model - a list of model parameters, xi, mu and beta. # n - an integer, the number of simulated random variates # seed - an integer, the random number generator seed # FUNCTION: # Seed: if (is.null(seed)) seed = NA else set.seed(seed) # Simulate: ans = rgpd(n = n, xi = model$xi, mu = model$mu, beta = model$beta) # DW: ans = as.ts(ans) ans = timeSeries(ans, units = "GPD") # Control: attr(ans, "control") = data.frame(t(unlist(model)), seed = seed, row.names = "") # Return Value: ans } ################################################################################ fExtremes/R/MeanExcessFit.R0000644000176200001440000002050312323220004015222 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: MEAN EXCESS FUNCTION FIT: # normMeanExcessFit Fits mean excesses to a normal density # ghMeanExcessFit Fits mean excesses to a generalized hyperbolic density # hypMeanExcessFit Fits mean excesses to a hyperbolic density # nigMeanExcessFit Fits mean excesses to a normal inverse Gaussian density ################################################################################ normMeanExcessFit = function(x, doplot = TRUE, trace = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Fits mean excesses with a normal density # Arguments: # x - an univariate 'timeSeries' object # doplot - alogical flag. Should a mean excess plot be dispalyed? # ... - optional parameters passed to the function mePlot() # FUNCTION: # Settings: x = as.vector(x) U = mePlot(x, doplot = doplot, ...)[, 1] U = U[!is.na(U)] U = seq(min(U), max(U), length = 51) if(trace) print(U) # Fit Parameters: fit = nFit(x, doplot = FALSE, trace = FALSE) param = fit@fit$estimate # Compute Mean Excess Function: func<-function(x, u, param) { (x-u)*dnorm(x, param[1], param[2])} Y = NULL for (u in U) { y1 = integrate(func, lower = u, upper = Inf, u = u, param = param)[[1]] y2 = integrate(dnorm, lower = u, upper = Inf, mean = param[1], sd = param[2])[[1]] Y = c(Y, y1/y2) } # Plot: if (doplot) lines(U, Y, lwd = 2) # Result: result = data.frame(threshold = U, me = Y) attr(result, "control")<-fit # Return Value: invisible(result) } # ------------------------------------------------------------------------------ ghMeanExcessFit = function(x, doplot = TRUE, trace = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Fits mean excesses with a hyperbolic density # Arguments: # x - an univariate 'timeSeries' object # doplot - alogical flag. Should a mean excess plot be dispalyed? # ... - optional parameters passed to the function mePlot() # FUNCTION: # Settings: x = as.vector(x) U = mePlot(x, doplot = doplot, ...)[, 1] U = U[!is.na(U)] U = seq(min(U), max(U), length = 51) if(trace) print(U) # Fit Parameters: fit = ghFit(x, doplot = FALSE, trace = FALSE) param = fit@fit$estimate # Compute Mean Excess Function: func<-function(x, u, param) { (x-u)*dgh(x, param[1], param[2], param[3], param[4], param[5]) } Y = NULL for (u in U) { y1 = integrate(func, lower = u, upper = Inf, u = u, param = param)[[1]] if (trace) print(c(u, y1)) y2 = integrate(dgh, lower = u, upper = Inf, alpha = param[1], beta = param[2], delta = param[3], mu = param[4], lambda = param[5])[[1]] if (trace) print(c(u, y2)) Y = c(Y, y1/y2) } # Plot: if (doplot) lines(U, Y, lwd = 2) # Result: result = data.frame(threshold = U, me = Y) attr(result, "control")<-fit # Return Value: invisible(result) } # ------------------------------------------------------------------------------ hypMeanExcessFit = function(x, doplot = TRUE, trace = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Fits mean excesses with a hyperbolic density # Arguments: # x - an univariate 'timeSeries' object # doplot - alogical flag. Should a mean excess plot be dispalyed? # ... - optional parameters passed to the function mePlot() # FUNCTION: # Settings: x = as.vector(x) U = mePlot(x, doplot = FALSE)[, 1] U = U[!is.na(U)] U = seq(min(U), max(U), length = 51) # Fit Parameters: fit = hypFit(x, doplot = FALSE, trace = FALSE) param = fit@fit$estimate # Compute Mean Excess Function: func<-function(x, u, param) { (x-u)*dhyp(x, param[1], param[2], param[3], param[4])} Y = NULL for (u in U) { y = integrate(func, lower = u, upper = Inf, u = u, param = param)[[1]] Y = c(Y, y) } # Plot: if (doplot) lines(U, Y, lwd = 2) # Result: result = data.frame(threshold = U, me = Y) attr(result, "control")<-fit # Return Value: invisible(result) } # ------------------------------------------------------------------------------ nigMeanExcessFit = function(x, doplot = TRUE, trace = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Fits mean excesses with a genaralized hyperbolic density # Arguments: # x - an univariate 'timeSeries' object # doplot - alogical flag. Should a mean excess plot be dispalyed? # ... - optional parameters passed to the function mePlot() # FUNCTION: # Settings: x = as.vector(x) U = mePlot(x, doplot = doplot, ...)[, 1] U = U[!is.na(U)] U = seq(min(U), max(U), length = 51) if(trace) print(U) # Fit Parameters: fit = nigFit(x, doplot = FALSE, trace = FALSE, scale = FALSE) param = fit@fit$estimate # Compute Mean Excess Function: func<-function(x, u, param) { (x-u)*dnig(x, param[1], param[2], param[3], param[4]) } Y = NULL for (u in U) { y1 = integrate(func, lower = u, upper = Inf, u = u, param = param)[[1]] if (trace) print(c(u, y1)) y2 = integrate(dnig, lower = u, upper = Inf, alpha = param[1], beta = param[2], delta = param[3], mu = param[4])[[1]] if (trace) print(c(u, y2)) Y = c(Y, y1/y2) } # Plot: if (doplot) lines(U, Y, lwd = 2) # Result: result = data.frame(threshold = U, me = Y) attr(result, "control")<-fit # Return Value: invisible(result) } # ------------------------------------------------------------------------------ ghtMeanExcessFit = function(x, doplot = TRUE, trace = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Fits mean excesses with a genaralized hyperbolic density # Arguments: # x - an univariate 'timeSeries' object # doplot - alogical flag. Should a mean excess plot be dispalyed? # ... - optional parameters passed to the function mePlot() # FUNCTION: # Settings: x = as.vector(x) U = mePlot(x, doplot = doplot, ...)[, 1] U = U[!is.na(U)] U = seq(min(U), max(U), length = 51) if(trace) print(U) # Fit Parameters: fit = ghtFit(x, doplot = FALSE, trace = FALSE, scale = FALSE) param = fit@fit$estimate # Compute Mean Excess Function: func<-function(x, u, param) { (x-u) * dght(x, param[1], param[2], param[3], param[4]) } Y = NULL for (u in U) { y1 = integrate(func, lower = u, upper = Inf, u = u, param = param)[[1]] if (trace) print(c(u, y1)) y2 = integrate(dght, lower = u, upper = Inf, beta = param[1], delta = param[2], mu = param[3], nu = param[4])[[1]] if (trace) print(c(u, y2)) Y = c(Y, y1/y2) } # Plot: if (doplot) lines(U, Y, lwd = 2) # Result: result = data.frame(threshold = U, me = Y) attr(result, "control")<-fit # Return Value: invisible(result) } ################################################################################ fExtremes/R/ExtremesData.R0000644000176200001440000005270612323220004015124 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION EXPLORATIVE DATA ANALYSIS: # emdPlot Creates an empirical distribution plot # qqparetoPlot Creates exploratory QQ plot for EV analysis # mePlot Creates a sample mean excess plot # mxfPlot Creates another view of a sample mean excess plot # mrlPlot Returns a mean residual life plot with confidence levels # recordsPlot Plots records development # ssrecordsPlot Plots records development of data subsamples # msratioPlot Plots ratio of maximums and sums # sllnPlot Verifies Kolmogorov's Strong Law of large numbers # lilPlot Verifies Hartman-Wintner's Law of the iterated logarithm # xacfPlot Plots autocorrelations of exceedences ################################################################################ emdPlot = function(x, doplot = TRUE, plottype = c("xy", "x", "y", " "), labels = TRUE, ...) { # A function imported from R-package evir # Description: # Plots empirical distribution function # Arguments: # x - any object which can be transformed by the function # as.vector() into a numeric vector # doplot - a logical flag, should a pot be returned ? # plottype - which axes should be on a log scale: # "x" denotes x-axis only; "y" denotes y-axis only, # "xy" || "yx" both axes, "" denotes neither of the # axis # FUNCTION: # Convert Type: x = as.vector(x) # Settings: plottype = match.arg(plottype) # Convert x to a vector, if the input is a data.frame. if (is.data.frame(x)) x = x[, 1] xs = x = sort(as.numeric(x)) ys = y = 1 - ppoints(x) if (plottype == "x") { xs = x[x > 0] ys = y[x > 0] } if (plottype == "y") { xs = x[y > 0] ys = y[y > 0] } if (plottype == "xy") { xs = x[x > 0 & y > 0] ys = y[x > 0 & y > 0] } # Plot: if (doplot) { if (labels) { xlab = "x" ylab = "1-F(x)" main = "Empirical Distribution" if (plottype == "xy") main = paste("log-log", main) if (plottype == "x") main = paste("log-lin", main) if (plottype == "y") main = paste("lin-log", main) if (plottype == "") main = paste("lin-lin", main) } else { xlab = "" ylab = "" main = "" } if (labels) { plot(xs, ys, pch = 19, col = "steelblue", log = plottype, xlab = xlab, ylab = ylab, main = main, ...) grid() } else { plot(xs, ys, log = plottype, xlab = xlab, ylab = ylab, main = main, ...) } } # Result: result = data.frame(x, y) # Return Value: if (doplot) return(invisible(result)) else return(result) } # ------------------------------------------------------------------------------ qqparetoPlot = function(x, xi = 0, trim = NULL, threshold = NULL, doplot = TRUE, labels = TRUE, ...) { # A function imported from R-package evir # Description: # Creates an exploratory QQ-plot for Extreme Value Analysis. # Arguments: # x - any object which can be transformed by the function # as.vector() into a numeric vector # doplot - a logical flag, should a plot be returned ? # FUNCTION: # Convert Type: x = as.vector(x) # Convert x to a vector, if the input is a data.frame. if(is.data.frame(x)) x = x[, 1] # qPlot: x = as.numeric(x) if (!is.null(threshold)) x = x[x >= threshold] if (!is.null(trim)) x = x[x < trim] if (xi == 0) { y = qexp(ppoints(x)) } if( xi != 0) { y = qgpd(ppoints(x), xi = xi) } # Plot: if (doplot) { if (labels) { xlab = "Ordered Data" ylab = "Quantiles" if (xi == 0) { ylab = paste("Exponential", ylab) } if (xi != 0) { ylab = paste("GPD(xi=", xi, ") ", ylab, sep = "") } main = "Exploratory QQ Plot" } else { xlab = "" ylab = "" main = "" } z = sort(x) plot(z, y, pch = 19, col = "steelblue", xlab = xlab, ylab = ylab, main = main, ...) rug(z, ticksize = 0.01, side = 3) rug(y, ticksize = 0.01, side = 4) abline(lsfit(z, y)) if (labels) { grid() text = paste("xi =", as.character(round(xi, 3))) mtext(text, side = 4, adj = 0, cex = 0.7) } } # Result: result = data.frame(x = sort(x), y) # Return Value: if (doplot) return(invisible(result)) else return(result) } # ------------------------------------------------------------------------------ mxfPlot = function (x, u = quantile(x, 0.05), doplot = TRUE, labels = TRUE, ...) { # A function written by Diethelm Wuertz # Description: # Creates a simple mean excess function plot. # Arguments: # FUNCTION: # Convert Type: x = as.vector(x) # Convert x to a vector, if the input is a data.frame. if(is.data.frame(x)) x = x[, 1] # mxf: tail = length(x[x < u])/length(x) u = rev(sort(x)) n = length(x) u = u[1:floor(tail*n)] n = length(u) e = (cumsum(u)-(1:n)*u)/(1:n) # Plot if (doplot) { if (labels) { xlab = "Threshold: u" ylab = "Mean Excess: e" main = "Mean Excess Function" } else { main = xlab = ylab = "" } plot (u, e, pch = 19, col = "steelblue", xlab = xlab, ylab = ylab, main = main, ...) if (labels) grid() } # Result: result = data.frame(threshold = u, excess = e) # Return Values: if (doplot) return(invisible(result)) else return(result) } # ------------------------------------------------------------------------------ mrlPlot = function(x, ci = 0.95, umin = mean(x), umax = max(x), nint = 100, doplot = TRUE, plottype = c("autoscale", ""), labels = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Create a mean residual life plot with # confidence intervals. # Arguments: # References: # A function originally written by S. Coles # FUNCTION: # Convert Type: x = as.vector(x) # Settings: plottype = plottype[1] # Convert x to a vector, if the input is a data.frame. if (is.data.frame(x)) x = x[,1] sx = xu = xl = rep(NA, nint) u = seq(umin, umax, length = nint) for (i in 1:nint) { x = x[x >= u[i]] sx[i] = mean(x - u[i]) sdev = sqrt(var(x)) n = length(x) xu[i] = sx[i] + (qnorm((1 + ci)/2) * sdev) / sqrt(n) xl[i] = sx[i] - (qnorm((1 + ci)/2) * sdev) / sqrt(n) } # Plot: if (doplot) { if (labels) { xlab = "Threshold: u" ylab = "Mean Excess: e" main = "Mean Residual Live Plot" } else { main = xlab = ylab = "" } if (plottype == "autoscale") { ylim = c(min(xl[!is.na(xl)]), max(xu[!is.na(xu)])) plot(u, sx, type = "o", pch = 19, col = "steelblue", xlab = xlab, ylab = ylab, ylim = ylim, main = main, ...) } else { plot(u[!is.na(xl)], sx[!is.na(xl)], type = "o", pch = 19, col = "steelblue", xlab = xlab, ylab = ylab, main = main, ...) } lines(u[!is.na(xl)], xl[!is.na(xl)], col = "brown") lines(u[!is.na(xu)], xu[!is.na(xu)], col = "brown") if (labels) { grid() text = paste("ci =", as.character(round(ci, 3))) mtext(text, side = 4, adj = 0, cex = 0.7) } } # Result result = data.frame(threshold = u, mrl = sx) # Return Value: if (doplot) return(invisible(result)) else return(result) } # ------------------------------------------------------------------------------ mePlot = function(x, doplot = TRUE, labels = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Create a Mean Excess Plot # Arguments: # x - an univariate time series object or any other object which # can be transformed by the function as.vector() into a numeric # vector. # doplot - a logical flag, should a plot be created? # labels - a logical flag, should the plot be automatically labeld? # If TRUE, then default values to xlab, ylab, main, pch and col # are assigned. # Reference: # A function imported from R-package evir # FUNCTION: # Convert Type: x = as.vector(x) # Settings: omit = 0 # Internal Function: myrank = function(x, na.last = TRUE){ ranks = sort.list(sort.list(x, na.last = na.last)) if (is.na(na.last)) x = x[!is.na(x)] for (i in unique(x[duplicated(x)])) { which = x == i & !is.na(x) ranks[which] = max(ranks[which]) } ranks } # Convert x to a vector, if the input is a data.frame. if(is.data.frame(x)) x = x[, 1] x = as.numeric(x) n = length(x) x = sort(x) n.excess = unique(floor(length(x) - myrank(x))) points = unique(x) nl = length(points) n.excess = n.excess[-nl] points = points[-nl] excess = cumsum(rev(x))[n.excess] - n.excess * points y = excess/n.excess xx = points[1:(nl-omit)] yy = y[1:(nl-omit)] # Plot: if (doplot) { if (labels) { xlab = "Threshold: u" ylab = "Mean Excess: e" main = "Mean Excess Plot" plot(xx, yy, pch = 19, col = "steelblue", xlab = xlab, ylab = ylab, main = main, ...) grid() } else { plot(xx, yy, ...) } } # Results: result = data.frame(threshold = xx, me = yy) # Return Value: if (doplot) return(invisible(result)) else return(result) } # ----------------------------------------------------------------------------- recordsPlot = function(x, ci = 0.95, doplot = TRUE, labels = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Creates a records plot. # Note: # A function imported from R-package evir, # original name in EVIR: records # FUNCTION: # Convert Type: x = as.vector(x) # Settings: conf.level = ci # Convert x to a vector, if the input is a data.frame. if (is.data.frame(x)) x = x[,1] # Records: record = cummax(x) expected = cumsum(1/(1:length(x))) se = sqrt(expected - cumsum(1/((1:length(x))^2))) trial = (1:length(x))[!duplicated(record)] record = unique(record) number = 1:length(record) expected = expected[trial] se = se[trial] # Plot: if (doplot) { if (labels) { xlab = "Trials" ylab = "Records" main = "Plot of Record Development" } else { xlab = "" ylab = "" main = "" } ci = qnorm(0.5 + conf.level/2) upper = expected + ci * se lower = expected - ci * se lower[lower < 1] = 1 yr = range(upper, lower, number) plot(trial, number, log = "x", ylim = yr, pch = 19, col = "steelblue", xlab = xlab, ylab = ylab, main = main, ...) lines(trial, expected) lines(trial, upper, lty = 2, col = "brown") lines(trial, lower, lty = 2, col = "brown") if (labels) { grid() text = paste("ci =", as.character(conf.level)) mtext(text, side = 4, adj = 0, col = "grey", cex = 0.7) } } # Result: result = data.frame(number, record, trial, expected, se) # Return Value: if (doplot) return(invisible(result)) else return(result) } # ------------------------------------------------------------------------------ ssrecordsPlot = function (x, subsamples = 10, doplot = TRUE, plottype = c("lin", "log"), labels = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Creates a plot of records on subsamples. # note: # Changes: # 2003/09/06 - argument list made consistent # FUNCTION: # Convert Type: x = as.vector(x) # Plot type: plottype = match.arg(plottype) # Labels: xlab = ylab = main = "" # Records: save = x cluster = floor(length(save)/subsamples) records = c() for (i in 1:subsamples) { x = save[((i-1)*cluster+1):(i*cluster)] y = 1:length(x) u = x[1] v = x.records = 1 while (!is.na(v)) { u = x[x > u][1] v = y[x > u][1] if(!is.na(v)) x.records = c(x.records, v) } if (i == 1) { nc = 1:length(x) csmean = cumsum(1/nc) cssd = sqrt(cumsum(1/nc-1/(nc*nc))) ymax = csmean[length(x)] + 2*cssd[length(x)] # Plot: if (doplot) { if (plottype == "log") { nc = log(nc) } if (labels) { if (plottype == "lin") xlab = "n" if (plottype == "log") xlab = "log(n)" ylab = "N(n)" main = "Subsample Records Plot" } plot (nc, csmean+cssd, type = "l", ylim = c(0, ymax), lty = 2, col = "brown", xlab = xlab, ylab = ylab, main = main, ...) lines(nc, csmean) lines(nc, csmean-cssd, lty = 2, col = "brown") if (labels) { grid() text = paste("subsamples =", as.character(subsamples)) mtext(text, side = 4, adj = 0, col = "grey", cex = 0.7) } } } y.records = 1:length(x.records) x.records = x.records[y.records < ymax] if (doplot) { if (plottype == "log") { x.records = log(x.records) } points(x.records, y.records[y.records u] Distances = diff((1:length(x))[x > u]) # Plot: if (doplot) { if (which == "all" | which == "1") plot (Heights, type = "h", xlab = xlab[1], ylab = ylab[1], main = main[1], ...) if (which == "all" | which == "2") plot (Distances, type = "h", xlab = xlab[1], ylab = ylab[2], main = main[2], ...) } # Correlations: if (which == "all" | which == "3") Heights = as.vector(acf(Heights, lag.max=lag.max, plot = doplot, xlab = xlab[2], ylab = ylab[3], main = main[3], ...)$acf) if (which == "all" | which == "4") Distances = as.vector(acf(Distances, lag.max=lag.max, plot = doplot, xlab = xlab[2], ylab = ylab[3], main = main[4], ...)$acf) # Result: if (which == "all") { lag = as.vector(0:(lag.max)) result = data.frame(lag, Heights, Distances) } else { result = NULL } # Return Value: if (doplot) return(invisible(result)) else return(result) } ################################################################################ fExtremes/R/GevRisk.R0000644000176200001440000001332012323220004014075 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: ADDITIONAL FUNCTIONS: # gevrlevelPlot Calculates Return Levels Based on GEV Fit # .gevrlevelLLH Computes log-likelihood function for gevrlevelPlot ################################################################################ gevrlevelPlot = function(object, kBlocks = 20, ci = c(0.90, 0.95, 0.99), plottype = c("plot", "add"), labels = TRUE,...) { # A function implemented by Diethelm Wuertz # Description: # Calculates Return Levels Based on GEV Fit # Arguments: # object - an object of class "fGEVFIT" as returned by the # function gevFit(). # kBlocks - specifies the particular return level to be # estimated; default set arbitrarily to 20 # Note: # Partial copy from R package evir # Examples: # ans = gevFit(gevSim(), type = "mle", gumbel = FALSE) # ans = gevrlevelPlot(ans); ans@fit$rlevel # ans = gevFit(.gumbelSim(), type = "mle", gumbel = TRUE) # ans = gevrlevelPlot(ans); ans@fit$rlevel # # BMW annual (12 month) Return Level: # ans = gevFit(as.timeSeries(data(bmwRet)), "m"); gevrlevelPlot(ans, 12) # FUNCTION: # Check: stopifnot(object@method[1] == "gev") stopifnot(object@method[2] == "mle") stopifnot(kBlocks > 1) stopifnot(max(ci) < 1) stopifnot(min(ci) > 0) # Settings: out = object@fit conf = ci[1] plottype = plottype[1] # Data: par.ests = out$par.ests mu = par.ests["mu"] beta = par.ests["beta"] xi = par.ests["xi"] pp = 1/kBlocks v = qgev((1 - pp), xi, mu, beta) if (plottype[1] == "add") abline(h = v) data = out$data overallmax = out$llh # DW: out$nllh.final beta0 = sqrt(6 * var(data))/pi xi0 = 0.01 theta = c(xi0, beta0) # Return Levels: parmax = NULL rl = v * c(0.5, 0.6, 0.7, 0.8, 0.85, 0.9, 0.95, 1, 1.1, 1.2, 1.25, 1.5, 1.75, 2, 2.25, 2.5, 2.75, 3, 3.25, 3.5, 4.5) for (i in 1:length(rl)) { fit = optim(theta, .gevrlevelLLH, tmp = data, pp = pp, rli = rl[i]) parmax = rbind(parmax, fit$value) } parmax = -parmax overallmax = -overallmax crit = overallmax - qchisq(0.9999, 1)/2 cond = parmax > crit rl = rl[cond] parmax = parmax[cond] smth = spline(rl, parmax, n = 200) aalpha = qchisq(conf[1], 1) # Labels: if (labels) { main = paste(kBlocks, "Blocks Return Level") xlab = "rl" ylab = "parmax" } else { main = xlab = ylab = "" } # Plot ? if (plottype[1] == "plot") { plot(rl, parmax, type = "p", pch = 19, col = "steelblue", main = main, xlab = xlab, ylab = ylab, ...) h = overallmax - aalpha/2 abline(h = h, lty = 3, col = "brown") abline(v = v, lty = 3, col = "brown") lines(smth, ...) if (labels) { ciText = paste(as.character(100*conf[1]), "%", sep = "") span = 0.025*abs(max(parmax)-min(parmax)) text(max(rl), h+span, ciText) } if (length(ci) > 1) { for ( i in 2:length(ci) ) { gevrlevelPlot(object = object, kBlocks = kBlocks, ci = ci[i], plottype = c("nextconf"), labels = labels, ...) } } } # Internally used to add furter confidence level lines ... if (plottype[1] == "nextconf") { h = overallmax - aalpha/2 abline(h = h, lty = 3, col = "brown") abline(v = v, lty = 3, col = "brown") lines(smth, ...) if (labels) { ciText = paste(as.character(100*conf[1]), "%", sep = "") span = 0.025*abs(max(parmax)-min(parmax)) text(max(rl), h+span, ciText) } } # Or Add ? ind = smth$y > overallmax - aalpha/2 ci = range(smth$x[ind]) if (plottype[1] == "add") { abline(v = ci[1], lty = 2, col = "orange") abline(v = ci[2], lty = 2, col = "orange") } # Result: ans = as.numeric(c(ci[1], v, ci[2])) ans = data.frame(cbind(min = ans[1], v = ans[2], max = ans[3], kBlocks = kBlocks), row.names = "GEV Return Level") # Return Value: ans } # ------------------------------------------------------------------------------ .gevrlevelLLH = function(theta, tmp, pp, rli) { # A copy from evir # Description: # Computes log-likelihood function for gevrlevelPlot # Arguments: # FUNCTION: # LLH: mu = rli + (theta[2]*(1-(-log(1-pp))^(-theta[1])))/theta[1] y = 1 + (theta[1]*(tmp-mu))/theta[2] if ((theta[2] < 0) | (min(y) < 0)) { ans = NA } else { term1 = length(tmp) * log(theta[2]) term2 = sum((1 + 1/theta[1]) * log(y)) term3 = sum(y^(-1/theta[1])) ans = term1 + term2 + term3 } # Return Value: ans } ################################################################################ fExtremes/R/GpdShow.R0000644000176200001440000000360112323220004014077 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # METHODS: PRINT, PLOT, AND SUMMARY: # show.fGPDFIT S4 Print Method for object of class "fGPDFIT" ################################################################################ setMethod("show", "fGPDFIT", function(object) { # A function implemented by Diethelm Wuertz # Description: # Print Method for an object of class 'gpdFit' # Arguments: # object - an object of class fGPDFIT # FUNCTION: # Title: cat("\nTitle:\n ", object@title, "\n") # Function Call: cat("\nCall:\n ") cat(paste(deparse(object@call), sep = "\n", collapse = "\n"), "\n", sep = "") # Estimation Type: cat("\nEstimation Method:\n ", object@method, "\n") # Estimated Parameters: cat("\nEstimated Parameters:\n") print(object@fit$par.ests) # Desription: cat("\nDescription\n ", object@description, "\n\n") # Return Value: invisible(object) }) # ------------------------------------------------------------------------------ ################################################################################ fExtremes/R/GpdFit.R0000644000176200001440000002323712323220004013710 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: GPD SIMULATION: # gpdSim Simulates a GPD distributed process # FUNCTION: GPD PARAMETER ESTIMATION: # 'fGPDFIT' S4 class representation # gpdFit Fits Parameters of GPD distribution # .gpdpwmFit Fits GPD with probability weighted moments # .gpdmleFit Fits GPD with max log-likelihood approach # .gpdLLH Computes GPD log-likelihood function ################################################################################ gpdSim <- function(model = list(xi = 0.25, mu = 0, beta = 1), n = 1000, seed = NULL) { # A function implemented by Diethelm Wuertz # Description: # Generates random variates from a GPD distribution # FUNCTION: # Seed: if (is.null(seed)) seed = NA else set.seed(seed) # Simulate: ans = rgpd(n = n, xi = model$xi, mu = model$mu, beta = model$beta) ans = as.ts(ans) # Control: attr(ans, "control") = data.frame(t(unlist(model)), seed = seed, row.names = "") # Return Value: ans } ################################################################################ setClass("fGPDFIT", representation( call = "call", method = "character", parameter = "list", data = "list", fit = "list", residuals = "numeric", title = "character", description = "character" ) ) # ------------------------------------------------------------------------------ gpdFit <- function(x, u = quantile(x, 0.95), type = c("mle", "pwm"), information = c("observed", "expected"), title = NULL, description = NULL, ...) { # A function implemented by Diethelm Wuertz # Description: # Fits a generalized Pareto model to excesses # Arguments: # Details: # Returns an object of class "fGPDFIT" representing the fit of a # generalized Pareto model to excesses over a high threshold # Notes: # This is a wrapper to EVIR's 'gpd' function. # FUNCTION: # Settings: call = match.call() type = match.arg(type) information = match.arg(information) # Check Type and Convert: X = x xClass = class(x) if (xClass == "timeSeries") stopifnot(isUnivariate(x)) x = as.vector(x) N = length(x) # Compute Exceedances: exceedances = x[x > u] Names = as.character((1:N)[x > u]) exceedances = as.vector(exceedances) names(exceedances) = Names # Estimate Parameters: if (type == "mle") { fit = .gpdmleFit(x, u, information) fit$llh = fit$fit$value fit$convergence = fit$fit$convergence } else if (type == "pwm") { fit = .gpdpwmFit(x, u) fit$llh = NA fit$convergence = NA } fit$p.less.thresh = fit$prob = 1 - length(x[x > u]) / length(x) fit$threshold = u fit$data = x # Compute Residuals: xi = fit$par.ests["xi"] beta = fit$par.ests["beta"] residuals = log(1 + (xi * (as.vector(exceedances)-u))/beta)/xi # Add title and description: if (is.null(title)) title = "GPD Parameter Estimation" if (is.null(description)) description = description() # Compose Parameter List: parameter = list(u = u, type = type) if (information == "mle") parameter$information = information # Return Value: new("fGPDFIT", call = call, method = c("gpd", type), parameter = parameter, data = list(x = X, exceedances = exceedances), fit = fit, residuals = residuals, title = title, description = description) } # ------------------------------------------------------------------------------ .gpdmleFit <- function (x, u, information = c("observed", "expected"), ...) { # A Copy from Evir data = x threshold = u exceedances <- data[data > threshold] excess <- exceedances - threshold Nu <- length(excess) xbar <- mean(excess) s2 <- var(excess) xi0 <- -0.5 * (((xbar * xbar)/s2) - 1) beta0 <- 0.5 * xbar * (((xbar * xbar)/s2) + 1) theta <- c(xi0, beta0) negloglik <- function(theta, tmp) { xi <- theta[1] beta <- theta[2] cond1 <- beta <= 0 cond2 <- (xi <= 0) && (max(tmp) > (-beta/xi)) if (cond1 || cond2) { f <- 1e+06 } else { y <- logb(1 + (xi * tmp)/beta) y <- y/xi f <- length(tmp) * logb(beta) + (1 + xi) * sum(y) } f } fit <- optim(theta, negloglik, hessian = TRUE, ..., tmp = excess) names(fit$par) = c("xi", "beta") if (fit$convergence) warning("Optimization may not have been succeeded.") par.ests <- fit$par converged <- fit$convergence nllh.final <- fit$value information <- match.arg(information) if (information == "observed") varcov <- solve(fit$hessian) if (information == "expected") { one <- (1 + par.ests[1])^2/Nu two <- (2 * (1 + par.ests[1]) * par.ests[2]^2)/Nu cov <- -((1 + par.ests[1]) * par.ests[2])/Nu varcov <- matrix(c(one, cov, cov, two), 2) } par.ses <- sqrt(diag(varcov)) names(par.ses) = c("xi", "beta") list(par.ests = par.ests, par.ses = par.ses, fit = fit, varcov = varcov) } # ------------------------------------------------------------------------------ .gpdmleFitCheck = function(x, u = quantile(x, 0.95), information = c("observed", "expected"), ...) { # A function implemented by Diethelm Wuertz # Description: # Fits GPD with max log-likelihood approach # FUNCTION: x = as.vector(x) excess = x[x > u] - u theta = .gpdpwmFit(x = x, u = u)$par.ests # Parameter Estimation: fit = optim(theta, .gpdLLH, hessian = TRUE, excess = excess) names(fit$par.ests) = c("xi", "beta") # Error Estimates: if (information[1] == "observed") { varcov = solve(fit$hessian) } if (information[1] == "expected") { Nu = length(excess) one = (1 + fit$par[1])^2/Nu two = (2 * (1 + fit$par[1]) * fit$par[2]^2)/Nu cov = -((1 + fit$par[1]) * fit$par[2])/Nu varcov = matrix(c(one, cov, cov, two), 2) } par.ses = sqrt(diag(varcov)) names(par.ses) = c("xi", "beta") # Return Value: list(par.ests = fit$par, par.ses = par.ses, fit = fit, varcov = varcov) } # ------------------------------------------------------------------------------ .gpdpwmFit <- function (x, u) { # A Copy from Evir data = x threshold = u data <- as.numeric(data) n <- length(data) exceedances <- data[data > threshold] excess <- exceedances - threshold Nu <- length(excess) xbar <- mean(excess) a0 <- xbar gamma <- -0.35 delta <- 0 pvec <- ((1:Nu) + gamma)/(Nu + delta) a1 <- mean(sort(excess) * (1 - pvec)) xi <- 2 - a0/(a0 - 2 * a1) beta <- (2 * a0 * a1)/(a0 - 2 * a1) par.ests <- c(xi, beta) names(par.ests) = c("xi", "beta") denom <- Nu * (1 - 2 * xi) * (3 - 2 * xi) if (xi > 0.5) { denom <- NA warning("Asymptotic Standard Errors not available for PWM when xi>0.5.") } one <- (1 - xi) * (1 - xi + 2 * xi^2) * (2 - xi)^2 two <- (7 - 18 * xi + 11 * xi^2 - 2 * xi^3) * beta^2 cov <- beta * (2 - xi) * (2 - 6 * xi + 7 * xi^2 - 2 * xi^3) varcov <- matrix(c(one, cov, cov, two), 2)/denom information <- "expected" converged <- NA nllh.final <- NA par.ses <- sqrt(diag(varcov)) names(par.ses) = c("xi", "beta") list(par.ests = par.ests, par.ses = par.ses, fit = NA, varcov = NA) } # ------------------------------------------------------------------------------ .gpdpwmFitCheck <- function(x, u = quantile(x, 0.95)) { # A function implemented by Diethelm Wuertz # Description: # Fits GPD with probability weighted moments # FUNCTION: # PWM Fit: x = as.vector(x) excess = x[x > u] - u Nu = length(excess) a0 = mean(excess) pvec = ((1:Nu) - 0.35)/Nu a1 = mean(sort(excess) * (1 - pvec)) xi = 2 - a0/(a0 - 2 * a1) beta = (2 * a0 * a1)/(a0 - 2 * a1) par.ests = c(xi = xi, beta = beta) names(par.ests) = c("xi", "beta") par.ses = c(xi = NA, beta = NA) names(par.ses) = c("xi", "beta") # Return Value: list(par.ests = par.ests, par.ses = par.ses, fit = NA, varcov = NA) } ################################################################################ .gpdLLH = function(theta, excess) { # A function implemented by Diethelm Wuertz # Description: # Computes GPD log-likelihood function # FUNCTION: # LLH: xi = theta[1] beta = theta[2] cond = (beta <= 0) || ((xi <= 0) && (max(excess) > (-beta/xi))) if (cond) { func = NA } else { y = log(1+(xi*excess)/beta) / xi func = length(excess) * log(beta) + (1+xi)*sum(y) } # Return Value: func } ################################################################################ fExtremes/R/metrics.R0000644000176200001440000000711412323220004014175 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ############################################################################### # FUNCTION: METRICS: # .riskMetricsPlot # .garch11MetricsPlot ############################################################################### .emaTA <- function (x, lambda = 0.1, startup = 0) { # Builtin from Package fTrading TS <- is.timeSeries(x) y <- as.vector(x) if (lambda >= 1) lambda = 2/(lambda + 1) if (startup == 0) startup = floor(2/lambda) if (lambda == 0) ema = rep(mean(x), length(x)) if (lambda > 0) { ylam = y * lambda ylam[1] = mean(y[1:startup]) ema <- filter(ylam, filter = (1 - lambda), method = "rec") } ema <- as.vector(ema) if (TS) { ema <- matrix(ema) colnames(ema) <- "EMA" rownames(ema) <- rownames(x) series(x) <- ema } else { x <- ema } x } # ----------------------------------------------------------------------------- .riskMetricsPlot <- function(x, labels = TRUE, lambda = 0.94, ...) { # A function implemented by Diethelm Wuertz # Description: # Arguments: # x - an univariate timesSeries object # FUNCTION: # Check: stopifnot(isUnivariate(x)) # Units: units <- colnames(x) # Filter: riskMetrics = sqrt(.emaTA(x^2, 1-lambda)) # Plot: if (labels) { plot(riskMetrics, type = "l", col = "steelblue", main = paste(units, "RiskMetrics[TM]"), xlab = "Time", ylab = "Volatility", ...) abline(h = sd(riskMetrics), col = "grey") SD = paste("StDev =", round(sd(x), 3)) mtext(text = SD, side = 4, adj = 0, col = "grey", cex = 0.7) grid() } else { plot(riskMetrics, main = "", xlab = "", ylab = "", ...) } # Return Value: invisible(riskMetrics) } # ------------------------------------------------------------------------------ .garch11MetricsPlot <- function(x, labels = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Arguments: # x - an univariate timesSeries object # FUNCTION: # Check: stopifnot(isUnivariate(x)) # Units: units = colnames(x) # Filter: fit = garchFit(~garch(1,1), x, trace = FALSE) garch11 = volatility(fit) attr(garch11, "fit") <- fit # Plot: if (labels) { plot(garch11, type = "l", col = "steelblue", main = paste(units, "GARCH11 Volatility"), xlab = "Time", ylab = "Volatility", ...) abline(h = sd(x), col = "grey") SD = paste("StDev =", round(sd(x), 3)) mtext(text = SD, side = 4, adj = 0, col = "grey", cex = 0.7) grid() } else { plot(garch11, main = "", xlab = "", ylab = "", ...) } # Return Value: invisible(garch11) } ################################################################################ fExtremes/R/GpdPlot.R0000644000176200001440000001534112323220004014101 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # METHODS: PRINT, PLOT, AND SUMMARY: # plot.fGPDFIT S3 Plot Method for object of class "fGPDFIT" # .gpd1Plot Empirical Distribution Plot # .gpd2Plot Tail of Underlying Distribution # .gpd3Plot Scatterplot of GPD Residuals # .gpd4Plot Quantile-Quantile Plot of GPD Residuals ################################################################################ plot.fGPDFIT = function(x, which = "ask", ...) { # A function implemented by Diethelm Wuertz # Description: # Plot method for objects of class 'fGPDFIT' # Example: # x = as.timeSeries(danishClaims); plot(gpdFit(x, 4), "ask") # FUNCTION: # Plot: interactivePlot( x = x, choices = c( "Excess Distribution", "Tail of Underlying Distribution", "Scatterplot of Residuals", "QQ-Plot of Residuals"), plotFUN = c( ".gpd1Plot", ".gpd2Plot", ".gpd3Plot", ".gpd4Plot"), which = which) # Return Value: invisible(x) } # ------------------------------------------------------------------------------ .gpd1Plot = function(x, labels = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Empirical Distribution Plot # Arguments: # x - an object of class fGPDFIT # labels - a logical flag. Should labels be printed? # FUNCTION: # Data: extend = 1.5 u = x@parameter$u data = as.vector(x@data$exceedances) sorted = sort(data) shape = xi = x@fit$par.ests["xi"] scale = beta = x@fit$par.est["beta"] ypoints = ppoints(sorted) U = max(sorted)*extend z = qgpd(seq(0, 1, length = 1000), xi, u, beta) z = pmax(pmin(z, U), u) y = pgpd(z, xi, u, beta) # Labels: if (labels) { xlab = "Fu(x-u)" ylab = "x [log Scale]" main = "Excess Distribution" } else { xlab = ylab = main = "" } # Plot: plot(x = sorted, y = ypoints, xlim = range(u, U), ylim = range(ypoints, y, na.rm = TRUE), main = main, xlab = xlab, ylab = ylab, log = "x", axes = TRUE, col = "steelblue", pch = 19, ...) lines(z[y >= 0], y[y >= 0], col = "brown") # Addon: if (labels) { u = signif (x@parameter$u, 3) text = paste("u =", u) mtext(text, side = 4, adj = 0, cex = 0.7) grid() } # Return Value: invisible() } # ------------------------------------------------------------------------------ .gpd2Plot = function(x, labels = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Tail of Underlying Distribution # Arguments: # x - an object of class fGPDFIT # labels - a logical flag. Should labels be printed? # FUNCTION: # Settings: extend = 1.5 u = x@parameter$u data = as.vector(x@data$x) sorted = sort(data[data > u]) prob = x@fit$prob shape = xi = x@fit$par.ests["xi"] beta = x@fit$par.ests["beta"] scale = beta * (1-prob)^xi location = u - (scale*((1 - prob)^(-xi)-1))/xi # Labels: if (labels) { xlab = "x [log scale]" ylab = "1-F(x) [log scale]" main = "Tail of Underlying Distribution" } else { xlab = ylab = main = "" } # Plot: U = max(data) * extend ypoints = ppoints(sorted) ypoints = (1 - prob) * (1 - ypoints) z = qgpd(seq(0, 1, length = 1000), xi, u, beta) z = pmax(pmin(z, U), u) y = pgpd(z, xi, u, beta) y = (1 - prob) * (1 - y) plot(x = sorted, y = ypoints, xlim = range(u, U), ylim = range(ypoints, y[y>0], na.rm = TRUE), main = main, xlab = xlab, ylab = ylab, log = "xy", axes = TRUE, col = "steelblue", pch = 19, ...) # Line: lines(z[y >= 0], y[y >= 0], col = "brown") if (labels) grid() # Return Value: invisible(list(x = sorted, y = ypoints)) } # ------------------------------------------------------------------------------ .gpd3Plot = function(x, labels = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Scatterplot of GPD Residuals # Arguments: # x - an object of class fGPDFIT # labels - a logical flag. Should labels be printed? # FUNCTION: # Residuals: residuals = x@residuals # Labels: if (labels) { ylab = "Residuals" xlab = "Ordering" main = "Scatterplot of Residuals" } else { xlab = ylab = main = "" } # Plot: plot(residuals, main = main, ylab = ylab, xlab = xlab, col = "steelblue", pch = 19, ...) lines(lowess(1:length(residuals), residuals), col = "brown") if (labels) grid() # Return Value: invisible(list(x = 1:(length(residuals)), y = residuals)) } # ------------------------------------------------------------------------------ .gpd4Plot = function(x, labels = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Quantile-Quantile Plot of GPD Residuals # Arguments: # x - an object of class fGPDFIT # labels - a logical flag. Should labels be printed? # FUNCTION: # Data: data = x@residuals sorted = sort(data) # Labels: if (labels) { xlab = "Ordered Data" ylab = "Exponential Quantiles" main = "QQ-Plot of Residuals" } else { xlab = ylab = main = "" } # Plot: y = qexp(ppoints(data)) plot(x = sorted, y = y, main = main, xlab = xlab, ylab = ylab, col = "steelblue", pch = 19, ...) abline(lsfit(sorted, y), col = "brown") if (labels) grid() # Return Value: invisible(list(x = sorted, y = y)) } ################################################################################ fExtremes/R/GpdRisk.R0000644000176200001440000007707512323220004014107 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: ADDITIONAL PLOTS: # gpdTailPlot Plots Tail Estimate From GPD Model # gpdQPlot Adds Quantile Estimates to gpdTailPlot() # gpdSfallPlot Adds Expected Shortfall Estimates to a GPD Plot # gpdQuantPlot Plots of GPD Tail Estimate of a High Quantile # gpdShapePlot Plots for GPD Shape Parameter # gpdRiskMeasures Calculates Quantiles and Expected Shortfalls # FUNCTION: NEW STYLE FUNCTIONS: # tailPlot Plots GPD VaR and Expected Shortfall risk # tailSlider Interactive view to find proper threshold value # tailRisk Calculates VaR and Expected Shortfall risks ################################################################################ gpdTailPlot = function(object, plottype = c("xy", "x", "y", ""), doplot = TRUE, extend = 1.5, labels = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Plots tail estimate from GPD model # Arguments: # object - an object of class 'fGPDFIT' # Note: # Code partly copied from R package evir # Example: # object = gpdFit(as.timeSeries(data(danishClaims)), u = 10) # gpdTailPlot(object) # FUNCTION: # Settings: threshold = object@fit$threshold x = as.vector(object@data$x) data = x[x > threshold] xi = as.numeric(object@fit$par.ests["xi"]) beta = as.numeric(object@fit$par.ests["beta"]) # Points: plotmin = threshold plotmax = max(data) * max(1, extend) z = qgpd(seq(from = 0, to = 1, length = 501), xi, threshold, beta) z = pmax(pmin(z, plotmax), plotmin) invProb = 1 - length(data)/length(x) ypoints = invProb*(1-ppoints(sort(data))) y = invProb*(1-pgpd(z, xi, threshold, beta)) # Parameters: shape = xi scale = beta * invProb^xi location = threshold - (scale*(invProb^(- xi)-1))/xi # Show Plot: if (doplot) { # Plot plot(sort(data), ypoints, xlim = range(plotmin, plotmax), ylim = range(ypoints, y, na.rm = TRUE), col = "steelblue", pch = 19, xlab = "", ylab = "", log = plottype[1], axes = TRUE, ...) lines(z[y >= 0], y[y >= 0]) grid() # Labels: alog = plottype[1] if (labels) { xLab = "x" if (alog == "x" || alog == "xy" || alog == "yx") xLab = paste(xLab, "(on log scale)") yLab = "1-F(x)" if (alog == "xy" || alog == "yx" || alog == "y") yLab = paste(yLab, "(on log scale)") title(xlab = xLab, ylab = yLab) title(main = "Tail Estimate Plot") } } # Object: object@fit$n = length(x) object@fit$data = object@data$exceedances object@fit$n.exceed = length(object@fit$data) if(object@method[2] == "mle") { object@fit$method = "ml" } else { object@fit$method = "" } # Last Fit: lastfit = object@fit class(lastfit) = "gpd" # Result: ans = list(lastfit = lastfit, type = "tail", dist = "gpd", plotmin = plotmin, plotmax = plotmax, alog = plottype[1], location = location, shape = shape, scale = scale) # Return Value: invisible(ans) } # ------------------------------------------------------------------------------ gpdQPlot = function(x, p = 0.99, ci = 0.95, type = c("likelihood", "wald"), like.num = 50) { # A function implemented by Diethelm Wuertz # Description: # Adds Expected Shortfall Estimates to a GPD Plot # Arguments: # x - an object of class 'gpdFit' # pp - the probability level # Example: # par(mfrow=c(1,1)); x=as.timeSeries(data(danishClaims)) # tp = gpdTailPlot(gpdFit(x, 10)); gpdQPlot(tp) # FUNCTION: # Check Argument: par(new = TRUE) ci.p = ci pp = p ci.type = type[1] # A copy from evir: if (x$dist != "gpd") stop("This function is used only with GPD curves") if (length(pp) > 1) stop("One probability at a time please") threshold = x$lastfit$threshold par.ests = x$lastfit$par.ests xihat = par.ests["xi"] betahat = par.ests["beta"] varcov = x$lastfit$varcov p.less.thresh = x$lastfit$p.less.thresh lambda = 1 if (x$type == "tail") lambda = 1/(1 - p.less.thresh) a = lambda * (1 - pp) gfunc = function(a, xihat) (a^(-xihat) - 1)/xihat gfunc.deriv = function(a, xihat) (-(a^(-xihat) - 1)/xihat - a^(-xihat) * logb(a))/xihat q = q.keep = threshold + betahat * gfunc(a, xihat) # if (q < x$plotmax) abline(v = q, lty = 2) out = as.numeric(q) if (ci.type == "wald") { if (class(x$lastfit) != "gpd") stop("Wald method requires model be fitted with gpd (not pot)") scaling = threshold betahat = betahat/scaling xivar = varcov[1, 1] betavar = varcov[2, 2]/(scaling^2) covar = varcov[1, 2]/scaling term1 = betavar * (gfunc(a, xihat))^2 term2 = xivar * (betahat^2) * (gfunc.deriv(a, xihat))^2 term3 = 2 * covar * betavar * gfunc(a, xihat) * gfunc.deriv(a, xihat) qvar = term1 + term2 + term3 if (qvar < 0) stop("Negative estimate of quantile variance") qse = scaling * sqrt(qvar) qq = qnorm(1 - (1 - ci.p)/2) upper = q + qse * qq lower = q - qse * qq abline(v = upper, lty = 2, col = 2) abline(v = lower, lty = 2, col = 2) out = as.numeric(c(lower, q, qse, upper)) names(out) = c("Lower CI", "Estimate", "Std.Err", "Upper CI") } if (ci.type == "likelihood") { parloglik = function(theta, tmp, a, threshold, xpi) { beta = (theta * (xpi - threshold))/(a^(-theta) - 1) if ((beta <= 0) || ((theta <= 0) && (max(tmp) > (-beta/theta)))) f = 1e+06 else { y = logb(1 + (theta * tmp)/beta) y = y/theta f = length(tmp) * logb(beta) + (1 + theta) * sum(y) } if(is.na(f)) f = 1e+6 f } theta = xihat parmax = NULL xp = exp(seq(from = logb(threshold), to = logb(x$plotmax), length = like.num)) excess = as.numeric(x$lastfit$data - threshold) for (i in 1:length(xp)) { fit2 = optim(theta, parloglik, method = "BFGS", hessian = FALSE, tmp = excess, a = a, threshold = threshold, xpi = xp[i]) parmax = rbind(parmax, fit2$value) } parmax = -parmax overallmax = -parloglik(xihat, excess, a, threshold, q) crit = overallmax - qchisq(0.999, 1)/2 cond = parmax > crit xp = xp[cond] parmax = parmax[cond] par(new = TRUE) dolog = "" if (x$alog == "xy" || x$alog == "x") dolog = "x" plot(xp, parmax, type = "n", xlab = "", ylab = "", axes = FALSE, xlim = range(x$plotmin, x$plotmax), ylim = range(overallmax, crit), log = dolog) axis(4, at = overallmax - qchisq(c(0.95, 0.99), 1)/2, labels = c("95", "99"), tick = TRUE) aalpha = qchisq(ci.p, 1) abline(h = overallmax - aalpha/2, lty = 2, col = 2) cond = !is.na(xp) & !is.na(parmax) smth = spline(xp[cond], parmax[cond], n = 200) lines(smth, lty = 2, col = 2) ci = smth$x[smth$y > overallmax - aalpha/2] abline(v = q.keep, lty = 2) out = c(min(ci), q, max(ci)) names(out) = c("Lower CI", "Estimate", "Upper CI") } # Return Value: out } # ------------------------------------------------------------------------------ gpdSfallPlot = function(x, p = 0.99, ci = 0.95, like.num = 50) { # A function implemented by Diethelm Wuertz # Description: # Adds Expected Shortfall Estimates to a GPD Plot # Arguments: # x - an object of class 'gpdFit' # p - the desired probability for expected shortfall # estimate (e.g. 0.99 for the 99th percentile) # ci - probability for confidence interval (must be # less than 0.999) # like.num - number of times to evaluate profile likelihood # FUNCTION: # Settings: par(new = TRUE) pp = p ci.p = ci object = x # A copy from evir: if(x$dist != "gpd") stop("This function is used only with GPD curves") if(length(pp) > 1) stop("One probability at a time please") threshold = x$lastfit$threshold par.ests = x$lastfit$par.ests xihat = par.ests["xi"] betahat = par.ests["beta"] varcov = x$lastfit$varcov p.less.thresh = x$lastfit$p.less.thresh lambda = 1 # if (x$type == "tail") lambda = 1/(1 - p.less.thresh) a = lambda * (1 - pp) gfunc = function(a, xihat) (a^( - xihat) - 1) / xihat q = threshold + betahat * gfunc(a, xihat) s = s.keep = q + (betahat + xihat * (q - threshold))/(1 - xihat) # if (s < x$plotmax) abline(v = s, lty = 2) out = as.numeric(s) parloglik = function(theta, tmp, a, threshold, xpi) { beta = ((1 - theta) * (xpi - threshold)) / (((a^( - theta) - 1)/theta) + 1) if((beta <= 0) || ((theta <= 0) && (max(tmp) > ( - beta/theta)))) { f = 1e+06 } else { y = log(1 + (theta * tmp)/beta) y = y/theta f = length(tmp) * log(beta) + (1 + theta) * sum(y) } f } theta = xihat parmax = NULL xp = exp(seq(from = log(threshold), to = log(x$plotmax), length = like.num)) excess = as.numeric(x$lastfit$data - threshold) for (i in 1:length(xp)) { fit2 = optim(theta, parloglik, method = "BFGS", hessian = FALSE, tmp = excess, a = a, threshold = threshold, xpi = xp[i]) parmax = rbind(parmax, fit2$value) } parmax = - parmax overallmax = - parloglik(xihat, excess, a, threshold, s) crit = overallmax - qchisq(0.999, 1)/2 cond = parmax > crit xp = xp[cond] parmax = parmax[cond] dolog = "" if(x$alog == "xy" || x$alog == "x") dolog = "x" par(new = TRUE) plot(xp, parmax, type = "n", xlab = "", ylab = "", axes = FALSE, xlim = range(x$plotmin, x$plotmax), ylim = range(overallmax, crit), log = dolog) axis(4, at = overallmax - qchisq(c(0.95, 0.99), 1)/2, labels = c("95", "99"), tick = TRUE) aalpha = qchisq(ci.p, 1) abline(h = overallmax - aalpha/2, lty = 2, col = 2) cond = !is.na(xp) & !is.na(parmax) smth = spline(xp[cond], parmax[cond], n = 200) lines(smth, lty = 2, col = 2) ci = smth$x[smth$y > overallmax - aalpha/2] abline(v = s.keep, lty = 2) out = c(min(ci), s, max(ci)) names(out) = c("Lower CI", "Estimate", "Upper CI") # Return Value: out } # ------------------------------------------------------------------------------ gpdQuantPlot = function(x, p = 0.99, ci = 0.95, models = 30, start = 15, end = 500, doplot = TRUE, plottype = c("normal", "reverse"), labels = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Plots of GPD Tail Estimate of a High Quantile # Example: # Danish = as.timeSeries(data(danishClaims)) # gpdquantPlot(Danish) # Note: # Code partly copied from R package evir # FUNCTION: # Settings: data = as.vector(x) n = length(data) exceed = trunc(seq(from = min(end, n), to = start, length = models)) p = max(p, 1 - min(exceed)/n) start = max(start, ceiling(length(data) * (1 - p))) # Internal Function: .quantFit = function(nex, data) { prob = 1 - nex/length(as.vector(data)) fit = gpdFit(data, u = quantile(data, prob))@fit c(fit$threshold, fit$par.ests, fit$par.ses, as.vector(fit$varcov)[c(1,4,2)]) } # Compute: mat = apply(as.matrix(exceed), 1, .quantFit, data = data) thresh = mat[1, ] xihat = mat[2, ] betahat = mat[3, ] lambda = length(data)/exceed a = lambda * (1 - p) gfunc = function(a, xihat) (a^( - xihat) - 1) / xihat qest = thresh + betahat * gfunc(a, xihat) l = u = qest yrange = range(qest) # Add Confidence Intervals: if (ci) { qq = qnorm(1 - (1 - ci)/2) xivar = mat[4, ] betavar = mat[5, ] covar = mat[6, ] scaling = thresh betahat = betahat/scaling betavar = betavar/(scaling^2) covar = covar/scaling gfunc.deriv = function(a, xihat) (-(a^(-xihat)-1)/xihat-a^(-xihat)*log(a))/xihat term1 = betavar * (gfunc(a, xihat))^2 term2 = xivar * (betahat^2) * (gfunc.deriv(a, xihat))^2 term3 = 2 * covar * betavar * gfunc(a, xihat) * gfunc.deriv(a, xihat) qvar = term1 + term2 + term3 if (min(qvar) < 0) stop(paste( "Conditioning problems lead to estimated negative", "quantile variance", sep = "\n")) qse = scaling * sqrt(qvar) u = qest + qse * qq l = qest - qse * qq yrange = range(qest, u, l) } # Result matrix: mat = rbind(thresh, qest, exceed, l, u) rownames(mat) = c("threshold", "qest", "exceedances", "lower", "upper") colnames(mat) = paste(1:dim(mat)[2]) # Plot: if (doplot) { if (plottype[1] == "normal") { index = exceed } else if (plottype[1] == "reverse") { index = -exceed } plot(index, qest, ylim = yrange, type = "l", xlab = "", ylab = "", axes = FALSE) axis(1, at = index, labels = paste(exceed)) axis(2) axis(3, at = index, labels = paste(format(signif (thresh, 3)))) box() if (ci) { lines(index, l, lty = 2, col = "steelblue") lines(index, u, lty = 2, col = "steelblue") } if (labels) { title(xlab = "Exceedances", ylab = paste("Quantiles:", substitute(x))) mtext("Threshold", side = 3, line = 3) } p = round(p, 3) ci = round(ci, 3) text = paste("p =", p, "| ci =", ci, "| start =", start, "| end =", end ) mtext(text, side = 4, adj = 0, cex = 0.7) } # Add Attributes: mat = t(mat) attr(mat, "control") = data.frame(cbind(p = p, ci = ci, start = start, end = end), row.names = "") # Return Value: invisible(mat) } # ------------------------------------------------------------------------------ gpdShapePlot = function(x, ci = 0.95, models = 30, start = 15, end = 500, doplot = TRUE, plottype = c("normal", "reverse"), labels = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Plots for GPD Shape Parameter # Example: # FUNCTION: # Settings: data = as.vector(x) X = trunc(seq(from = min(end, length(data)), to = start, length = models)) # Internal Function: .shapeFit = function(nex, data) { prob = 1 - nex/length(as.vector(data)) fit = gpdFit(data, u = quantile(data, prob), information = "expected")@fit c(fit$threshold, fit$par.ests[1], fit$par.ses[1]) } # Result Matrix: mat = apply(as.matrix(X), 1, .shapeFit, data = data) mat = rbind(mat, X) rownames(mat) = c("threshold", "shape", "se", "exceedances") colnames(mat) = paste(1:dim(mat)[2]) # Plot: if (doplot) { thresh = mat[1, ] y = mat[2, ] yrange = range(y) if (plottype[1] == "normal") { index = X } else if (plottype == "reverse") { index = -X } if (ci) { sd = mat[3, ] * qnorm(1 - (1 - ci)/2) yrange = range(y, y + sd, y - sd) } plot(index, y, ylim = yrange, type = "l", xlab = "", ylab = "", axes = FALSE) axis(1, at = index, labels = paste(X)) axis(2) axis(3, at = index, labels = paste(format(signif(thresh, 3)))) box() grid() if (ci) { sd = mat[3, ] * qnorm(1 - (1 - ci)/2) yrange = range(y, y + sd, y - sd) lines(index, y + sd, lty = 2, col = "steelblue") lines(index, y - sd, lty = 2, col = "steelblue") } if (labels) { title(xlab = "Exceedances", ylab = paste("Shape:", substitute(x))) mtext("Threshold", side = 3, line = 3) } text = paste("ci =", ci, "| start =", start, "| end =", end ) mtext(text, side = 4, adj = 0, cex = 0.7) } # Add Attributes: attr(mat, "control") = data.frame(cbind(ci = ci, start = start, end = end), row.names = "") mat = t(mat) # Return Value: invisible(mat) } # ------------------------------------------------------------------------------ gpdRiskMeasures = function(object, prob = c(0.99, 0.995, 0.999, 0.9995, 0.9999)) { # A function implemented by Diethelm Wuertz # Description: # Calculates Quantiles and Expected Shortfalls # Arguments: # x - an object of class 'gpdFit' # prob - a numeric value or vector of probability levels # FUNCTION: # Settings: u = object@parameter$u par.ests = object@fit$par.ests xi = par.ests["xi"] beta = par.ests["beta"] lambda = 1/(1 - object@fit$prob) # Quantile Risk: q = u + (beta * ((lambda * (1 - prob))^( - xi) - 1))/xi # Shortfall Risk: es = (q * (1 + (beta - xi * u)/q)) / (1 - xi) # Risk Matrix: ans = data.frame(p = prob, quantile = q, shortfall = es) # Return Value: ans } ################################################################################ tailPlot <- function(object, p = 0.99, ci = 0.95, nLLH = 25, extend = 1.5, grid = TRUE, labels = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Plots GPD VaR and Expected Shortfall risk # Arguments: # object - an object of class 'fGPDFIT' # Note: # Code partly copied from R package evir # Example: # object = gpdFit(as.timeSeries(data(danishClaims)), u = 10) # gpdTailPlot(object) # FUNCTION: # Settings: ci.p = p pp = p like.num = nLLH threshold = object@fit$threshold x = as.vector(object@data$x) data = x[x > threshold] xi = as.numeric(object@fit$par.ests["xi"]) beta = as.numeric(object@fit$par.ests["beta"]) # Points: plotmin = threshold plotmax = max(data) * max(1, extend) z = qgpd(seq(from = 0, to = 1, length = 501), xi, threshold, beta) z = pmax(pmin(z, plotmax), plotmin) invProb = 1 - length(data)/length(x) ypoints = invProb*(1-ppoints(sort(data))) y = invProb*(1-pgpd(z, xi, threshold, beta)) # Parameters: shape = xi scale = beta * invProb^xi location = threshold - (scale*(invProb^(- xi)-1))/xi # Show Plot: xlim = range(plotmin, plotmax) ylim = range(ypoints, y[y>0], na.rm = TRUE) plot(sort(data), ypoints, xlim = xlim, ylim = ylim, col = "steelblue", pch = 19, xlab = "", ylab = "", log = "xy", axes = TRUE, ...) lines(z[y >= 0], y[y >= 0]) if (grid) grid() # Labels: alog = "xy" if (labels) { xLab = "x" if (alog == "x" || alog == "xy" || alog == "yx") xLab = paste(xLab, "(on log scale)") yLab = "1-F(x)" if (alog == "xy" || alog == "yx" || alog == "y") yLab = paste(yLab, "(on log scale)") title(xlab = xLab, ylab = yLab) title(main = "Tail Estimate Plot") } # Object: object@fit$n = length(x) object@fit$data = object@data$exceedances object@fit$n.exceed = length(object@fit$data) # Tail Plot: lastfit = object@fit x = list(lastfit = lastfit, type = "tail", dist = "gpd", plotmin = plotmin, plotmax = plotmax, alog = "xy", location = location, shape = shape, scale = scale) threshold = lastfit$threshold par.ests = lastfit$par.ests xihat = par.ests["xi"] betahat = par.ests["beta"] varcov = lastfit$varcov p.less.thresh = lastfit$p.less.thresh par(new = TRUE) # GPD Quantiles: a = 1/(1 - p.less.thresh) * (1 - pp) gfunc = function(a, xihat) (a^(-xihat) - 1)/xihat gfunc.deriv = function(a, xihat) (-(a^(-xihat)-1)/xihat - a^(-xihat)*logb(a))/xihat q = q.keep = threshold + betahat * gfunc(a, xihat) # if (q < x$plotmax) abline(v = q, lty = 2) out1 = as.numeric(q) # Log Likelihood: parloglik = function(theta, tmp, a, threshold, xpi) { beta = (theta * (xpi - threshold))/(a^(-theta) - 1) if ((beta <= 0) || ((theta <= 0) && (max(tmp) > (-beta/theta)))) f = 1e+06 else { y = logb(1 + (theta * tmp)/beta) y = y/theta f = length(tmp) * logb(beta) + (1 + theta) * sum(y) } if(is.na(f)) f = 1e+6 f } # x Value: theta = xihat parmax = NULL xp = exp(seq(from = logb(threshold), to = logb(x$plotmax), length = like.num)) # y Value: excess = as.numeric(x$lastfit$data - threshold) for (i in 1:length(xp)) { fit2 = optim(theta, parloglik, method = "BFGS", hessian = FALSE, tmp = excess, a = a, threshold = threshold, xpi = xp[i]) parmax = rbind(parmax, fit2$value) } parmax = -parmax overallmax = -parloglik(xihat, excess, a, threshold, q) crit = overallmax - qchisq(0.999, 1)/2 cond = parmax > crit xp = xp[cond] parmax = parmax[cond] # Plot: par(new = TRUE) plot(xp, parmax, type = "n", xlab = "", ylab = "", axes = FALSE, xlim = range(x$plotmin, x$plotmax), ylim = range(overallmax, crit), log = "x") axis(4, at = overallmax - qchisq(c(0.95, 0.99), 1)/2, labels = c("95", "99"), tick = TRUE) aalpha = qchisq(ci.p, 1) abline(h = overallmax - aalpha/2, lty = 2, col = 2) cond = !is.na(xp) & !is.na(parmax) smth = spline(xp[cond], parmax[cond], n = 200) lines(smth, lty = 2, col = 2) ci = smth$x[smth$y > overallmax - aalpha/2] abline(v = q.keep, lty = 2) # Result: out1 = c(min(ci), q, max(ci)) names(out1) = c("Lower CI", "Estimate", "Upper CI") # GPD Shortfall: a = 1/(1 - p.less.thresh) * (1 - pp) gfunc = function(a, xihat) (a^( - xihat) - 1) / xihat q = threshold + betahat * gfunc(a, xihat) s = s.keep = q + (betahat + xihat * (q - threshold))/(1 - xihat) out = as.numeric(s) # Log Likelihood: parloglik = function(theta, tmp, a, threshold, xpi) { beta = ((1-theta)*(xpi-threshold)) / (((a^(-theta)-1)/theta)+1) if((beta <= 0) || ((theta <= 0) && (max(tmp) > ( - beta/theta)))) { f = 1e+06 } else { y = log(1 + (theta * tmp)/beta) y = y/theta f = length(tmp) * log(beta) + (1 + theta) * sum(y) } f } # x Values: theta = xihat parmax = NULL xp = exp(seq(from = log(threshold), to = log(x$plotmax), length = like.num)) excess = as.numeric(x$lastfit$data - threshold) # y Values: for (i in 1:length(xp)) { fit2 = optim(theta, parloglik, method = "BFGS", hessian = FALSE, tmp = excess, a = a, threshold = threshold, xpi = xp[i]) parmax = rbind(parmax, fit2$value) } parmax = -parmax overallmax = -parloglik(xihat, excess, a, threshold, s) crit = overallmax - qchisq(0.999, 1)/2 cond = parmax > crit xp = xp[cond] parmax = parmax[cond] # Plot: par(new = TRUE) plot(xp, parmax, type = "n", xlab = "", ylab = "", axes = FALSE, xlim = range(x$plotmin, x$plotmax), ylim = range(overallmax, crit), log = "x") axis(4, at = overallmax - qchisq(c(0.95, 0.99), 1)/2, labels = c("95", "99"), tick = TRUE) aalpha = qchisq(ci.p, 1) abline(h = overallmax - aalpha/2, lty = 2, col = 2) cond = !is.na(xp) & !is.na(parmax) smth = spline(xp[cond], parmax[cond], n = 200) lines(smth, lty = 2, col = 2) ci = smth$x[smth$y > overallmax - aalpha/2] abline(v = s.keep, lty = 2) # Result: out2 = c(min(ci), s, max(ci)) names(out2) = c("Lower CI", "Estimate", "Upper CI") # Return Value: ans = list(var = out1, sfall = out2) invisible(ans) } # ------------------------------------------------------------------------------ .tailSlider.last.Quantile = NA .tailSlider.last.nThresholds = NA .tailSlider.param = NA .tailSlider.conf = NA .tailSlider.counter = NA .tailSlider.Thresholds = NA tailSlider = function(x) { # A function implemented by Diethelm Wuertz # Description # Interactive view to find proper threshold value # Arguments: # x - an univariate timeSeries object or any other object which # can be transformed by the function as.vector() into a # numeric vector. # FUNCTION: # Transform to Vector: x = as.vector(x) # Exit: on.exit(rm(.tailSlider.last.Quantile)) on.exit(rm(.tailSlider.last.nThresholds)) on.exit(rm(.tailSlider.param)) on.exit(rm(.tailSlider.conf)) on.exit(rm(.tailSlider.counter)) on.exit(rm(x)) # Internal Function: refresh.code = function(...) { .tailSlider.counter <<- .tailSlider.counter + 1 # Sliders: u = thresholdStart = .sliderMenu(no = 1) du = .sliderMenu(no = 2) max.x = .sliderMenu(no = 3) nThresholds = .sliderMenu(no = 4) Quantile = .sliderMenu(no = 5) pp = .sliderMenu(no = 6) if (.tailSlider.counter > 5) { # Plot data: par(mfrow = c(2, 2), cex = 0.7) # Figure 1: ans = mxfPlot(x, u = quantile(x, 1), xlim = c(min(x), max.x), labels = FALSE) grid() # Add thresholds: U = min(c(u+du, max(x))) abline(v = u, lty = 3, col = "red") abline(v = U, lty = 3, col = "red") # Fit line to mean excess within thresolds: X = as.vector(ans[, 1]) Y = as.vector(ans[, 2]) Y = Y[X > u & X < U] X = X[X > u & X < U] lineFit = lsfit(X, Y) abline(lineFit, col = "red", lty = 2) c = lineFit$coef[[1]] m = lineFit$coef[[2]] # Compute parameters xi and beta: xi = c(xi = m/(1+m)) beta = c(beta = c/(1+m)) Xi = signif(xi, 3) Beta = signif(beta, 3) # Add Title: Main = paste("Fig 1: xi = ", Xi, "| beta =", Beta) title(main = Main, xlab = "Threshold", ylab = "Mean Excess") # GPD Fit: if (.tailSlider.last.Quantile != Quantile | .tailSlider.last.nThresholds != nThresholds) { .tailSlider.param <<- NULL .tailSlider.conf <<- NULL .tailSlider.Thresholds <<- seq(quantile(x, Quantile), quantile(x, 1-Quantile), length = nThresholds) for (threshold in .tailSlider.Thresholds) { ans = gpdFit(x, threshold)@fit .tailSlider.param <<- rbind(.tailSlider.param, c(u = threshold, ans$par.ests)) .tailSlider.conf <<- rbind(.tailSlider.conf, c(u = threshold, ans$par.ses)) } .tailSlider.last.Quantile <<- Quantile .tailSlider.last.nThresholds <<- nThresholds } # Figure 2: ymax = max(c(.tailSlider.param[, 2] + .tailSlider.conf[, 2])) ymin = min(c(.tailSlider.param[, 2] - .tailSlider.conf[, 2])) plot(.tailSlider.Thresholds, .tailSlider.param[, 2], xlab = "Threshold", ylab = "xi", ylim = c(ymin, ymax), col = "steelblue", type = "l", main = "xi Estimation") grid() points(.tailSlider.Thresholds, .tailSlider.param[, 2], pch = 19, col = "steelblue") lines(.tailSlider.Thresholds, .tailSlider.param[, 2] + .tailSlider.conf[, 2], lty = 3) lines(.tailSlider.Thresholds, .tailSlider.param[, 2] - .tailSlider.conf[, 2], lty = 3) abline(h = xi, lty = 3, col = "red") abline(v = u, lty = 3, col = "red") abline(v = U, lty = 3, col = "red") # Figure 3: ymax = max(c(.tailSlider.param[, 3] + .tailSlider.conf[, 3])) ymin = min(c(.tailSlider.param[, 3] - .tailSlider.conf[, 3])) plot(.tailSlider.Thresholds, .tailSlider.param[, 3], xlab = "Threshold", ylab = "beta", ylim = c(ymin, ymax), col = "steelblue", type = "l", main = "beta Estimation") grid() points(.tailSlider.Thresholds, .tailSlider.param[, 3], pch = 19, col = "steelblue") lines(.tailSlider.Thresholds, .tailSlider.param[, 3] + .tailSlider.conf[, 3], lty = 3) lines(.tailSlider.Thresholds, .tailSlider.param[, 3] - .tailSlider.conf[, 3], lty = 3) abline(h = beta, lty = 3, col = "red") abline(v = u, lty = 3, col = "red") abline(v = U, lty = 3, col = "red") # Figure 4: # <<- fit = gpdFit(x, u) tailPlot(object = fit, p = pp) # Refresh Frame: par(mfrow = c(2, 2), cex = 0.7) } } # Save x globally: x <<- as.vector(x) # Slider Menu - x Series Settings: xmax = max(x) delta.x = (max(x)-min(x))/200 start.x = par()$usr[2] # Slider Menu - Threshold/Quantiles Settings: qmin = quantile(x, 0.25) qmax = quantile(x, 0.995) delta.q = (qmax-qmin)/200 start.q = (qmin+qmax)/2 # Save Globally: .tailSlider.last.Quantile <<- 0.05*(1+1e-4) .tailSlider.last.nThresholds <<- 10+1 .tailSlider.param <<- NA .tailSlider.conf <<- NA .tailSlider.counter <<- 0 # Open Slider Menu: .sliderMenu(refresh.code, names = c("1 thresholdStart", "1 thresholdInterval", "1 max(x)", "2|3 nThresholds", "2|3 Quantile", "pp"), minima = c( qmin, 0, min(x), 5, 0.005, 0.900), maxima = c( qmax, qmax, max(x), 50, 0.500, 0.999), resolutions = c( delta.q, delta.x, delta.x, 5, 0.005, 0.001), starts = c( start.q, start.x, max(x), 10, 0.050, 0.990)) } # ------------------------------------------------------------------------------ tailRisk = function(object, prob = c(0.99, 0.995, 0.999, 0.9995, 0.9999), ...) { # A function implemented by Diethelm Wuertz # Description: # Calculates Quantiles VaR and Expected Shortfall Risks # Arguments: # x - an object of class 'gpdFit' # prob - a numeric value or vector of probability levels # FUNCTION: # Settings: u = object@parameter$u par.ests = object@fit$par.ests xi = par.ests["xi"] beta = par.ests["beta"] lambda = 1/(1 - object@fit$prob) # Quantile Risk: q = u + (beta * ((lambda * (1 - prob))^( - xi) - 1))/xi # Shortfall Risk: es = (q * (1 + (beta - xi * u)/q)) / (1 - xi) # Risk Matrix: ans = data.frame(Prob = prob, VaR = q, ES = es) # Return Value: ans } ################################################################################ fExtremes/R/GevDistribution.R0000644000176200001440000002705312323220004015654 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: GEV DISTRIBUTION FAMILY: [CALLING EVD] # dgev Density for the GEV Distribution # pgev Probability for the GEV Distribution # qgev Quantiles for the GEV Distribution # rgev Random variates for the GEV Distribution # gevMoments Computes true statistics for GEV distribution # gevSlider Displays distribution and rvs for GEV distribution # FUNCTION: GEV DISTRIBUTION FAMILY: [USE FROM EVD] # .devd Density for the GEV Distribution # .pevd Probability for the GEV Distribution # .qevd Quantiles for the GEV Distribution # .revd Random variates for the GEV Distribution ################################################################################ dgev = function(x, xi = 1, mu = 0, beta = 1, log = FALSE) { # A function implemented from package evd # Description: # GEV Density Function # Note: 1 + xi*(x-mu)/beta > 0 # xi > 0 Frechet # xi = 0 Gumbel # xi < 0 weibl # FUNCTION: # Density: d = .devd(x, location = mu, scale = beta, shape = xi, log = FALSE) # Add Attribute: attr(d, "control") = data.frame(xi = xi, mu = mu, beta = beta, log = log, row.names = "") # Return Value: d } # ------------------------------------------------------------------------------ pgev = function(q, xi = 1, mu = 0, beta = 1, lower.tail = TRUE) { # A function implemented from package evd # Description: # GEV Probability Function # Note: 1 + xi*(x-mu)/beta > 0 # xi > 0 Frechet # xi = 0 Gumbel # xi < 0 Weibull # FUNCTION: # Probability: p = .pevd(q, location = mu, scale = beta, shape = xi, lower.tail = lower.tail) # Add Attribute: attr(p, "control") = data.frame(xi = xi, mu = mu, beta = beta, lower.tail = lower.tail, row.names = "") # Return Value: p } # ------------------------------------------------------------------------------ qgev = function(p, xi = 1, mu = 0, beta = 1, lower.tail = TRUE) { # A function implemented from package evd # Description: # GEV Quantile Function # Note: 1 + xi*(x-mu)/beta > 0 # xi > 0 Frechet # xi = 0 Gumbel # xi < 0 Weibull # FUNCTION: # Quantiles: q = .qevd(p, location = mu, scale = beta, shape = xi, lower.tail = lower.tail) # Add Attribute: attr(q, "control") = data.frame(xi = xi, mu = mu, beta = beta, lower.tail = lower.tail, row.names = "") # Return Value: q } # ------------------------------------------------------------------------------ rgev = function(n, xi = 1, mu = 0, beta = 1) { # A function implemented from package evd # Description: # GEV Random Variables # Note: 1 + xi*(x-mu)/beta > 0 # xi > 0 Frechet # xi = 0 Gumbel # xi < 0 Weibull # FUNCTION: # Random Variates: r = .revd(n = n, location = mu, scale = beta, shape = xi) # Add Attribute: attr(q, "control") = data.frame(xi = xi, mu = mu, beta = beta) # Return Value: r } # ---------------------------------------------------------------------------- gevMoments = function(xi = 0, mu = 0, beta = 1) { # A function implemented by Diethelm Wuertz # Description: # Compute true statistics for Generalized Extreme Value distribution # Value: # Returns true mean for xi < 1 and variance for xi < 1/2 # of GEV distribution, otherwise NaN is returned # FUNCTION: # MEAN: Returns for x >= 1 NaN: g = c(1, 0, NaN) xinv = 1/ ( xi + sign(abs(xi)) - 1 ) # For xi = the result is eulers constant euler = 0.57721566490153286060651209008240243104 xi0 = c(0, beta*euler, 0) # Supress warning for NaN's from Gamma Function: warn.old <- getOption("warn") options(warn = -1) gevMean = mu + beta * xinv * (gamma(1-xi)-1) * g[sign(xi-1)+2] + xi0[(sign(xi)+2)] options(warn = warn.old) # VAR: Returns for x >= 1 NaN: g = c(1, 0, NaN) xinv = 1/ ( xi + sign(abs(xi)) - 1 ) xi0 = c(0, (beta*pi)^2 / 6, 0) # Supress warning for NaN's from Gamma Function: warn.old <- getOption("warn") options(warn = -1) gevVar = (beta*xinv)^2 * (gamma(1-2*xi) - gamma(1-xi)^2 ) * g[sign(2*xi-1)+2] + xi0[(sign(xi)+2)] options(warn = warn.old) # Result: param = c(xi = xi, mu = mu, beta = beta) ans = list(param = param, mean = gevMean, var = gevVar) # Return Value: ans } # ------------------------------------------------------------------------------ gevSlider = function(method = c("dist", "rvs")) { # A function implemented by Diethelm Wuertz # Description: # Displays distribution and rvs for GEV distribution # FUNCTION: # Settings: method = match.arg(method) # Internal Function: refresh.code = function(...) { # Sliders: N = .sliderMenu(no = 1) xi = .sliderMenu(no = 2) mu = .sliderMenu(no = 3) beta = .sliderMenu(no = 4) # Compute Data: if (xi > 0) { pmin = 0 pmax = 0.999 } else if (xi < 0) { pmin = 0.001 pmax = 1 } else if (xi == 0) { pmin = 0.001 pmax = 0.999 } xmin = round(qgev(pmin, xi, mu, beta), digits = 2) xmax = round(qgev(pmax, xi, mu, beta), digits = 2) s = seq(xmin, xmax, length = N) y1 = dgev(s, xi, mu, beta) y2 = pgev(s, xi, mu, beta) Moments = gevMoments(xi, mu, beta) Mean = round(Moments$mean, 2) Var = round(Moments$var, 2) mText = paste("Mean =", Mean, " | Variance = ", Var) main1 = paste("GEV Density\n", "xi = ", as.character(xi), " | ", "mu = ", as.character(mu), " | ", "beta = ", as.character(beta) ) main2 = paste("GEV Probability\n", "xmin [0.00] = ", as.character(xmin), " | ", "xmax [0.99] = ", as.character(xmax) ) Median = qgev(0.5, xi, mu, beta) # Frame: par(mfrow = c(2, 1), cex = 0.7) # Density: if (method == "rvs") { x = rgev(N, xi, mu, beta) hist(x, probability = TRUE, col = "steelblue", border = "white", xlim = c(xmin, xmax), ylim = c(0, 1.1*max(y1)), main = main1, breaks = "FD" ) lines(s, y1, col = "orange") mtext(mText, side = 4, col = "grey", cex = 0.7) } else { plot(s, y1, type = "l", xlim = c(xmin, xmax), col = "steelblue") abline(h = 0, lty = 3) abline(v = Median, lty = 3, col = "red") abline(v = Mean, lty = 3, col = "darkgreen") title(main = main1) mtext(mText, side = 4, col = "grey", cex = 0.7) } # Probability: plot(s, y2, type = "l", xlim = c(xmin, xmax), ylim = c(0, 1), col = "steelblue" ) abline(h = 0, lty = 3) abline(h = 0.5, lty = 3, col = "red") abline(v = Median, lty = 3, col = "red") abline(v = Mean, lty = 3, col = "darkgreen") title(main = main2) mtext(mText, side = 4, col = "grey", cex = 0.7) # Reset Frame: par(mfrow = c(1, 1), cex = 0.7) } # Open Slider Menu: .sliderMenu(refresh.code, names = c( "N", "xi", "mu", "beta"), minima = c( 50, -1.50, -5.00, 0.10 ), maxima = c( 1000, 1.50, +5.00, 5.00 ), resolutions = c( 50, 0.01, 0.10, 0.10 ), starts = c( 500, 0.00, 0.00, 1.00 ) ) } ################################################################################ .devd = function(x, location = 0, scale = 1, shape = 0, log = FALSE) { # A modified copy from contributed R package evd # FUNCTION: # Check: stopifnot(min(scale) > 0) stopifnot(length(shape) == 1) # Density: x = (x - location) / scale if (shape == 0) { d = log(1/scale) - x - exp(-x) } else { nn = length(x) xx = 1 + shape * x xxpos = xx[xx > 0 | is.na(xx)] scale = rep(scale, length.out = nn)[xx > 0 | is.na(xx)] d = numeric(nn) d[xx > 0 | is.na(xx)] = log(1/scale) - xxpos^(-1/shape) - (1/shape + 1) * log(xxpos) d[xx <= 0 & !is.na(xx)] = -Inf } # Log: if (!log) { d = exp(d) } # Add Attribute: attr(d, "control") = data.frame(location = location[1], scale = scale[1], shape = shape[1], log = log, row.names = "") # Return Value: d } # ------------------------------------------------------------------------------ .pevd = function(q, location = 0, scale = 1, shape = 0, lower.tail = TRUE) { # A modified copy from contributed R package evd # FUNCTION: # Check: stopifnot(min(scale) > 0) stopifnot(length(shape) == 1) # Probabilities: q = (q - location)/scale if (shape == 0) { p = exp(-exp(-q)) } else { p = exp(-pmax(1 + shape * q, 0)^(-1/shape)) } # Lower Tail: if (!lower.tail) { p = 1 - p } # Add Attribute: attr(p, "control") = data.frame(location = location[1], scale = scale[1], shape = shape[1], lower.tail = lower.tail, row.names = "") # Return Value: p } # ------------------------------------------------------------------------------ .qevd = function(p, location = 0, scale = 1, shape = 0, lower.tail = TRUE) { # A modified copy from contributed R package evd # FUNCTION: # Check: stopifnot(min(scale) > 0) stopifnot(length(shape) == 1) stopifnot(min(p, na.rm = TRUE) >= 0) stopifnot(max(p, na.rm = TRUE) <= 1) # Quantiles: if (!lower.tail) p = 1 - p if (shape == 0) { q = location - scale * log(-log(p)) } else { q = location + scale * ((-log(p))^(-shape) - 1)/shape } # Add Attribute: attr(q, "control") = data.frame(location = location[1], scale = scale[1], shape = shape[1], lower.tail, row.names = "") # Return Value: q } # ------------------------------------------------------------------------------ .revd = function(n, location = 0, scale = 1, shape = 0) { # A modified copy from contributed R package evd # FUNCTION: # Check: stopifnot(min(scale) > 0) stopifnot(length(shape) == 1) # Random Variates: if (shape == 0) { r = location - scale * log(rexp(n)) } else { r = location + scale * (rexp(n)^(-shape) - 1)/shape } # Add Attribute: attr(r, "control") = data.frame(location = location[1], scale = scale[1], shape = shape[1], row.names = "") # Return Value: r } ################################################################################ fExtremes/R/GpdSow.R0000644000176200001440000000441211645005146013746 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # Copyrights (C) # for this R-port: # 1999 - 2007, Diethelm Wuertz, GPL # Diethelm Wuertz # info@rmetrics.org # www.rmetrics.org # for the code accessed (or partly included) from other R-ports: # see R's copyright and license files # for the code accessed (or partly included) from contributed R-ports # and other sources # see Rmetrics's copyright file ################################################################################ # METHODS: PRINT, PLOT, AND SUMMARY: # show.fGPDFIT S4 Print Method for object of class "fGPDFIT" ################################################################################ setMethod("show", "fGPDFIT", function(object) { # A function implemented by Diethelm Wuertz # Description: # Print Method for an object of class 'gpdFit' # Arguments: # object - an object of class fGPDFIT # FUNCTION: # Title: cat("\nTitle:\n ", object@title, "\n") # Function Call: cat("\nCall:\n ") cat(paste(deparse(object@call), sep = "\n", collapse = "\n"), "\n", sep = "") # Estimation Type: cat("\nEstimation Method:\n ", object@method, "\n") # Estimated Parameters: cat("\nEstimated Parameters:\n") print(object@fit$par.ests) # Desription: cat("\nDescription\n ", object@description, "\n\n") # Return Value: invisible(object) }) # ------------------------------------------------------------------------------ ################################################################################ fExtremes/R/GevPrintPlotSummary.R0000644000176200001440000002222712323220004016504 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # METHODS: PRINT, PLOT, AND SUMMARY: # show.fGEVFIT S4 Show method for object of class "fGEVFIT" # plot.fGEVFIT S3 Plot method for object of class "fGEVFIT" # .gev1Plot Block Maxima Plot # .gev2Plot Scatterplot of Residuals # .gev3Plot Histogram of Residuals # .gev4Plot Quantile-Quantile Plot # summary.fGEVFIT S3 Summary Method for object of class "fGEVFIT" ################################################################################ setMethod("show", "fGEVFIT", function(object) { # A function implemented by Diethelm Wuertz # Description: # Print Method for an object of class "fGEVFIT". # Arguments: # object - an object of class fGEVFIT # FUNCTION: # Title: cat("\nTitle:\n" , object@title, "\n") # Function Call: cat("\nCall:\n ") cat(paste(deparse(object@call), sep = "\n", collapse = "\n"), "\n", sep = "") # Estimation Type: cat("\nEstimation Type:\n ", object@method, "\n") # Estimated Parameters: cat("\nEstimated Parameters:\n") print(object@fit$par.ests) # Desription: cat("\nDescription\n ", object@description, "\n\n") # Return Value: invisible(object) }) ################################################################################ plot.fGEVFIT = function(x, which = "ask", ...) { # A function implemented by Diethelm Wuertz # Description: # Plot method for an object of class "gevFit". # Arguments: # Details: # plot.gev: # Data are converted to unit exponentially distributed residuals # under null hypothesis that GEV fits. Two diagnostics for iid # exponential data are offered: # "Scatterplot of Residuals" and "QQplot of Residuals" # Example: # fit = gevFit(gevSim(), type = "mle", gumbel = FALSE) # par(mfrow = c(2, 2)); plot(fit) # par(mfrow = c(1, 1)); plot(fit, which = "ask") # # fit = gevFit(gevSim(), type = "mle", gumbel = TRUE) # par(mfrow = c(1, 1)); plot(fit, which = "ask") # # fit = gevFit(gevSim(), type = "pwm", gumbel = FALSE) # par(mfrow = c(1, 1)); plot(fit, which = "ask") # # fit = gevFit(gevSim(), type = "pwm", gumbel = TRUE) # par(mfrow = c(1, 1)); plot(fit, which = "ask") # FUNCTION: # Plot: interactivePlot( x = x, choices = c( "Block Maxima Plot", "Scatterplot of Residuals", "Histogram of Residuals", "Quantile Quantile Plot"), plotFUN = c( ".gev1Plot", ".gev2Plot", ".gev3Plot", ".gev4Plot"), which = which) # Return Value: invisible(x) } # ------------------------------------------------------------------------------ .gev1Plot = function(x, labels = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Time Series Plot of Block Maxima # Arguments: # x - an object of class "fGEVFIT" as returned by the # function gevFit # labels - a logical, should labels be added to the plot # ... - optional arguments passed to the function plot # Example: # .gev1Plot(gevFit(gevSim())) # FUNCTION: # Data: data = x@data$blockmaxima # Labels: if (labels) { main = "Block Maxima" xlab = "Index" ylab = "Data" } else { main = xlab = ylab = "" } # Plot: plot(data, type = "h", main = main, xlab = xlab, ylab = ylab, col = "steelblue", ...) # Add Grid: if (labels) grid() # Return Value: invisible() } # ------------------------------------------------------------------------------ .gev2Plot = function(x, labels = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Scatterplot of Residuals: # Arguments: # x - an object of class "fGEVFIT" as returned by the # function gevFit # labels - a logical, should labels be added to the plot # ... - optional arguments passed to the function plot # Example: # .gev2Plot(gevFit(gevSim())) # FUNCTION: # Data: residuals = x@residuals # Labels: if (labels) { main = "Scatterplot of Residuals" xlab = "Ordering" ylab = "Residuals" } else { main = xlab = ylab = "" } # Plot: plot(residuals, main = main, xlab = xlab, ylab = ylab, pch = 19, col = "steelblue", ...) lines(lowess(1:length(residuals), residuals), col = "brown") # Add Grid: if (labels) grid() # Return Value: invisible() } # ------------------------------------------------------------------------------ .gev3Plot = function(x, labels = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Histogram Plot of Residuals with Gaussian Fit: # Arguments: # x - an object of class "fGEVFIT" as returned by the # function gevFit # labels - a logical, should labels be added to the plot # ... - optional arguments passed to the function hist # Example: # .gev3Plot(gevFit(gevSim())) # FUNCTION: # Data: residuals = x@residuals # Labels: if (labels) { if (x@method[1] == "gev") { dist = "GEV" } else if (x@method[1] == "gum") { dist = "Gumbel" } main = paste(dist, "Residual Histogram") xlab = "Residuals" ylab = "Density" } else { main = xlab = ylab = "" } # Plot: hist(residuals, probability = TRUE, breaks = "FD", main = main, xlab = xlab, ylab = ylab, col = "steelblue", border = "white", ...) # Return Value: invisible() } # ------------------------------------------------------------------------------ .gev4Plot = function(x, labels = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Quantile-Quantile Plot: # Arguments: # x - an object of class "fGEVFIT" as returned by the # function gevFit # labels - a logical, should labels be added to the plot # ... - optional arguments passed to the function plot # Example: # .gev4Plot(gevFit(gevSim())) # FUNCTION: # Data: data = x@residuals sorted = sort(data) y <- qexp(ppoints(data)) # Labels: if (labels) { main = "QQ Plot of Residuals" xlab = "Ordered Data" ylab = "Exponential Quantiles" } else { main = xlab = ylab = "" } # Plot:ata, type = "h", plot(sorted, y, main = main, xlab = xlab, ylab = ylab, pch = 19, col = "steelblue", ...) abline(lsfit(sorted, y)) # Add Grid: if (labels) grid() # Return Value: invisible() } ################################################################################ summary.fGEVFIT = function(object, doplot = TRUE, which = "all", ...) { # A function implemented by Diethelm Wuertz # Description: # Summary method for an object of class "gevFit". # Arguments: # object - an object of class "fGEVFIT" as returned by the # function gevFit # doplot - a logical, should a plot be returned # which - which plot(s) should be returned # optional arguments passed to the function plot # Example: # fit = gevFit(gevSim(), type = "mle") # par(mfrow = c(2, 2)); summary(fit) # FUNCTION: # Title: cat("\nTitle:\n", object@title, "\n") # Function Call: cat("\nCall:\n ") cat(paste(deparse(object@call), sep = "\n", collapse = "\n"), "\n", sep = "") # Estimation Type: cat("\nEstimation Type:\n ", object@method, "\n") # Estimated Parameters: cat("\nEstimated Parameters:\n") print(object@fit$par.ests) # Summary: if (object@method[2] == "mle") { cat("\nStandard Deviations:\n "); print(object@fit$par.ses) cat("\nLog-Likelihood Value:\n ", object@fit$llh, "\n") cat("\nType of Convergence:\n ", object@fit$converged, "\n") } # Desription: cat("\nDescription\n ", object@description, "\n\n") # Plot: if (doplot) { plot(object, which = which, ...) } # Return Value: invisible(object) } ################################################################################ fExtremes/R/ExtremeIndex.R0000644000176200001440000004144612323220004015136 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # 'fTHETA' Class representation for extremal index # show.fTHETA S4: Print Method for extremal index # thetaSim Simulates a time series with known theta # FUNCTION: DESCRIPTION: # blockTheta Computes theta from Block Method # clusterTheta Computes theta from Reciprocal Cluster Method # runTheta Computes theta from Run Method # ferrosegersTheta Computes Theta according to Ferro and Seegers # FUNCTION: DESCRIPTION: # exindexesPlot Computes and Plot Theta(1,2,3) # exindexPlot Computes Theta(1,2) and Plot Theta(1) ################################################################################ setClass("fTHETA", representation( call = "call", data = "list", theta = "data.frame", title = "character", description = "character") ) # ------------------------------------------------------------------------------ setMethod("show", "fTHETA", function(object) { # A function implemented by Diethelm Wuertz # FUNCTION: # Unlike print the argument for show is 'object'. x = object # Title: cat("\nTitle:\n ", x@title, "\n", sep = "") # Call: cat("\nCall:\n ", deparse(x@call), "\n", sep = "") # Extremal Index: cat("\nExtremal Index:\n") print(object@theta) # Description: cat("\nDescription:\n ", x@description, sep = "") cat("\n\n") # Return Value: invisible() }) # ------------------------------------------------------------------------------ thetaSim = function(model = c("max", "pair"), n = 1000, theta = 0.5) { # A function implemented by Diethelm Wuertz # Description: # Simulates a time series with known theta # Arguments: # model - a character string denoting the model # "max" - Max Frechet Series # "pair" - Paired Exponential Series # FUNCTION: # Model Argument: model = match.arg(model) # Simulate: model = model[1] X = rep(0, n) if (model == "max") { # Frechet rvs: eps = 1/(-log(runif(n))) X[1] = theta*eps[1] for ( i in 2:n ) X[i] = max( (1-theta)*X[i-1], theta*eps[i] ) } else if (model == "pair") { theta = 0.5 eps = rexp(n+1) for ( i in 1:n ) X[i] = max(eps[i], eps[i+1]) } # As time series: X = as.ts(X) attr(X, "control") = c(model = model, theta = as.character(theta)) # Return Value: X } ################################################################################ blockTheta = function (x, block = 22, quantiles = seq(0.950, 0.995, length = 10), title = NULL, description = NULL) { # A function implemented by Diethelm Wuertz # Description: # Calculates theta from Block method, i.e. theta1. # Example: # blockTheta(thetaSim(n=10000)) # FUNCTION: # Check if block is numeric: stopifnot(is.numeric(block)) # Number of blocks and number of data points: X = as.vector(x) ordered = sort(X) k = floor(length(X)/block) n = k*block # Now organize your X: # 1) truncate the rest of the time series, # 2) arrange them in matrix form, # 3) sort them in reverse order, ie. from high (pos) to low (neg) X = matrix(X[1:(k*block)], ncol = block, byrow = TRUE) # Threshold values associated to quantiles: thresholds = ordered[floor(quantiles*length(X))] # Presettings: theta1 = rep(0, times = length(quantiles)) # Calculate Extremal Imdex: run = 0 keepK = keepN = NULL for ( u in thresholds ) { run = run + 1 # N # of exceedences | K # of blocks with exceedences: N = length(X[X > u]) K = floor(sum(sign(apply(X, 1, max) - u) + 1) / 2) if (K/k < 1) { theta1[run] = (k/n) * log(1-K/k) / log(1-N/n) } else { theta1[run] = NA } keepK = c(keepK, K) keepN = c(keepN, N) } # Theta Values: ans = data.frame(quantiles = quantiles, thresholds = thresholds, N = keepN, K = keepK, theta = theta1) # Add title and description: if (is.null(title)) title = "Extremal Index from Block Method" if (is.null(description)) description = description() # Return Value: new("fTHETA", call = match.call(), data = list(x = x, block = block), theta = ans, title = title, description = description) } # ------------------------------------------------------------------------------ clusterTheta = function (x, block = 22, quantiles = seq(0.950, 0.995, length = 10), title = NULL, description = NULL) { # A function implemented by Diethelm Wuertz # Description: # Calculates theta from Reciprocal Mean Cluster Size method, i.e. theta2. # Example: # clusterTheta(thetaSim(n=10000)) # FUNCTION: # Check if block is numeric: stopifnot(is.numeric(block)) # Number of blocks and number of data points: X = as.vector(x) ordered = sort(X) k = floor(length(X)/block) n = k*block # Now organize your X: # 1) truncate the rest of the time series, # 2) arrange them in matrix form, # 3) sort them in reverse order, ie. from high (pos) to low (neg) X = matrix(X[1:(k*block)], ncol = block, byrow = TRUE) # Threshold values associated to quantiles: thresholds = ordered[floor(quantiles*length(X))] # Presettings: theta2 = rep(0, times = length(quantiles)) # Calculate Extremal Imdex: run = 0 keepK = keepN = NULL for ( u in thresholds ) { run = run + 1 # N # of exceedences | K # of blocks with exceedences: N = length(X[X > u]) K = floor(sum(sign(apply(X, 1, max) - u) + 1) / 2) theta2[run] = K/N keepK = c(keepK, K) keepN = c(keepN, N) } # Theta Values: ans = data.frame(quantiles = quantiles, thresholds = thresholds, N = keepN, K = keepK, theta = theta2) # Add title and description: if (is.null(title)) title = "Extremal Index from Reciprocal Cluster Method" if (is.null(description)) description = description() # Return Value: new("fTHETA", call = match.call(), data = list(x = x, block = block), theta = ans, title = title, description = description) } # ------------------------------------------------------------------------------ runTheta = function (x, block = 22, quantiles = seq(0.950, 0.995, length = 10), title = NULL, description = NULL) { # A function implemented by Diethelm Wuertz # Description: # Calculates theta from Run method, i.e. theta3. # Example: # runTheta(thetaSim(n=10000)) # FUNCTION: # Check if block is numeric: stopifnot(is.numeric(block)) # Number of blocks and number of data points: X = as.vector(x) ordered = sort(X) k = floor(length(X)/block) n = k*block Count = 1:n # Now organize your X: # 1) truncate the rest of the time series, # 2) arrange them in matrix form, # 3) sort them in reverse order, ie. from high (pos) to low (neg) X = matrix(X[1:(k*block)], ncol = block, byrow = TRUE) # Threshold values associated to quantiles: thresholds = ordered[floor(quantiles*length(X))] # Presettings: theta3 = rep(0, times = length(quantiles)) # Calculate Extremal Imdex: run = 0 keepN = NULL for ( u in thresholds ) { run = run + 1 # N # of exceedences | K # of blocks with exceedences: N = length(X[X > u]) Y = diff(Count[X > u]) Y = Y[Y > block] theta3[run] = length(Y)/N keepN = c(keepN, N) } # Theta Values: ans = data.frame(quantiles = quantiles, thresholds = thresholds, N = keepN, theta = theta3) # Add title and description: if (is.null(title)) title = "Extremal Index from Run Method" if (is.null(description)) description = description() # Return Value: new("fTHETA", call = match.call(), data = list(x = x, block = block), theta = ans, title = title, description = description) } # ------------------------------------------------------------------------------ ferrosegersTheta = function (x, quantiles = seq(0.950, 0.995, length= 10), title = NULL, description = NULL) { # Description: # Estimates the extremal index based on the intervals estimator # due to Ferro and Segers (2003). # Note: # Adapted from function 'extremalindex' in contributed R-package # 'extRemes' written and maintained by ... # FUNCTION: # Settings: x = as.vector(x) n = length(x) N = floor(quantiles*n) sorted = sort(x) U = sorted[N] ans = NULL # Extremal Index: for ( u in U ) { msg = 0 id = x > u N = sum(id) S = (1:n)[id] TT = diff(S) if (!any(TT > 2)) { theta = 2*sum(TT, na.rm = TRUE)^2/((N-1) * sum(TT^2, na.rm = TRUE)) # msg = paste("theta.hat used because no values of T>2.") msg = msg + 1 if (theta > 1) { theta = 1 # msg = paste(msg, "Using theta = 1 because theta.hat > 1.", # sep = "\n") msg = msg + 10 } } else { theta = 2 * sum(TT-1, na.rm = TRUE)^2/((N-1) * sum((TT-1) * (TT-2), na.rm = TRUE)) # msg = paste("theta.tilde used because a value(s) exists of T>2.") msg = msg + 100 if (theta > 1) { theta = 1 # msg = paste(msg, "Using theta = 1 as theta.hat > 1.") msg = msg + 1000 } } K = ifelse(round(theta*N) != theta*N, floor(theta*N) + 1, theta*N) T.order = order(TT, na.last = TRUE, decreasing = TRUE) T.ranked = TT[T.order] T.K = T.ranked[K] if (sum(TT == T.K, na.rm = TRUE) > 1) { for (i in 1:K) { K = K - 1 T.K = T.ranked[K] if (sum(TT == T.K, na.rm = TRUE) > 1) { next } else { break } } } ans = rbind(ans, c(T.K, K, msg, theta)) } # Result: ans = data.frame(quantiles, U, ans) colnames(ans) = c("Threshold", "Quantiles", "RunLength", "Clusters", "messageNo", "theta") # Add title and description: if (is.null(title)) title = "Extremal Index from Ferro-Segers Method" if (is.null(description)) description = description() # Return Value: new("fTHETA", call = match.call(), data = list(x = x), theta = ans, title = title, description = description) } ################################################################################ exindexesPlot = function (x, block = 22, quantiles = seq(0.950, 0.995, length = 10), doplot = TRUE, labels = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Calculates and Plots Theta(1,2,3) for numeric block lengths # Areguments: # x - an univariate time series, or any other object which can be # transformed by the function as.vector into a numeric vector. # block - an integer value which denotes the length of the blocks. # quantiles - a numeric vector of quantile values. # doplot - alogical flag. Should a plot be produced? # Example: # exindexesPlot(as.timeSeries(data(bmwRet)), 20) # FUNCTION: # Settings: if (!is.numeric(block)) stop("Argument block must be an integer value.") doprint = FALSE # Block Size: blocklength = block # argument renamed # Note, in finance the x's should be residuals resid = as.vector(x) # Extremal Index - Theta_1, Theta_2 and Theta_3 k = floor(length(resid)/blocklength) # Number of blocks n = k*blocklength # Number of data points # Now organize your residuels: # 1) truncate the rest of the time series, # 2) arrange them in matrix form, # 3) sort them in reverse order, ie. from high (pos) to low (neg) resid1 = resid[1:(k*blocklength)] resid1 = matrix(resid1, ncol = blocklength, byrow = TRUE) ordered1 = sort(resid1) # Threshold values associated to quantiles: z0 = ordered1[floor(quantiles*length(resid1))] # Presettings: theta1 = theta2 = theta3 = rep(0, times = length(quantiles)) # Calculate Extremal Imdex: run = 0 for ( z in z0 ) { run = run + 1 # N - number of exceedences: N = length(resid1[resid1 > z]) # K - number of blocks with exceedences: # DW: floor() K = floor(sum(sign(apply(resid1, 1, max)-z)+1) / 2) if (K/k < 1) { theta1[run] = (k/n) * log(1-K/k) / log(1-N/n) } else { theta1[run] = NA } theta2[run] = K/N x = 1:n xx = diff(x[resid1 > z]) xx = xx[xx > blocklength] theta3[run] = length(xx)/N # Printing: if (doprint) { print(c(N, K, quantiles[run], z)) print(c(theta1[run], theta2[run], theta3[run])) } } # Plotting: if (doplot) { plot(quantiles, theta1, xlim = c(quantiles[1], quantiles[length(quantiles)]), ylim = c(0, 1.2), type = "b", pch = 1, xlab = "", ylab = "", main = "", ...) points(quantiles, theta2, pch = 2, col = 3) points(quantiles, theta3, pch = 4, col = 4) if (labels) { title(main = "Extremal Index") title(xlab = "Quantile", ylab = "Theta 1,2,3") mtext("Threshold", side = 3, line = 3) grid() mtext(text = paste("Blocklength: ", as.character(block)), adj = 0, side = 4, cex = 0.7) } } # Theta Values: ans = data.frame(quantiles = quantiles, thresholds = z0, theta1 = theta1, theta2 = theta2, theta3 = theta3) # Return Value: ans } # ------------------------------------------------------------------------------ exindexPlot = function(x, block = c("monthly", "quarterly"), start = 5, end = NA, doplot = TRUE, plottype = c("thresh", "K"), labels = TRUE, ...) { # Example: # exindexPlot(as.timeSeries(data(bmwRet)), 20) # exindexPlot(as.timeSeries(data(bmwRet)), "monthly") # exindexPlot(as.vector(as.timeSeries(data(bmwRet))), 20) # Settings: plottype = match.arg(plottype) reverse = FALSE if (plottype == "K") reverse = TRUE # Extremal Index - following A. McNeil: b.maxima = rev(sort(as.vector(blockMaxima(x, block)))) data = as.vector(x) sorted = rev(sort(data)) n = length(sorted) if (!is.numeric(block)) block = round(length(data)/length(b.maxima)) k = round(n/block) un = unique(b.maxima)[-1] K = match(un, b.maxima) - 1 N = match(un, sorted) - 1 if (is.na(end)) end = k cond = (K < end) & (K >= start) un = un[cond] K = K[cond] N = N[cond] theta2 = K/N theta = logb(1 - K/k)/(block * logb(1 - N/n)) ans = data.frame(N = N, K = K, un = un, theta2 = theta2, theta = theta) yrange = range(theta) index = K if (reverse) index = - K # Plot: if (doplot) { plot(index, theta, ylim = yrange, type = "b", xlab = "", ylab = "", axes = FALSE, ...) IDX = round(seq(1, length(index), length = 10)) axis(1, at = index[IDX], labels = paste(K)[IDX]) axis(2) axis(3, at = index[IDX], labels = paste(format(signif(un, 3)))[IDX]) box() if (labels) { ylabel = paste("theta (", k, " blocks of size ", block, ")", sep = "") title(xlab = "K", ylab = ylabel) mtext("Threshold", side = 3, line = 3) lines(index, theta, col = "steelblue") grid() mtext(text = paste("Blocklength: ", as.character(block)), adj = 0, side = 4, cex = 0.7) } } # Return Value: ans } ################################################################################ fExtremes/R/GpdDistribution.R0000644000176200001440000002640612323220004015646 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: GPD DISTRIBUTION FAMILY: # dgpd Density for the Generalized Pareto DF [USE FROM EVIS] # pgpd Probability for the Generalized Pareto DF # qgpd Quantiles for the Generalized Pareto DF # rgpd Random variates for the Generalized Pareto DF # FUNCTION: GPD MOMENTS: # gpdMoments Computes true statistics for GPD distribution # FUNCTION: GPD SLIDER: # gpdSlider Displays distribution and rvs for GPD distribution # FUNCTION: INTERNAL GPD DISTRIBUTION FAMILY: # .depd Density for the Generalized Pareto DF # .pepd Probability for the Generalized Pareto DF # .qepd Quantiles for the Generalized Pareto DF # .repd Random variates for the Generalized Pareto DF ################################################################################ dgpd <- function(x, xi = 1, mu = 0, beta = 1, log = FALSE) { # A function written by Diethelm Wuertz # Description: # Density for the Generalized Pareto DF # Arguments: # FUNCTION: # Transform: shape = xi location = mu scale = beta # Density: d = .depd(x, location, scale, shape, log) # Add Control: attr(d, "control") = data.frame(xi = xi, mu = mu, beta = beta[1], log = log, row.names = "") # Return Value: d } # ------------------------------------------------------------------------------ pgpd <- function(q, xi = 1, mu = 0, beta = 1, lower.tail = TRUE) { # A function written by Diethelm Wuertz # Description: # Probability for the Generalized Pareto DF # Arguments: # FUNCTION: # Transform: shape = xi location = mu scale = beta # Probability: p = .pepd(q, location, scale, shape, lower.tail) # Add Control: attr(p, "control") = data.frame(xi = xi, mu = mu, beta = beta[1], lower.tail = lower.tail, row.names = "") # Return Value: p } # ------------------------------------------------------------------------------ qgpd <- function(p, xi = 1, mu = 0, beta = 1, lower.tail = TRUE) { # A function written by Diethelm Wuertz # Description: # Quantiles for the Generalized Pareto DF # Arguments: # FUNCTION: # Transform: shape = xi location = mu scale = beta # Quantiles: q = .qepd(p, location, scale, shape, lower.tail) # Add Control: attr(q, "control") = data.frame(xi = xi, mu = mu, beta = beta[1], lower.tail = lower.tail, row.names = "") # Return Value: q } # ------------------------------------------------------------------------------ rgpd <- function(n, xi = 1, mu = 0, beta = 1) { # A function written by Diethelm Wuertz # Description: # Random variates for the Generalized Pareto DF # Arguments: # FUNCTION: # Transform: shape = xi location = mu scale = beta # Random Variates: r = .repd(n, location, scale, shape) # Add Control: attr(r, "control") = data.frame(xi = xi, mu = mu, beta = beta[1], row.names = "") # Return Value: r } # ------------------------------------------------------------------------------ gpdMoments <- function(xi = 1, mu = 0, beta = 1) { # A function implemented by Diethelm Wuertz # Description: # Compute true statistics for Generalized Pareto distribution # Arguments: # Value: # Returns true mean of Generalized Pareto distribution # for xi < 1 else NaN # Returns true variance of Generalized Pareto distribution # for xi < 1 else NaN # FUNCTION: # MEAN: Returns 1 for x <= 0 and -Inf's's else a = c(1, NaN, NaN) gpdMean = mu + beta/(1-xi)*a[sign(xi-1)+2] # VAR: Rreturns 1 for x <= 0 and -Inf's's else a = c(1, NaN, NaN) gpdVar = beta*beta/(1-xi)^2/(1-2*xi) * a[sign(2*xi-1)+2] # Result: param = c(xi = xi, mu = mu, beta = beta) ans = list(param = param, mean = gpdMean, var = gpdVar) # Return Value: ans } # ------------------------------------------------------------------------------ gpdSlider <- function(method = c("dist", "rvs")) { # A function implemented by Diethelm Wuertz # Description: # Displays distribution and rvs for GPD distribution # Arguments: # FUNCTION: # Settings: method = match.arg(method) # Internal Function: refresh.code = function(...) { # Sliders: N = .sliderMenu(no = 1) xi = .sliderMenu(no = 2) mu = .sliderMenu(no = 3) beta = .sliderMenu(no = 4) # Compute Data: pmin = 0.00 pmax = 0.99 xmin = round(qgpd(pmin, xi, mu, beta), digits = 2) xmax = round(qgpd(pmax, xi, mu, beta), digits = 2) s = seq(xmin, xmax, length = N) y1 = dgpd(s, xi, mu, beta) y2 = pgpd(s, xi, mu, beta) Moments = gpdMoments(xi, mu, beta) Mean = round(Moments$mean, 2) Var = round(Moments$var, 2) mText = paste("Mean =", Mean, " | Variance = ", Var) main1 = paste("GPD Density\n", "xi = ", as.character(xi), " | ", "mu = ", as.character(mu), " | ", "beta = ", as.character(beta) ) main2 = paste("GPD Probability\n", "xmin [0.00] = ", as.character(xmin), " | ", "xmax [0.99] = ", as.character(xmax) ) Median = qgpd(0.5, xi, mu, beta) # Frame: par(mfrow = c(2, 1), cex = 0.7) # Density: if (method == "rvs") { x = rgpd(N, xi, mu, beta) hist(x, probability = TRUE, col = "steelblue", border = "white", xlim = c(xmin, xmax), ylim = c(0, 1.1*max(y1)), main = main1, breaks = "FD" ) lines(s, y1, col = "orange") mtext(mText, side = 4, col = "grey", cex = 0.7) } else { plot(s, y1, type = "l", xlim = c(xmin, xmax), col = "steelblue") abline(h = 0, lty = 3) abline(v = Median, lty = 3, col = "red") abline(v = Mean, lty = 3, col = "darkgreen") title(main = main1) mtext(mText, side = 4, col = "grey", cex = 0.7) } # Probability: plot(s, y2, type = "l", xlim = c(xmin, xmax), ylim = c(0, 1), col = "steelblue" ) abline(h = 0, lty = 3) abline(h = 0.5, lty = 3, col = "red") abline(v = Median, lty = 3, col = "red") abline(v = Mean, lty = 3, col = "darkgreen") title(main = main2) mtext(mText, side = 4, col = "grey", cex = 0.7) # Reset Frame: par(mfrow = c(1, 1), cex = 0.7) } # Open Slider Menu: .sliderMenu(refresh.code, names = c( "N", "xi", "mu", "beta"), minima = c( 50, 0.00, -5.00, 0.10 ), maxima = c( 1000, 1.50, +5.00, 5.00 ), resolutions = c( 50, 0.01, 0.10, 0.10 ), starts = c( 500, 1.00, 0.00, 1.00 ) ) } ################################################################################ .depd <- function(x, location = 0, scale = 1, shape = 0, log = FALSE) { # Description: # Arguments: # FUNCTION: # Check: stopifnot(min(scale) > 0) stopifnot(length(shape) == 1) # Density: d <- (x - location)/scale nn <- length(d) scale <- rep(scale, length.out = nn) index <- (d > 0 & ((1 + shape * d) > 0)) | is.na(d) if (shape == 0) { d[index] <- log(1/scale[index]) - d[index] d[!index] <- -Inf } else { d[index] <- log(1/scale[index]) - (1/shape+1)*log(1+shape*d[index]) d[!index] <- -Inf } # Log: if (!log) d <- exp(d) # Add Control: attr(d, "control") = data.frame(location = location[1], scale = scale[1], shape = shape[1], log = log, row.names = "") # Return Value: d } # ------------------------------------------------------------------------------ .pepd <- function(q, location = 0, scale = 1, shape = 0, lower.tail = TRUE) { # Description: # Arguments: # FUNCTION: # Check: stopifnot(min(scale) > 0) stopifnot(length(shape) == 1) # Probability: q <- pmax(q - location, 0)/scale if (shape == 0) p <- 1 - exp(-q) else { p <- pmax(1 + shape * q, 0) p <- 1 - p^(-1/shape) } # Lower Tail: if (!lower.tail) p <- 1 - p # Add Control: attr(p, "control") = data.frame(location = location[1], scale = scale[1], shape = shape[1], lower.tail = lower.tail, row.names = "") # Return Value: p } # ------------------------------------------------------------------------------ .qepd <- function(p, location = 0, scale = 1, shape = 0, lower.tail = TRUE) { # Description: # Arguments: # FUNCTION: # Check: stopifnot(min(scale) > 0) stopifnot(length(shape) == 1) stopifnot(min(p, na.rm = TRUE) >= 0) stopifnot(max(p, na.rm = TRUE) <= 1) # Lower Tail: if (lower.tail) p <- 1 - p # Quantiles: if (shape == 0) { q = location - scale * log(p) } else { q = location + scale * (p^(-shape) - 1)/shape } # Add Control: attr(q, "control") = data.frame(location = location[1], scale = scale[1], shape = shape[1], lower.tail = lower.tail, row.names = "") # Return Value: q } # ------------------------------------------------------------------------------ .repd <- function(n, location = 0, scale = 1, shape = 0) { # Description: # Arguments: # FUNCTION: # Check: stopifnot(min(scale) > 0) stopifnot(length(shape) == 1) # Random Variates: if (shape == 0) { r = location + scale * rexp(n) } else { r = location + scale * (runif(n)^(-shape) - 1)/shape } # Add Control: attr(r, "control") = data.frame(location = location[1], scale = scale[1], shape = shape[1], row.names = "") # Return Value: r } ################################################################################fExtremes/R/GevSim.R0000644000176200001440000000475112323220004013725 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: GEV SIMULATION: # gevSim Simulates a GEV distributed process # gumbelSim Simulates a Gumbel distributed process ################################################################################ gevSim = function(model = list(xi = -0.25, mu = 0, beta = 1), n = 1000, seed = NULL) { # A function implemented by Diethelm Wuertz # Description: # Generates random variates from a GEV distribution # Arguments: # Examples: # gevSim(n = 100) # gevSim(n = 100, seed = 4711) # gevSim(model = list(xi = -0.15, mu = 0, beta = 0.02)) # FUNCTION: # Seed: if (is.null(seed)) seed = NA else set.seed(seed) # Simulate: ans = rgev(n = n, xi = model$xi, mu = model$mu, beta = model$beta) # DW: ans = as.ts(ans) ans = timeSeries(ans, units = "GEV") # Control: attr(ans, "control") = data.frame(t(unlist(model)), seed = seed, row.names = "control") # Return Value: ans } # ------------------------------------------------------------------------------ gumbelSim = function(model = list(mu = 0, beta = 1), n = 1000, seed = NULL) { # A function implemented by Diethelm Wuertz # Description: # Generates random variates from a GEV distribution # Arguments: # Examples: # gumbelSim(n = 100) # gumbelSim(n = 100, seed = 4711) # FUNCTION: # Simulate: ans = gevSim(model = list(xi = 0, mu = model$mu, beta = model$beta), n = n, seed = seed) colnames(ans) = "GUMBEL" # Return Value: ans } ################################################################################ fExtremes/R/GevMdaEstimation.R0000644000176200001440000004325513202325361015746 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: MDA ESTIMATORS: # hillPlot Plot Hill's estimator # shaparmPlot Pickands, Hill & Decker-Einmahl-deHaan Estimator # shaparmPickands Auxiliary function called by shaparmPlot # shaparmHill ... called by shaparmPlot # shaparmDehaan ... called by shaparmPlot ################################################################################ hillPlot = function(x, start = 15, ci = 0.95, doplot = TRUE, plottype = c("alpha", "xi"), labels = TRUE, ...) { # A function implemented by Diethelm Wuertz # Description: # Plots the results from the Hill Estimator. # Note: # Code partly adapted from R package evir # Examples: # par(mfrow = c(2, 2)) # hillPlot(gevSim(n=1000), plottype = "alpha") # hillPlot(gevSim(n=1000), plottype = "xi") # NYI: hillPlot(gevSim(n=1000), plottype = "alpha", reverse = TRUE) # NYI: hillPlot(gevSim(n=1000), plottype = "xi", reverse = TRUE) # hillPlot(gevSim(n=1000), plottype = "alpha", doplot = FALSE) # hillPlot(gevSim(n=1000), plottype = "xi", doplot = FALSE) # Check Type: stopifnot(NCOL(x)==1) x = as.vector(x) # Settings: reverse = FALSE option = match.arg(plottype) data = x # MDA: ordered = rev(sort(data)) ordered = ordered[ordered > 0] n = length(ordered) k = 1:n loggs = log(ordered) avesumlog = cumsum(loggs)/(1:n) xihat = c(NA, (avesumlog - loggs)[2:n]) y = switch(option, alpha = 1/xihat, xi = xihat) ses = y / sqrt(k) x = trunc(seq(from = min(n, length(data)), to = start)) y = y[x] qq <- qnorm(1 - (1 - ci)/2) u <- y + ses[x] * qq l <- y - ses[x] * qq yrange <- range(u, l) if (reverse) index = -x else index = x # Plot: if (doplot) { plot(index, y, ylim = yrange, type = "l", xlab = "", ylab = "", axes = FALSE, ...) pos = floor(seq(1, length(index), length = 10)) axis(1, at = index[pos], labels = paste(x[pos]), tick = TRUE) axis(2) threshold = signif(findThreshold(data, x), 3) axis(3, at = index[pos], labels = paste(format(threshold[pos])), tick = TRUE) box() lines(index, u, lty = 2, col = "steelblue") lines(index, l, lty = 2, col = "steelblue") if (labels) { title(xlab = "Order Statistics", ylab = option) mtext("Threshold", side = 3, line = 3) } } # Result: ans = list(x = index, y = y) control = data.frame(plottype = option[1], start = start, ci = ci, reverse = FALSE, row.names = "control") attr(ans, "control") = control # Return Value: if (doplot) return(invisible(ans)) else ans } # ------------------------------------------------------------------------------ shaparmPlot = function(x, p = 0.01*(1:10), xiRange = NULL, alphaRange = NULL, doplot = TRUE, plottype = c("both", "upper")) { # A function written by Diethelm Wuertz # Description: # Displays Pickands, Einmal-Decker-deHaan, and Hill estimators # Example: # par(mfcol=c(3,2)); shaparmPlot(as.timeSeries(data(daxRet))) # shaparmPlot(as.timeSeries(data(daxRet)), doplot = FALSE) # shaparmPlot(as.timeSeries(data(daxRet)), 0.005*(1:20)) # FUNCTION: # Settings: x = as.vector(x) tails = p if (is.null(xiRange)) xiRange = c(-0.5, 1.5) if (is.null(alphaRange)) alphaRange = c(0, 10) plottype = match.arg(plottype) if (plottype == "both") bothTails = TRUE else bothTails = FALSE # Median Plot: index = which.min(abs(tails-stats::median(tails))) DOPLOT = rep(FALSE, length(tails)) DOPLOT[index] = TRUE selected.tail = tails[index] if (!doplot) DOPLOT[index] = FALSE # Which estimator ? which = c(TRUE, TRUE, TRUE) # Settings: select.doplot = which ylim1 = xiRange ylim2 = alphaRange z = rep(mean(ylim2), length(tails)) ylim1 = xiRange ylim2 = alphaRange # Estimates: p1 = p2 = h1 = h2 = d1 = d2 = m1 = m2 = rep(0, length(tails)) for ( i in (1:length(tails)) ) { tail = tails[i] # Plotting Staff: if (select.doplot[1]) { xi = shaparmPickands(x, tail, ylim1, doplot = FALSE, plottype = plottype) p1[i] = xi$xi[1] p2[i] = xi$xi[3] } if (select.doplot[2]) { xi = shaparmHill(x, tail, ylim1, doplot = FALSE, plottype = plottype) h1[i] = xi$xi[1] h2[i] = xi$xi[3] } if (select.doplot[3]) { xi = shaparmDEHaan(x, tail, ylim1, doplot = FALSE, plottype = plottype) d1[i] = xi$xi[1] d2[i] = xi$xi[3] } } # Plot Pickands' Summary: if (select.doplot[1] & doplot) { plot (tails, z, type = "n", xlab = "tail depth", ylab = "alpha", ylim = ylim2, main = "Pickands Summary") grid() abline(v = selected.tail, lty = 3) y1 = 1/p1 x1 = tails [y1 > ylim2[1] & y1 < ylim2[2]] y1 = y1[y1 > ylim2[1] & y1 < ylim2[2]] points (x1, y1, col = "steelblue") lines(x1, y1, col = "steelblue") if (bothTails) { y1 = 1/p2 x1 = tails [y1 > ylim2[1] & y1 < ylim2[2]] y1 = y1 [y1 > ylim2[1] & y1 < ylim2[2]] points (x1, y1, col = "brown") lines(x1, y1, col = "brown") } } # Plot Hill Summary: if (select.doplot[2] & doplot) { plot (tails, z, type = "n", xlab = "tail depth", ylab = "alpha", ylim = ylim2, main = "Hill Summary") grid() abline(v = selected.tail, lty = 3) y1 = 1/h1 x1 = tails [y1 > ylim2[1] & y1 < ylim2[2]] y1 = y1 [y1 > ylim2[1] & y1 < ylim2[2]] points (x1, y1, col = "steelblue") lines(x1, y1, col = "steelblue") if (bothTails) { y1 = 1/h2 x1 = tails [y1 > ylim2[1] & y1 < ylim2[2]] y1 = y1 [y1 > ylim2[1] & y1 < ylim2[2]] points (x1, y1, col = "brown") lines(x1, y1, col = "brown") } } # Plot Deckers-Einmahl-deHaan Summary if (select.doplot[3] & doplot) { plot (tails, z, type = "n", xlab = "tail depth", ylab = "alpha", ylim = ylim2, main = "Deckers-Einmahl-deHaan Summary") grid() abline(v = selected.tail, lty = 3) y1 = 1/d1 x1 = tails [y1>ylim2[1] & y1ylim2[1] & y1 ylim2[1] & y1 < ylim2[2]] y1 = y1 [y1 > ylim2[1] & y1 < ylim2[2]] points (x1, y1, col = "brown") lines(x1, y1, col = "brown") } } # Plot Estimates: resultUpper = resultLower = NULL for ( i in (1:length(tails)) ) { tail = tails[i] # Plotting Staff: if (select.doplot[1]) { xi = shaparmPickands(x, tail, ylim1, doplot = DOPLOT[i], plottype = plottype) p1[i] = xi$xi[1] p2[i] = xi$xi[3] } if (select.doplot[2]) { xi = shaparmHill(x, tail, ylim1, doplot = DOPLOT[i], plottype = plottype) h1[i] = xi$xi[1] h2[i] = xi$xi[3] } if (select.doplot[3]) { xi = shaparmDEHaan(x, tail, ylim1, doplot = DOPLOT[i], plottype = plottype) d1[i] = xi$xi[1] d2[i] = xi$xi[3] } resultUpper = rbind(resultUpper, c(tails[i], p1[i], h1[i], d1[i])) if (bothTails) resultLower = rbind(resultLower, c(tails[i], p2[i], h2[i], d2[i])) } colnames(resultUpper) = c("Upper", "Pickands", "Hill", "DEHaan") resultUpper = data.frame(resultUpper) if (bothTails) { colnames(resultLower) = c("Lower", "Pickands", "Hill", "DEHaan") resultLower = data.frame(resultLower) } # Result: ans = list(Upper = resultUpper) if (bothTails) ans$Lower = resultLower # Return Value: if (doplot) return(invisible(ans)) else ans } # ------------------------------------------------------------------------------ shaparmPickands = function(x, p = 0.05, xiRange = NULL, doplot = TRUE, plottype = c("both", "upper"), labels = TRUE, ...) { # A function written by Diethelm Wuertz # FUNCTION: # Order Residuals: x = as.vector(x) tail = p if (is.null(xiRange)) xiRange = c(-0.5, 1.5) yrange = xiRange plottype = match.arg(plottype) if (plottype == "both") bothTails = TRUE else bothTails = FALSE ordered1 = rev(sort(abs(x[x < 0]))) if (bothTails) ordered2 = rev(sort(abs(x[x > 0]))) n1 = length(ordered1) if (bothTails) n2 = length(ordered2) ordered1 = ordered1[1:floor(tail*n1)] if (bothTails) ordered2 = ordered2[1:floor(tail*n2)] n1 = length(ordered1) if (bothTails) n2 = length(ordered2) # Pickands Estimate: k1 = 1:(n1%/%4) if (bothTails) k2 = 1:(n2%/%4) pickands1 = log ((c(ordered1[k1])-c(ordered1[2*k1])) / (c(ordered1[2*k1])-c(ordered1[4*k1]))) / log(2) if (bothTails) pickands2 = log ((c(ordered2[k2])-c(ordered2[2*k2])) / (c(ordered2[2*k2])-c(ordered2[4*k2]))) / log(2) # Prepare Plot: y1 = pickands1[pickands1 > yrange[1] & pickands1 < yrange[2]] x1 = log10(1:length(pickands1))[pickands1 > yrange[1] & pickands1 < yrange[2]] if (bothTails) { y2 = pickands2[pickands2 > yrange[1] & pickands2 < yrange[2]] x2 = log10(1:length(pickands2))[pickands2 > yrange[1] & pickands2 < yrange[2]] } # Labels: if (labels) { main = "Pickands Estimator" xlab = "log scale" ylab = "xi" } else { main = xlab = ylab = "" } # Plot: if (doplot) { par(err = -1) plot (x1, y1, xlab = xlab, ylab = ylab, ylim = yrange, main = main, type = "n") title(sub = paste("tail depth:", as.character(tail))) lines(x1, y1, type = "p", pch = 2, col = "steelblue") if (bothTails) lines(x2, y2, type = "p", pch = 6, col = "brown") if (labels) grid() } # Calculate invers "xi": my1 = mean(y1, na.rm = TRUE) if (bothTails) my2 = mean(y2, na.rm = TRUE) sy1 = sqrt(var(y1, na.rm = TRUE)) if (bothTails) sy2 = sqrt(var(y2, na.rm = TRUE)) # Plot: if (doplot) { par(err = -1) lines(c(x1[1], x1[length(x1)]), c(my1,my1), type = "l", lty = 1, col = "steelblue") if (bothTails) lines(c(x2[1], x2[length(x2)]), c(my2, my2), type = "l", lty = 1, col = "brown") } # Result: result = list(xi = c(my1, sy1)) if (bothTails) result = list(xi = c(my1, sy1, my2, sy2)) # Return Result: result } # ------------------------------------------------------------------------------ shaparmHill = function(x, p = 0.05, xiRange = NULL, doplot = TRUE, plottype = c("both", "upper"), labels = TRUE, ...) { # A Function written by Diethelm Wuertz # ORDER RESIDUALS: x = as.vector(x) tail = p if (is.null(xiRange)) xiRange = c(-0.5, 1.5) yrange = xiRange plottype = match.arg(plottype) if (plottype == "both") bothTails = TRUE else bothTails = FALSE ordered1 = rev(sort(abs(x[x < 0]))) if (bothTails) ordered2 = rev(sort(abs(x[x > 0]))) n1 = length(ordered1) if (bothTails) n2 = length(ordered2) ordered1 = ordered1[1:floor(tail*n1)] if (bothTails) ordered2 = ordered2[1:floor(tail*n2)] n1 = length(ordered1) if (bothTails) n2 = length(ordered2) # HILLS ESTIMATE: hills1 = c((cumsum(log(ordered1))/(1:n1)-log(ordered1))[2:n1]) if (bothTails) hills2 = c((cumsum(log(ordered2))/(1:n2) - log(ordered2))[2:n2]) # PREPARE PLOT: y1 = hills1[hills1 > yrange[1] & hills1 < yrange[2]] x1 = log10(1:length(hills1))[hills1 > yrange[1] & hills1 < yrange[2]] if (bothTails) { y2 = hills2[hills2 > yrange[1] & hills2 < yrange[2]] x2 = log10(1:length(hills2))[hills2 > yrange[1] & hills2 < yrange[2]] } # Labels: if (labels) { main = "Hill Estimator" xlab = "log scale" ylab = "xi" } else { main = xlab = ylab = "" } # Plot: if (doplot) { par(err = -1) plot (x1, y1, xlab = xlab, ylab = ylab, ylim = yrange, main = main, type="n") if (labels) title(sub = paste("tail depth:", as.character(tail))) lines(x1, y1, type = "p", pch = 2, col = "steelblue") if (bothTails) lines(x2, y2, type = "p", pch = 6, col = "brown") if (labels) grid() } # CALCULATE INVERSE XI: my1 = mean(y1, na.rm = TRUE) if (bothTails) my2 = mean(y2, na.rm = TRUE) sy1 = sqrt(var(y1, na.rm = TRUE)) if (bothTails) sy2 = sqrt(var(y2, na.rm = TRUE)) if (doplot) { par(err=-1) lines(c(x1[1], x1[length(x1)]), c(my1,my1), type="l", lty = 1, col = "steelblue") if (bothTails) lines(c(x2[1], x2[length(x2)]), c(my2,my2), type = "l",lty = 1, col = "brown") } # Result: result = list(xi = c(my1, sy1)) if (bothTails) result = list(xi = c(my1, sy1, my2, sy2)) # Return Result: result } # ------------------------------------------------------------------------------ shaparmDEHaan = function(x, p = 0.05, xiRange = NULL, doplot = TRUE, plottype = c("both", "upper"), labels = TRUE, ...) { # A function written by Diethelm Wuertz # ORDER RESIDUALS: x = as.vector(x) tail = p if (is.null(xiRange)) xiRange = c(-0.5, 1.5) yrange = xiRange plottype = match.arg(plottype) if (plottype == "both") bothTails = TRUE else bothTails = FALSE ordered1 = rev(sort(abs(x[x < 0]))) if (bothTails) ordered2 = rev(sort(abs(x[x > 0]))) n1 = length(ordered1) if (bothTails) n2 = length(ordered2) ordered1 = ordered1[1:floor(tail*n1)] if (bothTails) ordered2 = ordered2[1:floor(tail*n2)] n1 = length(ordered1) if (bothTails) n2 = length(ordered2) # DECKERS-EINMAHL-deHAAN ESTIMATE: ns0 = 1 n1m = n1-1; ns1 = ns0; ns1p = ns1+1 bod1 = c( cumsum(log(ordered1))[ns1:n1m]/(ns1:n1m) - log(ordered1)[ns1p:n1] ) bid1 = c( cumsum((log(ordered1))^2)[ns1:n1m]/(ns1:n1m) - 2*cumsum(log(ordered1))[ns1:n1m]*log(ordered1)[ns1p:n1]/(ns1:n1m) + ((log(ordered1))^2)[ns1p:n1] ) dehaan1 = ( 1.0 + bod1 + ( 0.5 / ( bod1^2/bid1 - 1 ) )) if (bothTails) { n2m = n2-1; ns2 = ns0; ns2p = ns2+1 bod2 = c( cumsum(log(ordered2))[ns2:n2m]/(ns2:n2m) - log(ordered2)[ns2p:n2] ) bid2 = c( cumsum((log(ordered2))^2)[ns2:n2m]/(ns2:n2m) - 2*cumsum(log(ordered2))[ns2:n2m]*log(ordered2)[ns2p:n2]/(ns2:n2m) + ((log(ordered2))^2)[ns2p:n2] ) dehaan2 = ( 1.0 + bod2 + ( 0.5 / ( bod2^2/bid2 - 1 ) )) } # PREPARE PLOT: y1 = dehaan1[dehaan1 > yrange[1] & dehaan1 < yrange[2]] x1 = log10(1:length(dehaan1))[dehaan1 > yrange[1] & dehaan1 < yrange[2]] if (bothTails) { y2 = dehaan2[dehaan2 > yrange[1] & dehaan2 < yrange[2]] x2 = log10(1:length(dehaan2))[dehaan2 > yrange[1] & dehaan2 < yrange[2]] } # Labels: if (labels) { main = "Deckers - Einmahl - de Haan Estimator" xlab = "log scale" ylab = "xi" } else { main = xlab = ylab = "" } # Plot: if (doplot) { par(err = -1) plot (x1, y1, xlab = xlab, ylab = ylab, ylim = yrange, main = main, type = "n") if (labels) title(sub = paste("tail depth:", as.character(tail))) lines(x1, y1, type = "p", pch = 2, col = "steelblue") if (bothTails) lines(x2, y2, type = "p", pch = 6, col = "brown") if (labels) grid() } # CALCULATE INVERSE XI: my1 = mean(y1, na.rm = TRUE) if (bothTails) my2 = mean(y2, na.rm = TRUE) sy1 = sqrt(var(y1, na.rm = TRUE)) if (bothTails) sy2 = sqrt(var(y2, na.rm = TRUE)) if (doplot) { par(err = -1) lines(c(x1[1], x1[length(x1)]), c(my1,my1), type = "l", lty = 1, col = "steelblue") if (bothTails) lines(c(x2[1], x2[length(x2)]), c(my2, my2), type = "l", lty = 1, col = "brown") } # Result: result = list(xi = c(my1, sy1)) if (bothTails) result = list(xi = c(my1, sy1, my2, sy2)) # Return Result: result } ################################################################################ fExtremes/R/meanExcessPlot.R0000644000176200001440000001061212323220004015456 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: MEAN EXCESS FUNCTION PLOT: # meanExcessPlot Plot mean excesses to a normal/nig/ght density ################################################################################ .meanExcessPlot <- function(x, labels = TRUE, title = FALSE, grid = TRUE, col = "steelblue", ...) { # A function implemented by Diethelm Wuertz # Description: # Plots and fits mean excess function # Arguments: # FUNCTION: # Common Range: DIM = NCOL(x) xRange = yRange = NULL for (i in 1:DIM) { xRange = c(xRange, range(mePlot(-scale(x[, i]), doplot = FALSE)[, 1], na.rm = TRUE)) yRange = c(yRange, range(mePlot(-scale(x[, i]), doplot = FALSE)[, 2], na.rm = TRUE)) } xLim = range(xRange) yLim = c(0, max(yRange)) xPos = min(xLim) + 0.075*diff(xLim) yPos = 0.05*diff(yLim) # Colors: if (length(col) == 1) col = rep(col, times = DIM) # Labels: if (title) { xlab = "Threshold" ylab = "Mean Excess" main = colnames(X) } else { xlab = ylab = main = "" } # Mean Excess: for (i in 1:DIM) { # Scale Tail of Series: X = -scale(x[, i]) if (labels) main = colnames(X) # Normal Fit: me = normMeanExcessFit(X, doplot = TRUE, trace = FALSE, lwd = 2, labels = FALSE, col = col[i], xlim = xLim, ylim = yLim, main = main, xlab = xlab, ylab = ylab, ...) normLLH = attr(me, "control")@fit$minimum if (grid) { grid(col = "darkgrey") } if (title) { mtext("Scaled Mean Excess", line = 0.5, cex = 0.7) } # Add 95% and 99% Sample Quantiles: abline(v = quantile(X, 0.95, type = 1), col = "darkgrey") abline(v = quantile(X, 0.99, type = 1), col = "darkgrey") # If Normality rejected, add NIG and GH Student-t: test = jbTest(X)@test$p.value[3] nigLLH = ghtLLH = -9.99e99 if (test == 0) { # NIG Fit: me = nigMeanExcessFit(X, doplot = FALSE, trace = FALSE) lines(me, col = "green", lwd = 2) nigLLH = attr(me, "control")@fit$minimum param = attr(me, "control")@fit$estimate abline(v = qnig(0.95, param[1], param[2], param[3], param[4]), col = "green") abline(v = qnig(0.99, param[1], param[2], param[3], param[4]), col = "green") # GH Student-t Fit: me = ghtMeanExcessFit(X, doplot = FALSE, trace = FALSE) lines(me, col = "red", lwd = 2) ghtLLH = attr(me, "control")@fit$minimum } # Finish: if (title) { LLH = c("NORM", "NIG", "GHT") colorsLLH = c("black", "green", "red") if (test == 0) { mText = paste( "logLLH: NORM = ", signif(normLLH, 5), " | NIG = ", signif(nigLLH, 5), " | GHT = ", signif(ghtLLH, 5), sep = "") mtext(mText, side = 4, adj = 0, col = "darkgrey", cex = 0.7) } else { mText = paste( "logLLH: NORM = ", signif(normLLH, 5), sep = "") mtext(mText, side = 4, adj = 0, col = "darkgrey", cex = 0.7) } indexLLH = which.max(c(normLLH, nigLLH, ghtLLH)) maxLLH = LLH[indexLLH] colLLH = colorsLLH[indexLLH] text(xPos, yPos, maxLLH, col = colLLH) } } # Return Value: invisible() } ################################################################################ fExtremes/R/GevFit.R0000644000176200001440000003166512323220004013723 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: GEV PARAMETER ESTIMATION: # 'fGEVFIT' S4 class representation # gevFit Fits parameters of GEV distribution # gumbelFit Fits parameters of Gumbel distribution # FUNCTION: FOR INTERNAL USE: # .gumpwmFit Fits Gumbel with probability weighted moments # .gevpwmFit Fits GEV with probability weighted moments # .gummleFit Fits Gumbel with max log-likelihood approach # .gumLLH Computes Gumbel log-likelihood function # .gevmleFit Fits GEV with max log-likelihood approach # .gevLLH Computes GEV log-likelihood function ################################################################################ setClass("fGEVFIT", representation( call = "call", method = "character", parameter = "list", data = "list", fit = "list", residuals = "numeric", title = "character", description = "character" ) ) # ------------------------------------------------------------------------------ gevFit = function(x, block = 1, type = c("mle", "pwm"), title = NULL, description = NULL, ...) { # A function implemented by Diethelm Wuertz # Description: # Fits the parameters of GEV distribution # Arguments: # x - an object of class timeSeries # block - an integer value, the block size # type - a character string, which type of method should be used, # max log-likelihood estimation, "mle", or partial weighted # moments estimation, "pwm". # Examples: # gevFit(gevSim()) # par(mfrow = c(2,2)); summary(gevFit(gevSim())) # FUNCTION: # Match Call: call = match.call() # Match Arguments: type = match.arg(type) # Fit: ans = .gevFit(x = x, block = block, type = type, gumbel = FALSE, title = title, description = description, ...) ans@call = call # Return Value: ans } # ------------------------------------------------------------------------------ gumbelFit = function(x, block = 1, type = c("mle", "pwm"), title = NULL, description = NULL, ...) { # A function implemented by Diethelm Wuertz # Description: # Fits the parameters of Gumbel distribution # Arguments: # x - an object of class timeSeries # block - an integer value, the block size # type - a character string, which type of method should be used, # max log-likelihood estimation, "mle", or partial weighted # moments estimation, "pwm". # Examples: # gumbelFit(gumbelSim()) # par(mfrow = c(2,2)); summary(gumbelFit(gumbelSim())) # FUNCTION: # Match Call: call = match.call() # Match Arguments: type = match.arg(type) # Fit: ans = .gevFit(x = x, block = block, type = type, gumbel = TRUE, title = title, description = description, ...) ans@call = call # Return Value: ans } # ------------------------------------------------------------------------------ .gevFit = function(x, block = 1, type = c("mle", "pwm"), gumbel = FALSE, title = NULL, description = NULL, ...) { # A function implemented by Diethelm Wuertz # Description: # Fits parameters to a GEV distribution # Arguments: # x - a numeric vector of Block Maxima # Examples: # fit = gevFit(gevSim(), type = "mle", gumbel = FALSE); print(fit) # fit = gevFit(gevSim(), type = "pwm", gumbel = FALSE); print(fit) # fit = gevFit(gevSim(), type = "mle", gumbel = TRUE); print(fit) # fit = gevFit(gevSim(), type = "pwm", gumbel = TRUE); print(fit) # x = rnorm(500); block = 20; type="mle"; gumbel=FALSE # x = as.ts(rnorm(500)); block = 20; type = "mle"; gumbel = FALSE # x = dummyDailySeries(rnorm(500)); block = 20; type = "mle"; gumbel=FALSE # Note: # Argument named "method is already used for the selection # of the MLE optimization algorithm, therfore we use here # "type". # FUNCTION: # Match Call: call = match.call() # Match Arguments: type = match.arg(type) # Check Type and Convert: X = x xClass = class(x) x = as.timeSeries(x) stopifnot(isUnivariate(x)) # Block Maxima: if (is.numeric(block)) { if (block == 1) { blockmaxima = x Names = paste(1:dim(blockmaxima)[1]) } else { blockmaxima = blockMaxima(x, block, doplot = FALSE) Names = blockmaxima@recordIDs[, 3] } } else { blockmaxima = blockMaxima(x, block, doplot = FALSE) Names = rownames(series(blockmaxima)) } if (xClass == "numeric") { blockmaxima = as.vector(blockmaxima) names(blockmaxima) = Names } if (xClass == "ts") { blockmaxima = as.ts(blockmaxima) names(blockmaxima) = Names } x = as.vector(blockmaxima) # Estimate Parameters: if (gumbel) { # GUMBEL: Add Call and Type if (length(type) > 1) type = type # Probability Weighted Moment Estimation: if (type == "pwm") { fit = .gumpwmFit(data = x, ...) } # Maximum Log Likelihood Estimation: # Use Alexander McNeils EVIS from evir Package ... if (type == "mle") { fit = .gummleFit(data = x, ...) } } else { # GEV: Add Call and Type if (length(type) > 1) type = type # Probability Weighted Moment Estimation: if (type == "pwm") { fit = .gevpwmFit(data = x, ...) } # Maximum Log Likelihood Estimation: # Use Alexander McNeils EVIS from evir Package ... if (type == "mle") { fit = .gevmleFit(data = x, ...) } } class(fit) = "list" # Compute Residuals: if (gumbel) { # GUMBEL: xi = 0 beta = fit$par.ests["beta"] mu = fit$par.ests["mu"] residuals = exp( - exp( - (x - mu)/beta)) } else { # GEV: xi = fit$par.ests["xi"] beta = fit$par.ests["beta"] mu = fit$par.ests["mu"] residuals = (1 + (xi * (x - mu))/beta)^(-1/xi) } # Make Unique: fit$llh = fit$nllh.final # Add title and description: if (is.null(title)) { if (gumbel) { title = "Gumbel Parameter Estimation" } else { title = "GEV Parameter Estimation" } } if (is.null(description)) { description = as.character(date()) } # Add Counts to x: # Return Value: new("fGEVFIT", call = match.call(), method = c(if (gumbel) "gum" else "gev", type[1]), parameter = list(block = block, type = type[1], gumbel = gumbel), data = list(x = X, blockmaxima = blockmaxima), fit = fit, residuals = residuals, title = title, description = description) } # ------------------------------------------------------------------------------ .gumpwmFit = function(data, ...) { # A function implemented by Diethelm Wuertz # Description: # Arguments: # FUNCTION: # "Probability Weighted Moment" method. data = as.numeric(data) n = length(data) # Sample Moments: x = rev(sort(data)) lambda = c(mean(x), 0) for (i in 1:n) { weight = (n-i)/(n-1)/n lambda[2] = lambda[2] + weight*x[i] } # Calculate Parameters: xi = 0 beta = lambda[2]/log(2) mu = lambda[1] - 0.5772*beta # Output: fit = list( n = n, data = data, par.ests = c(mu = mu, beta = beta), par.ses = c(mu = NA, beta = NA), varcov = matrix(rep(NA, 4), 2, 2), converged = NA, nllh.final = NA, call = match.call(), selected = "pwm") class(fit) = "gev" # not gumbel! # Return Value: fit } # ------------------------------------------------------------------------------ .gevpwmFit = function(data, block = NA, ...) { # A function implemented by Diethelm Wuertz # Description: # Arguments: # FUNCTION: # Probability Weighted Moment method. data = as.numeric(data) n = length(data) # Internal Function: y = function(x, w0, w1, w2) { (3^x-1)/(2^x-1) - (3*w2 - w0)/(2*w1 - w0) } # Moments: nmom = 3 x = rev(sort(data)) moments = rep(0, nmom) moments[1] = mean(x) n = length(x) for (i in 1:n) { weight = 1/n for (j in 2:nmom) { weight = weight*(n-i-j+2)/(n-j+1) moments[j] = moments[j] + weight*x[i] } } w0 = moments[1] w1 = moments[2] w2 = moments[3] # Parameters: xi = uniroot(f = y, interval = c(-5,+5), w0 = w0, w1 = w1, w2 = w2)$root beta = (2*w1-w0)*xi / gamma(1-xi) / (2^xi-1) mu = w0 + beta*(1-gamma(1-xi))/xi # Output: fit = list( n = n, data = data, par.ests = c(xi = xi, mu = mu, beta = beta), par.ses = c(xi = NA, mu = NA, beta = NA), varcov = matrix(rep(NA, 9), 3, 3), converged = NA, nllh.final = NA, call = match.call(), selected = "pwm") class(fit) = "gev" # Return Value: fit } # ------------------------------------------------------------------------------ .gummleFit = function(data, block = NA, ...) { # A copy from evir # Description: # Arguments: # FUNCTION: # Data: data = as.numeric(data) n = length(data) # Generate EVIR Start Values: # beta0 = sqrt(6 * var(data))/pi # mu0 = mean(data) - 0.57722 * beta0 # theta = c(mu = mu0, beta = beta0) # We use PWM Start Values: theta = .gumpwmFit(data)$par.ests # Fit: fit = optim(theta, .gumLLH, hessian = TRUE, ..., tmp = data) if( fit$convergence) warning("optimization may not have succeeded") par.ests = fit$par varcov = solve(fit$hessian) par.ses = sqrt(diag(varcov)) # Result: ans = list( n = n, data = data, par.ests = par.ests, par.ses = par.ses, varcov = varcov, converged = fit$convergence, nllh.final = fit$value) class(ans) = "gev" # Return Value: ans } # ------------------------------------------------------------------------------ .gumLLH = function(theta, tmp) { # A copy from evir # Description: # Arguments: # FUNCTION: # Gumbel Log-Likelihood: y = (tmp - theta[1])/theta[2] if(theta[2] < 0) { ans = 1.0e+6 } else { term1 = length(tmp) * logb(theta[2]) term2 = sum(y) term3 = sum(exp( - y)) ans = term1 + term2 + term3 } # Return Value: ans } # ------------------------------------------------------------------------------ .gevmleFit = function(data, block = NA, ...) { # A copy from evir # Description: # Arguments: # FUNCTION: # Data: data = as.numeric(data) n = length(data) # EVIR Start Values: beta0 = sqrt(6 * var(data))/pi mu0 = mean(data) - 0.57722 * beta0 xi0 = 0.1 # We use PWM Start Values: theta = .gevpwmFit(data)$par.ests # Fit: fit = optim(theta, .gevLLH, hessian = TRUE, ..., tmp = data) if (fit$convergence) warning("optimization may not have succeeded") par.ests = fit$par varcov = solve(fit$hessian) par.ses = sqrt(diag(varcov)) # Result: ans = list( n = n, data = data, par.ests = par.ests, par.ses = par.ses, varcov = varcov, converged = fit$convergence, nllh.final = fit$value) class(ans) = "gev" # Return Value: ans } # ------------------------------------------------------------------------------ .gevLLH = function(theta, tmp) { # A copy from evir # Description: # Computes log-likelihood for GEV distribution # Arguments: # FUNCTION: # GEV Log-likelihood: y = 1 + (theta[1] * (tmp - theta[2]))/theta[3] if((theta[3] < 0) || (min(y) < 0)) { ans = 1e+06 } else { term1 = length(tmp) * logb(theta[3]) term2 = sum((1 + 1/theta[1]) * logb(y)) term3 = sum(y^(-1/theta[1])) ans = term1 + term2 + term3 } # Return Value: ans } ################################################################################ fExtremes/R/ValueAtRisk.R0000644000176200001440000000645512323220004014730 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION: DESCRIPTION: # VaR Computes Value-at-Risk # CVaR Computes Conditional Value-at-Risk ################################################################################ VaR = function(x, alpha = 0.05, type = "sample", tail = c("lower", "upper")) { # A function implemented by Diethelm Wuertz # Description: # Computes Value-at-Risk # Arguments: # x - an uni- or multivariate timeSeries object # alpha - a numeric value, the confidence interval # type - a character string, the type to calculate the value-at-risk # tail - a character string denoting which tail will be # considered, either \code{"lower"} or \code{"upper"}. # If \code{tail="lower"}, then alpha will be converted to # \code{alpha=1-alpha}. # FUNCTION: # Settings: x = as.matrix(x) tail = match.arg(tail) # Value-at-Risk: if (type == "sample") { if (tail == "upper") alpha = 1-alpha # Important: use type=1 ! VaR = quantile(x, probs = alpha, type = 1) } else if (type == "gpd") { VaR = "Not yet Implemented" } else if (type == "obre") { VaR = "Not yet Implemented" } # Return Value: VaR } # ------------------------------------------------------------------------------ CVaR = function(x, alpha = 0.05, type = "sample", tail = c("lower", "upper")) { # A function implemented by Diethelm Wuertz # Description: # Computes Conditional Value-at-Risk # Arguments: # x - an uni- or multivariate timeSeries object # alpha - a numeric value, the confidence interval # type - a character string, the type to calculate the value-at-risk # tail - a character string denoting which tail will be considered, # either "lower" or upper", if tail="lower", then alpha will be # converted to alpha=1-alpha. # FUNCTION: # Settings: x = as.matrix(x) tail = match.arg(tail) # Sample VaR: VaR = VaR(x, alpha, type, tail) # Sample CVaR: if (tail == "upper") alpha = 1-alpha if (type == "sample") { CVaR = NULL for (i in 1:ncol(x)) { X = as.vector(x[, i]) CVaR = c(CVaR, VaR[i] - 0.5 * mean(((VaR[i]-X) + abs(VaR[i]-X))) / alpha ) } } # Return Value: CVaR } ################################################################################ fExtremes/R/zzz.R0000644000176200001440000000355513202323736013406 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ .onAttach <- function(libname, pkgname) { # do whatever needs to be done when the package is loaded # some people use it to bombard users with # messages using # packageStartupMessage( "\n" ) # packageStartupMessage( "Rmetrics Package fExtremes" ) # packageStartupMessage( "Modelling Extremes in Finance" ) # packageStartupMessage( "Copyright (C) 2005-2014 Rmetrics Association Zurich" ) # packageStartupMessage( "Educational Software for Financial Engineering and Computational Science" ) # packageStartupMessage( "Rmetrics is free software and comes with ABSOLUTELY NO WARRANTY." ) # packageStartupMessage( "https://www.rmetrics.org --- Mail to: info@rmetrics.org" ) # # packageStartupMessage("Documentation: www.rmetrics.org/ebooks-portfolio" ) # # packageStartupMessage("Rmetrics User/Developer Workshop and Summer School 2012\n" ) # # packageStartupMessage(" June 24-28, 2012 - Meielisalp, Lake Thune, Switzerland\n\n" ) } ################################################################################ fExtremes/R/DataPreprocessing.R0000644000176200001440000002111512323220004016141 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # FUNCTION? DESCRIPTION: # blockMaxima Returns block maxima from a time series # findThreshold Upper threshold for a given number of extremes # pointProcess Returns peaks over a threshold from a time series # deCluster Declusters a point process ################################################################################ blockMaxima <- function (x, block = c("monthly", "quarterly"), doplot = FALSE) { # A function implemented by Diethelm Wuertz # Description: # Compute block maxima from a time series or numeric vector # Arguments: # x - an univariate 'timeSeries' object or any other object # which can be coerced in a numeric vector by the function # as.vector(). # block - block size, either a "monthl" or "quarterly" # calendrical block, or an integer value, specifying the # length of the block. # Note: # This function was implemented for daily recorded data sets. # Example: # data(bmwRet) # blockMaxima(bmwRet, 200) # data(bmwRet); x = bmwRet[5100:5280, ]; x; block = "monthly" # FUNCTION: # Check Type: if (class(x) == "timeSeries") { stopifnot(isUnivariate(x)) } else { x = as.vector(x) stopifnot(is.numeric(block[1])) } # Maxima: if (is.numeric(block[1])) { block = block[1] } else { block = match.arg(block) } if (is(x, "timeSeries")) { if (is.numeric(block)) { from = blockStart(time(x), block = block) to = blockEnd(time(x), block = block) } else if (block == "monthly") { from = unique(timeFirstDayInMonth(time(x))) to = unique(timeLastDayInMonth(time(x))) } else if (block == "quarterly") { from = unique(timeFirstDayInQuarter(time(x))) to = unique(timeLastDayInQuarter(time(x))) } else { stop("Unknown block size for timeSeries Object") } maxValue = applySeries(x, from, to, FUN = max) maxIndex = as.matrix(applySeries(x, from, to, FUN = which.max)) toIndex = as.matrix(applySeries(x, from, to, FUN = length)) # maxPosition = rownames(series(x))[cumsum(toIndex)-toIndex+maxIndex-1] maxPosition = rownames(series(x))[cumsum(toIndex)-toIndex+maxIndex] # Add Attributes: Update rownames, colnames and recordIDs rownames(maxValue) <- as.character(maxPosition) colnames(maxValue) <- paste("max.", x@units, sep = "") maxValue@recordIDs = data.frame( from = as.character(from), to = as.character(to), cumsum(toIndex)-toIndex+maxIndex ) } else { if (is.numeric(block)) { data = as.vector(x) nblocks = (length(data) %/% block) + 1 grouping = rep(1:nblocks, rep(block, nblocks))[1:length(data)] maxValue = as.vector(tapply(data, grouping, FUN = max)) maxIndex = as.vector(tapply(as.vector(data), grouping, FUN = which.max)) names(maxValue) = paste(maxIndex) } else { stop("For non-timeSeries Objects blocks must be numeric") } } if (doplot) { plot(maxValue, type = "h", col = "steelblue", main = "Block Maxima") grid() } # Return Value: maxValue } # ------------------------------------------------------------------------------ findThreshold = function(x, n = floor(0.05*length(as.vector(x))), doplot = FALSE) { # A function implemented by Diethelm Wuertz # Description: # Upper threshold for a given number of extremes # Arguments: # x - an univariate 'timeSeries' object or any other object # which can be coerced in a numeric vector by the function # as.vector(). # n - a numeric value giving number of extremes # above the threshold, by default 5%. # Example: # findThreshold(x = as.timeSeries(data(bmwRet)), # n = floor(c(0.05, 0.10)*length(as.vector(x)))) # FUNCTION: # Check Type: if (class(x) == "timeSeries") { stopifnot(isUnivariate(x)) } else { x = as.vector(x) } # Threshold: X = rev(sort(as.vector(x))) thresholds = unique(X) indices = match(X[n], thresholds) indices = pmin(indices + 1, length(thresholds)) # Result: ans = thresholds[indices] names(ans) = paste("n=", as.character(n), sep = "") # Plot: if (doplot) { plot(x, type = "h", col = "steelblue", main = "Threshold Value") grid() rug(as.vector(x), ticksize = 0.01, side = 4) for (u in ans) abline (h = u, lty = 3, col = "red") } # Return Value: ans } # ------------------------------------------------------------------------------ pointProcess = function(x, u = quantile(x, 0.95), doplot = FALSE) { # A function implemented by Diethelm Wuertz # Description: # Returns peaks over a threshold from a time series # Arguments: # x - an univariate 'timeSeries' object or any other object # which can be coerced in a numeric vector by the function # as.vector(). # u - threshold value # Examples: # pointProcess(as.timeSeries(data(daxRet))) # Point Process: CLASS = class(x) if (CLASS == "timeSeries") { stopifnot(isUnivariate(x)) X = x[x > u,] } else { X = as.vector(x) X = X[X > u] N = length(x) IDX = (1:N)[x > u] attr(X, "index") <- IDX } # Plot: if (doplot) { if (CLASS == "timeSeries") { plot(X, type = "h", xlab = "Series") } else { plot(IDX, X, type = "h", xlab = "Series") } mText = paste("Threshold =", u, "| N =", length(as.vector(X))) mtext(mText, side = 4, cex = 0.7, col = "grey") abline(h = u, lty = 3, col = "red") title(main = "Point Process") grid() } # Return Value: X } # ------------------------------------------------------------------------------ deCluster = function(x, run = 20, doplot = TRUE) { # A function implemented by Diethelm Wuertz # Description: # Decluster a Point Process. # Arguments: # x - an univariate 'timeSeries' object # Example: # deCluster(pointProcess(as.timeSeries(daxRet))) # FUNCTION: # Check: stopifnot(class(x) == "timeSeries") stopifnot(isUnivariate(x)) # Decluster time Series: positions = time(x) data = series(x) gapLengths = c(0, diff(positions)) # / (24*3600) clusterNumbers = cumsum(gapLengths > run) + 1 N = length(data) fromIndex = (1:N)[c(1, diff(clusterNumbers)) == 1] toIndex = c(fromIndex[-1]-1, N) from = positions[fromIndex] to = positions[toIndex] # Maximum Values: maxValue = applySeries(x, from, to, FUN = max) maxIndex = as.matrix(applySeries(x, from, to, FUN = which.max)) lengthIndex = as.matrix(applySeries(x, from, to, FUN = length)) maxPosition = rownames(series(x))[cumsum(lengthIndex)-lengthIndex+maxIndex] # Add Attributes: Update rownames, colnames and recordIDs rownames(maxValue) = rownames(maxValue) = as.character(maxPosition) colnames(maxValue) = colnames(maxValue) = paste("max.", x@units, sep = "") maxValue@recordIDs = data.frame( from = as.character(from), to = as.character(to) ) # Plot: if (doplot) { plot(maxValue, type = "h", xlab = "Series") title(main = "Declustered Point Process") mText = paste("Run Length =", run, "| N =", length(as.vector(maxValue))) mtext(mText, side = 4, cex = 0.7, col = "grey") abline(h = min(as.vector(maxValue)), lty = 3, col = "red") grid() } # Return Value: maxValue } ################################################################################ fExtremes/R/GpdSummary.R0000644000176200001440000000440712323220004014621 0ustar liggesusers # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU Library General # Public License along with this library; if not, write to the # Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA ################################################################################ # METHODS: PRINT, PLOT, AND SUMMARY: # summary.fGPDFIT S3 Summary Method for object of class "fGPDFIT" ################################################################################ summary.fGPDFIT = function(object, doplot = TRUE, which = "all", ...) { # A function written by Diethelm Wuertz # Description: # Summary method for objects of class "gpdFit" # Arguments: # FUNCTION: # Title: cat("\nTitle:\n" , object@title, "\n") # Function Call: cat("\nCall:\n") cat(paste(deparse(object@call), sep = "\n", collapse = "\n"), "\n", sep = "") # Estimation Type: cat("\nEstimation Type:\n ", object@method, "\n") # Estimated Parameters: cat("\nEstimated Parameters:\n") print(object@fit$par.ests) # Summary - For MLE print additionally: if (object@method[2] == "mle") { cat("\nStandard Deviations:\n"); print(object@fit$par.ses) if (!is.na(object@fit$llh)) cat("\nLog-Likelihood Value:\n ", object@fit$llh, "\n") if (!is.na(object@fit$convergence)) cat("\nType of Convergence:\n ", object@fit$convergence, "\n") } # Plot: if (doplot) { plot(object, which = which, ...) } # Desription: cat("\nDescription\n ", object@description, "\n\n") # Return Value: invisible(object) } ################################################################################ fExtremes/MD50000644000176200001440000000560713203520003012520 0ustar liggesusers8f23146c12b8b6957d6b2ddbc2ee30c3 *ChangeLog 0ba152f26445dbe7cd65b4a2f60ad8da *DESCRIPTION f4b3f22b776f1bfe7de2a986067df082 *NAMESPACE b0496cc5388d91d3b6135eb66a1965d1 *R/DataPreprocessing.R 14d35601f9078cd7b60b3b0e83dbfa25 *R/ExtremeIndex.R 110122200f4fece7acd844e27248a8dc *R/ExtremesData.R 6a13bc0742419999232390871e92d301 *R/GevDistribution.R c31e7ed7d662bc6510ce3767599d58d3 *R/GevFit.R 723138ddd14a272c6c6eb03cf4cca5de *R/GevMdaEstimation.R a975cde7990002133728f0876b3a55cc *R/GevPrintPlotSummary.R 5dcce906ce1c4e794f48fb775414b0dd *R/GevRisk.R 5ad9f923fa3a6d9d22990ee93a51d251 *R/GevSim.R 512ce05b3576ca3abedf8ca2dd55b4f2 *R/GpdDistribution.R 7ec085102d4bf59dadf279a1ec57545e *R/GpdFit.R c2de8f0daa283e46cded29f6752561b1 *R/GpdPlot.R 4bdc9bdc1763fc063c768e5f73772218 *R/GpdRisk.R 1386d919c59b76dc9ec8ffab0eb3acc8 *R/GpdShow.R b790b17afe8a9fc642263d9d226723c7 *R/GpdSim.R 11aba9bc6b7051e535c17b1629559dc1 *R/GpdSow.R b6206c9cc78ddff7436b9459439ae685 *R/GpdSummary.R e81042f54d1f4c298106257d88956273 *R/MeanExcessFit.R c3478f0ebc1fbeefce8fcd39d9a6933d *R/ValueAtRisk.R 2717fc29227f4154e68b1baf36c2fe3c *R/meanExcessPlot.R e3faa8aba12c0b0d6a1e64c39ff3095b *R/metrics.R 1e141bc51586b3c49fea4c3627dd4034 *R/zzz.R 1ee0fad00bab85f51ec7945e1d5ce861 *data/bmwRet.csv 9666f10bfd745b92382bacc25f0a6e5f *data/danishClaims.csv 6042b9c5e5bec3ecc1b6959cd2858b64 *inst/COPYRIGHT.html e278deadbe366f8e25fb878bf5c05c7c *inst/unitTests/Makefile ef6862244177aa0c9690e037b2823bbd *inst/unitTests/runTests.R f0e530000f96bc971e3fb89a25272c17 *inst/unitTests/runit.DataPreprocessing.R 3d8fa2217c7cdf803edc8cb3f531ad9c *inst/unitTests/runit.ExtremeIndex.R 5c4d0101ecf88db0530fd53f5c2f7b32 *inst/unitTests/runit.ExtremesData.R df54978979460d89018b2c7e8d9ed82e *inst/unitTests/runit.GevDistribution.R aeed009908a914715e5d4947d8c4e098 *inst/unitTests/runit.GevMdaEstimation.R 2cb05c2f27012611715b74e9daf89ba0 *inst/unitTests/runit.GevModelling.R 553d134fc982fe578b1c4013b728a50e *inst/unitTests/runit.GevRisk.R 9f0952a7794071690346f36d017c8c7f *inst/unitTests/runit.GpdDistribution.R 9ccbeecb2cd8580869caac1b8dae64c6 *inst/unitTests/runit.GpdModelling.R 69a26b861bd2d71074818864bd74029a *inst/unitTests/runit.GpdRisk.R 63e7f709080902a953c5eafd95f4ec8b *man/00Extremes-package.Rd e6e5619fd05d40ead76567d3db8c6afc *man/DataPreprocessing.Rd 889ac9f50477b81bd1e5f26e54f08e47 *man/ExtremeIndex.Rd 053bd8de255d74a0c1dfd70121968a33 *man/ExtremesData.Rd 92957faa1992251453a248bca84052bc *man/GevDistribution.Rd 45054a04d74c5dc6bb8fe4d063716779 *man/GevMdaEstimation.Rd 2cb16bcd6748e1b232bde82f6dc7ae0a *man/GevModelling.Rd ba2f4fb3503eca13e674108cfe8634f3 *man/GevRisk.Rd bf840a931840784b022298a7f530bc4c *man/GpdDistribution.Rd ece6d6aaabd8a777f0ccce399af7c7aa *man/GpdModelling.Rd 1828c67556c2c7ebf111064d91126782 *man/GpdRisk.Rd 79605e94b04f8ac2e743bd30d4d44e58 *man/ValueAtRisk.Rd 246ce117b00d8707bef1634cb9768a5a *man/data.Rd ca566e590ec30abd0718c5375e1a446f *tests/doRUnit.R fExtremes/DESCRIPTION0000644000176200001440000000154513203520003013713 0ustar liggesusersPackage: fExtremes Title: Rmetrics - Modelling Extreme Events in Finance Date: 2017-11-12 Version: 3042.82 Author: Diethelm Wuertz [aut], Tobias Setz [cre], Yohan Chalabi [ctb] Maintainer: Tobias Setz Description: Provides functions for analysing and modelling extreme events in financial time Series. The topics include: (i) data pre-processing, (ii) explorative data analysis, (iii) peak over threshold modelling, (iv) block maxima modelling, (v) estimation of VaR and CVaR, and (vi) the computation of the extreme index. Depends: R (>= 2.15.1), timeDate, timeSeries, fBasics, fGarch Imports: methods, graphics, stats Suggests: RUnit, tcltk LazyData: yes License: GPL (>= 2) URL: http://www.rmetrics.org NeedsCompilation: no Packaged: 2017-11-17 06:59:49 UTC; Tobias Setz Repository: CRAN Date/Publication: 2017-11-17 08:38:27 UTC fExtremes/ChangeLog0000644000176200001440000000363612212357012013771 0ustar liggesusers2013-04-30 chalabi * DESCRIPTION, inst/unitTests/runit.GevModelling.R: Updating unit tests 2013-04-02 chalabi * R/zzz.R: removed .First.lib() * ChangeLog, DESCRIPTION: Updated ChangeLog and DESC files * DESCRIPTION: Updated version number. * inst/unitTests/runit.GevModelling.R: Updated unit test to avoid troubles when running in the last two days of the month as reported by Brian Ripley. 2012-12-01 chalabi * ChangeLog, DESCRIPTION: Updated ChangeLog and DESCRIPTION files. 2012-11-30 chalabi * DESCRIPTION: Updated version number. * NAMESPACE: Added NAMESPACE * DESCRIPTION: Updated maintainer field. * R/ExtremeIndex.R, R/GevMdaEstimation.R, R/GpdRisk.R: Fixed partial argument match. * inst/unitTests/runit.GevModelling.R: Updated unit test to avoid troubles when running in the last two days of the month as reported by Brian Ripley. 2011-09-23 mmaechler * DESCRIPTION: remove deprecated "LazyLoad" entry 2010-07-23 chalabi * inst/DocCopying.pdf: removed DocCopying.pdf license is already specified in DESCRIPTION file 2009-10-01 chalabi * DESCRIPTION: updated version number 2009-09-29 chalabi * ChangeLog, DESCRIPTION: updated DESC and ChangeLog 2009-05-21 chalabi * R/GevFit.R: assignment beta = fit$par.ests["xi"] should read : beta = fit$par.ests["beta"]. (Dodzi Attimu) 2009-04-09 wuertz * R/DataPreprocessing.R, R/GevDistribution.R, R/GevFit.R, R/GevPrintPlotSummary.R, R/GevSim.R, R/GpdDistribution.R, R/GpdSim.R, R/GpdSow.R, R/MeanExcessFit.R, R/ValueAtRisk.R, man/DataPreprocessing.Rd, man/GevDistribution.Rd, man/GevModelling.Rd: The *Sim functions now return signal timeSeries, and some smaller beautifies 2009-04-02 chalabi * DESCRIPTION: more explicit depends and suggests field in DESC file. 2009-04-01 chalabi * DESCRIPTION: updated DESC file 2009-01-28 chalabi * man/ExtremeIndex.Rd: updated manual pages to new Rd parser fExtremes/man/0000755000176200001440000000000013203504345012766 5ustar liggesusersfExtremes/man/GpdModelling.Rd0000644000176200001440000002241312323220004015611 0ustar liggesusers\name{GpdModelling} \alias{GpdModelling} \alias{fGPDFIT} \alias{fGPDFIT-class} \alias{show,fGPDFIT-method} \alias{gpdSim} \alias{gpdFit} \alias{plot.fGPDFIT} \alias{summary.fGPDFIT} \title{GPD Distributions for Extreme Value Theory} \description{ A collection and description to functions to fit and to simulate processes that are generated from the generalized Pareto distribution. Two approaches for parameter estimation are provided: Maximum likelihood estimation and the probability weighted moment method. \cr The GPD modelling functions are: \tabular{ll}{ \code{gpdSim} \tab generates data from the GPD, \cr \code{gpdFit} \tab fits empirical or simulated data to the distribution, \cr \code{print} \tab print method for a fitted GPD object of class ..., \cr \code{plot} \tab plot method for a fitted GPD object, \cr \code{summary} \tab summary method for a fitted GPD object. } } \usage{ gpdSim(model = list(xi = 0.25, mu = 0, beta = 1), n = 1000, seed = NULL) gpdFit(x, u = quantile(x, 0.95), type = c("mle", "pwm"), information = c("observed", "expected"), title = NULL, description = NULL, \dots) \S4method{show}{fGPDFIT}(object) \method{plot}{fGPDFIT}(x, which = "ask", \dots) \method{summary}{fGPDFIT}(object, doplot = TRUE, which = "all", \dots) } \arguments{ \item{description}{ a character string which allows for a brief description. } \item{doplot}{ a logical. Should the results be plotted? } \item{information}{ whether standard errors should be calculated with \code{"observed"} or \code{"expected"} information. This only applies to the maximum likelihood method; for the probability-weighted moments method \code{"expected"} information is used if possible. } \item{model}{ [gpdSim] - \cr a list with components \code{shape}, \code{location} and \code{scale} giving the parameters of the GPD distribution. By default the shape parameter has the value 0.25, the location is zero and the scale is one.} \item{n}{ [rgpd][gpdSim\ - \cr the number of observations to be generated. } \item{object}{ [summary] - \cr a fitted object of class \code{"gpdFit"}. } \item{seed}{ [gpdSim] - \cr an integer value to set the seed for the random number generator. } \item{title}{ a character string which allows for a project title. } \item{type}{ a character string selecting the desired estimation mehtod, either \code{"mle"} for the maximum likelihood mehtod or \code{"pwm"} for the probability weighted moment method. By default, the first will be selected. Note, the function \code{gpd} uses \code{"ml"}. } \item{u}{ the threshold value. } \item{which}{ if \code{which} is set to \code{"ask"} the function will interactively ask which plot should be displayed. By default this value is set to \code{FALSE} and then those plots will be displayed for which the elements in the logical vector \code{which} ar set to \code{TRUE}; by default all four elements are set to \code{"all"}. } \item{x}{ [dgpd] - \cr a numeric vector of quantiles. \cr [gpdFit] - \cr the data vector. Note, there are two different names for the first argument \code{x} and \code{data} depending which function name is used, either \code{gpdFit} or the EVIS synonyme \code{gpd}. \cr [print][plot] - \cr a fitted object of class \code{"gpdFit"}. } \item{xi, mu, beta}{ \code{xi} is the shape parameter, \code{mu} the location parameter, and \code{beta} is the scale parameter. } \item{\dots}{ control parameters and plot parameters optionally passed to the optimization and/or plot function. Parameters for the optimization function are passed to components of the \code{control} argument of \code{optim}. } } \value{ \code{gpdSim} \cr returns a vector of datapoints from the simulated series. \code{gpdFit} \cr returns an object of class \code{"gpd"} describing the fit including parameter estimates and standard errors. \code{gpdQuantPlot} \cr returns invisible a table of results. \code{gpdShapePlot} \cr returns invisible a table of results. \code{gpdTailPlot} \cr returns invisible a list object containing details of the plot is returned invisibly. This object should be used as the first argument of \code{gpdqPlot} or \code{gpdsfallPlot} to add quantile estimates or expected shortfall estimates to the plot. } \details{ \bold{Generalized Pareto Distribution:} \cr\cr Compute density, distribution function, quantile function and generates random variates for the Generalized Pareto Distribution. \bold{Simulation:} \cr\cr \code{gpdSim} simulates data from a Generalized Pareto distribution. \cr \bold{Parameter Estimation:} \cr\cr \code{gpdFit} fits the model parameters either by the probability weighted moment method or the maxim log likelihood method. The function returns an object of class \code{"gpd"} representing the fit of a generalized Pareto model to excesses over a high threshold. The fitting functions use the probability weighted moment method, if method \code{method="pwm"} was selected, and the the general purpose optimization function \code{optim} when the maximum likelihood estimation, \code{method="mle"} or \code{method="ml"} is chosen. \cr \bold{Methods:} \cr\cr \code{print.gpd}, \code{plot.gpd} and \code{summary.gpd} are print, plot, and summary methods for a fitted object of class \code{gpdFit}. The plot method provides four different plots for assessing fitted GPD model. \cr \bold{gpd* Functions:} \cr\cr \code{gpdqPlot} calculates quantile estimates and confidence intervals for high quantiles above the threshold in a GPD analysis, and adds a graphical representation to an existing plot. The GPD approximation in the tail is used to estimate quantile. The \code{"wald"} method uses the observed Fisher information matrix to calculate confidence interval. The \code{"likelihood"} method reparametrizes the likelihood in terms of the unknown quantile and uses profile likelihood arguments to construct a confidence interval. \cr \code{gpdquantPlot} creates a plot showing how the estimate of a high quantile in the tail of a dataset based on the GPD approximation varies with threshold or number of extremes. For every model \code{gpdFit} is called. Evaluation may be slow. Confidence intervals by the Wald method may be fastest. \cr \code{gpdriskmeasures} makes a rapid calculation of point estimates of prescribed quantiles and expected shortfalls using the output of the function \code{gpdFit}. This function simply calculates point estimates and (at present) makes no attempt to calculate confidence intervals for the risk measures. If confidence levels are required use \code{gpdqPlot} and \code{gpdsfallPlot} which interact with graphs of the tail of a loss distribution and are much slower. \cr \code{gpdsfallPlot} calculates expected shortfall estimates, in other words tail conditional expectation and confidence intervals for high quantiles above the threshold in a GPD analysis. A graphical representation to an existing plot is added. Expected shortfall is the expected size of the loss, given that a particular quantile of the loss distribution is exceeded. The GPD approximation in the tail is used to estimate expected shortfall. The likelihood is reparametrised in terms of the unknown expected shortfall and profile likelihood arguments are used to construct a confidence interval. \cr \code{gpdshapePlot} creates a plot showing how the estimate of shape varies with threshold or number of extremes. For every model \code{gpdFit} is called. Evaluation may be slow. \cr \code{gpdtailPlot} produces a plot of the tail of the underlying distribution of the data. } \author{ Alec Stephenson for the functions from R's \code{evd} package, \cr Alec Stephenson for the functions from R's \code{evir} package, \cr Alexander McNeil for the EVIS functions underlying the \code{evir} package, \cr Diethelm Wuertz for this \R-port. } \references{ Embrechts, P., Klueppelberg, C., Mikosch, T. (1997); \emph{Modelling Extremal Events}, Springer. Hosking J.R.M., Wallis J.R., (1987); \emph{Parameter and quantile estimation for the generalized Pareto distribution}, Technometrics 29, 339--349. } \examples{ ## gpdSim - x = gpdSim(model = list(xi = 0.25, mu = 0, beta = 1), n = 1000) ## gpdFit - par(mfrow = c(2, 2), cex = 0.7) fit = gpdFit(x, u = min(x), type = "pwm") print(fit) summary(fit) } \keyword{distribution} fExtremes/man/GevMdaEstimation.Rd0000644000176200001440000002052711645005146016466 0ustar liggesusers\name{GevMdaEstimation} \alias{GevMdaEstimation} \alias{hillPlot} \alias{shaparmPlot} \alias{shaparmPickands} \alias{shaparmHill} \alias{shaparmDEHaan} \title{Generalized Extreme Value Modelling} \description{ A collection and description functions to estimate the parameters of the GEV distribution. To model the GEV three types of approaches for parameter estimation are provided: Maximum likelihood estimation, probability weighted moment method, and estimation by the MDA approach. MDA includes functions for the Pickands, Einmal-Decker-deHaan, and Hill estimators together with several plot variants. \cr Maximum Domain of Attraction estimators: \tabular{ll}{ \code{hillPlot} \tab shape parameter and Hill estimate of the tail index, \cr \code{shaparmPlot} \tab variation of shape parameter with tail depth. } } \usage{ hillPlot(x, start = 15, ci = 0.95, doplot = TRUE, plottype = c("alpha", "xi"), labels = TRUE, \dots) shaparmPlot(x, p = 0.01*(1:10), xiRange = NULL, alphaRange = NULL, doplot = TRUE, plottype = c("both", "upper")) shaparmPickands(x, p = 0.05, xiRange = NULL, doplot = TRUE, plottype = c("both", "upper"), labels = TRUE, \dots) shaparmHill(x, p = 0.05, xiRange = NULL, doplot = TRUE, plottype = c("both", "upper"), labels = TRUE, \dots) shaparmDEHaan(x, p = 0.05, xiRange = NULL, doplot = TRUE, plottype = c("both", "upper"), labels = TRUE, \dots) } \arguments{ \item{alphaRange, xiRange}{ [saparmPlot] - \cr plotting ranges for \code{alpha} and \code{xi}. By default the values are automatically selected. } \item{ci}{ [hillPlot] - \cr probability for asymptotic confidence band; for no confidence band set \code{ci} to zero. } \item{doplot}{ a logical. Should the results be plotted? \cr [shaparmPlot] - \cr a vector of logicals of the same lengths as tails defining for wich tail depths plots should be created, by default plots will be generated for a tail depth of 5 percent. By default \code{c(FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE)}. } \item{labels}{ [hillPlot] - \cr whether or not axes should be labelled. } \item{plottype}{ [hillPlot] - \cr whether \code{alpha}, \code{xi} (1/alpha) or \code{quantile} (a quantile estimate) should be plotted. } \item{p}{ [qgev] - \cr a numeric vector of probabilities. [hillPlot] - \cr probability required when option \code{quantile} is chosen. } \item{start}{ [hillPlot] - \cr lowest number of order statistics at which to plot a point. } \item{x}{ [dgev][devd] - \cr a numeric vector of quantiles. \cr [gevFit] - \cr data vector. In the case of \code{method="mle"} the interpretation depends on the value of block: if no block size is specified then data are interpreted as block maxima; if block size is set, then data are interpreted as raw data and block maxima are calculated. \cr [hillPlot][shaparmPlot] - \cr the data from which to calculate the shape parameter, a numeric vector. \cr [print][plot] - \cr a fitted object of class \code{"gevFit"}. } \item{\dots}{ [gevFit] - \cr control parameters optionally passed to the optimization function. Parameters for the optimization function are passed to components of the \code{control} argument of \code{optim}. \cr [hillPlot] - \cr other graphics parameters. \cr [plot][summary] - \cr arguments passed to the plot function. } } \value{ \code{gevSim} \cr returns a vector of data points from the simulated series. \cr \code{gevFit} \cr returns an object of class \code{gev} describing the fit. \cr \code{print.summary} \cr prints a report of the parameter fit. \cr \code{summary} \cr performs diagnostic analysis. The method provides two different residual plots for assessing the fitted GEV model. \cr \code{gevrlevelPlot} \cr returns a vector containing the lower 95\% bound of the confidence interval, the estimated return level and the upper 95\% bound. \cr \code{hillPlot} \cr displays a plot. \cr \code{shaparmPlot} \cr returns a list with one or two entries, depending on the selection of the input variable \code{both.tails}. The two entries \code{upper} and \code{lower} determine the position of the tail. Each of the two variables is again a list with entries \code{pickands}, \code{hill}, and \code{dehaan}. If one of the three methods will be discarded the printout will display zeroes. } \details{ \bold{Parameter Estimation:} \cr\cr \code{gevFit} and \code{gumbelFit} estimate the parameters either by the probability weighted moment method, \code{method="pwm"} or by maximum log likelihood estimation \code{method="mle"}. The summary method produces diagnostic plots for fitted GEV or Gumbel models. \cr \bold{Methods:} \cr\cr \code{print.gev}, \code{plot.gev} and \code{summary.gev} are print, plot, and summary methods for a fitted object of class \code{gev}. Concerning the summary method, the data are converted to unit exponentially distributed residuals under null hypothesis that GEV fits. Two diagnostics for iid exponential data are offered. The plot method provides two different residual plots for assessing the fitted GEV model. Two diagnostics for iid exponential data are offered. \cr \bold{Return Level Plot:} \cr\cr \code{gevrlevelPlot} calculates and plots the k-block return level and 95\% confidence interval based on a GEV model for block maxima, where \code{k} is specified by the user. The k-block return level is that level exceeded once every \code{k} blocks, on average. The GEV likelihood is reparameterized in terms of the unknown return level and profile likelihood arguments are used to construct a confidence interval. \cr \bold{Hill Plot:} \cr\cr The function \code{hillPlot} investigates the shape parameter and plots the Hill estimate of the tail index of heavy-tailed data, or of an associated quantile estimate. This plot is usually calculated from the alpha perspective. For a generalized Pareto analysis of heavy-tailed data using the \code{gpdFit} function, it helps to plot the Hill estimates for \code{xi}. \cr \bold{Shape Parameter Plot:} \cr\cr The function \code{shaparmPlot} investigates the shape parameter and plots for the upper and lower tails the shape parameter as a function of the taildepth. Three approaches are considered, the \emph{Pickands} estimator, the \emph{Hill} estimator, and the \emph{Decker-Einmal-deHaan} estimator. } \note{ \bold{GEV Parameter Estimation:} \cr\cr If method \code{"mle"} is selected the parameter fitting in \code{gevFit} is passed to the internal function \code{gev.mle} or \code{gumbel.mle} depending on the value of \code{gumbel}, \code{FALSE} or \code{TRUE}. On the other hand, if method \code{"pwm"} is selected the parameter fitting in \code{gevFit} is passed to the internal function \code{gev.pwm} or \code{gumbel.pwm} again depending on the value of \code{gumbel}, \code{FALSE} or \code{TRUE}. } \references{ Coles S. (2001); \emph{Introduction to Statistical Modelling of Extreme Values}, Springer. Embrechts, P., Klueppelberg, C., Mikosch, T. (1997); \emph{Modelling Extremal Events}, Springer. } \author{ Alec Stephenson for R's \code{evd} and \code{evir} package, and \cr Diethelm Wuertz for this \R-port. } \examples{ ## Load Data: x = as.timeSeries(data(danishClaims)) colnames(x) <- "Danish" head(x) ## hillPlot - # Hill plot of heavy-tailed Danish fire insurance data par(mfrow = c(1, 1)) hillPlot(x, plottype = "xi") grid() } \keyword{models} fExtremes/man/ValueAtRisk.Rd0000644000176200001440000000250211645005146015451 0ustar liggesusers\name{ValueAtRisk} \alias{ValueAtRisk} \alias{VaR} \alias{CVaR} \title{Value-at-Risk} \description{ A collection and description of functions to compute Value-at-Risk and conditional Value-at-Risk \cr The functiona are: \tabular{ll}{ \code{VaR} \tab Computes Value-at-Risk, \cr \code{CVaR} \tab Computes conditional Value-at-Risk. } } \usage{ VaR(x, alpha = 0.05, type = "sample", tail = c("lower", "upper")) CVaR(x, alpha = 0.05, type = "sample", tail = c("lower", "upper")) } \arguments{ \item{x}{ an uni- or multivariate timeSeries object } \item{alpha}{ a numeric value, the confidence interval. } \item{type}{ a character string, the type to calculate the value-at-risk. } \item{tail}{ a character string denoting which tail will be considered, either \code{"lower"} or \code{"upper"}. If \code{tail="lower"}, then alpha will be converted to \code{alpha=1-alpha}. } } \value{ \code{VaR}\cr \code{CVaR}\cr \cr returns a numeric vector or value with the (conditional) value-at-risk for each time series column. } \seealso{ \code{hillPlot}, \code{gevFit}. } \author{ Diethelm Wuertz for this \R-port. } \keyword{models} fExtremes/man/DataPreprocessing.Rd0000644000176200001440000001400413203503230016661 0ustar liggesusers\name{DataPreprocessing} \alias{DataPreprocessing} \alias{blockMaxima} \alias{findThreshold} \alias{pointProcess} \alias{deCluster} \title{Extremes Data Preprocessing} \description{ A collection and description of functions for data preprocessing of extreme values. This includes tools to separate data beyond a threshold value, to compute blockwise data like block maxima, and to decluster point process data. \cr The functions are: \tabular{ll}{ \code{blockMaxima} \tab Block Maxima from a vector or a time series, \cr \code{findThreshold} \tab Upper threshold for a given number of extremes, \cr \code{pointProcess} \tab Peaks over Threshold from a vector or a time series, \cr \code{deCluster} \tab Declusters clustered point process data. } } \usage{ blockMaxima(x, block = c("monthly", "quarterly"), doplot = FALSE) findThreshold(x, n = floor(0.05*length(as.vector(x))), doplot = FALSE) pointProcess(x, u = quantile(x, 0.95), doplot = FALSE) deCluster(x, run = 20, doplot = TRUE) } \arguments{ \item{block}{ the block size. A numeric value is interpreted as the number of data values in each successive block. All the data is used, so the last block may not contain \code{block} observations. If the \code{data} has a \code{times} attribute containing (in an object of class \code{"POSIXct"}, or an object that can be converted to that class, see \code{\link{as.POSIXct}}) the times/dates of each observation, then \code{block} may instead take the character values \code{"month"}, \code{"quarter"}, \code{"semester"} or \code{"year"}. By default monthly blocks from daily data are assumed. } \item{doplot}{ a logical value. Should the results be plotted? By default \code{TRUE}. } \item{n}{ a numeric value or vector giving number of extremes above the threshold. By default, \code{n} is set to an integer representing 5\% of the data from the whole data set \code{x}. } \item{run}{ parameter to be used in the runs method; any two consecutive threshold exceedances separated by more than this number of observations/days are considered to belong to different clusters. } \item{u}{ a numeric value at which level the data are to be truncated. By default the threshold value which belongs to the 95\% quantile, \code{u=quantile(x,0.95)}. } \item{x}{ a numeric data vector from which \code{findThreshold} and \code{blockMaxima} determine the threshold values and block maxima values. For the function \code{deCluster} the argument \code{x} represents a numeric vector of threshold exceedances with a \code{times} attribute which should be a numeric vector containing either the indices or the times/dates of each exceedance (if times/dates, the attribute should be an object of class \code{"POSIXct"} or an object that can be converted to that class; see \code{\link{as.POSIXct}}). } } \details{ \bold{Computing Block Maxima:} \cr\cr The function \code{blockMaxima} calculates block maxima from a vector or a time series, whereas the function \code{blocks} is more general and allows for the calculation of an arbitrary function \code{FUN} on blocks. \cr \bold{Finding Thresholds:} \cr\cr The function \code{findThreshold} finds a threshold so that a given number of extremes lie above. When the data are tied a threshold is found so that at least the specified number of extremes lie above. \cr \bold{De-Clustering Point Processes:} \cr\cr The function \code{deCluster} declusters clustered point process data so that Poisson assumption is more tenable over a high threshold. } \value{ \code{blockMaxima} \cr returns a timeSeries object or a numeric vector of block maxima data. \code{findThreshold} \cr returns a numeric value or vector of suitable thresholds. \code{pointProcess} \cr returns a timeSeries object or a numeric vector of peaks over a threshold. \code{deCluster} \cr returns a timeSeries object or a numeric vector for the declustered point process. } \references{ Coles S. (2001); \emph{Introduction to Statistical Modelling of Extreme Values}, Springer. Embrechts, P., Klueppelberg, C., Mikosch, T. (1997); \emph{Modelling Extremal Events}, Springer. } \author{ Some of the functions were implemented from Alec Stephenson's R-package \code{evir} ported from Alexander McNeil's S library \code{EVIS}, \emph{Extreme Values in S}, some from Alec Stephenson's R-package \code{ismev} based on Stuart Coles code from his book, \emph{Introduction to Statistical Modeling of Extreme Values} and some were written by Diethelm Wuertz. } \examples{ ## findThreshold - # Threshold giving (at least) fifty exceedances for Danish data: x <- as.timeSeries(data(danishClaims)) findThreshold(x, n = c(10, 50, 100)) ## blockMaxima - # Block Maxima (Minima) for left tail of BMW log returns: BMW <- as.timeSeries(data(bmwRet)) colnames(BMW) <- "BMW.RET" head(BMW) x <- blockMaxima( BMW, block = 65) head(x) \dontrun{ y <- blockMaxima(-BMW, block = 65) head(y) y <- blockMaxima(-BMW, block = "monthly") head(y)} ## pointProcess - # Return Values above threshold in negative BMW log-return data: PP = pointProcess(x = -BMW, u = quantile(as.vector(x), 0.75)) PP nrow(PP) ## deCluster - # Decluster the 200 exceedances of a particular DC = deCluster(x = PP, run = 15, doplot = TRUE) DC nrow(DC) } \keyword{programming} fExtremes/man/GpdDistribution.Rd0000644000176200001440000000764512323220004016370 0ustar liggesusers\name{GpdDistribution} \alias{GpdDistribution} \alias{dgpd} \alias{pgpd} \alias{qgpd} \alias{rgpd} \alias{gpdMoments} \alias{gpdSlider} \title{Generalized Pareto Distribution} \description{ A collection and description of functions to compute the generalized Pareto distribution. The functions compute density, distribution function, quantile function and generate random deviates for the GPD. In addition functions to compute the true moments and to display the distribution and random variates changing parameters interactively are available. \cr The GPD distribution functions are: \tabular{ll}{ \code{dgpd} \tab Density of the GPD Distribution, \cr \code{pgpd} \tab Probability function of the GPD Distribution, \cr \code{qgpd} \tab Quantile function of the GPD Distribution, \cr \code{rgpd} \tab random variates from the GPD distribution, \cr \code{gpdMoments} \tab computes true mean and variance, \cr \code{gpdSlider} \tab displays density or rvs from a GPD.} } \usage{ dgpd(x, xi = 1, mu = 0, beta = 1, log = FALSE) pgpd(q, xi = 1, mu = 0, beta = 1, lower.tail = TRUE) qgpd(p, xi = 1, mu = 0, beta = 1, lower.tail = TRUE) rgpd(n, xi = 1, mu = 0, beta = 1) gpdMoments(xi = 1, mu = 0, beta = 1) gpdSlider(method = c("dist", "rvs")) } \arguments{ \item{log}{ a logical, if \code{TRUE}, the log density is returned. } \item{lower.tail}{ a logical, if \code{TRUE}, the default, then probabilities are \code{P[X <= x]}, otherwise, \code{P[X > x]}. } \item{method}{ [gpdSlider] - \cr a character string denoting what should be displayed. Either the density and \code{"dist"} or random variates \code{"rvs"}. } \item{n}{ [rgpd][gpdSim\ - \cr the number of observations to be generated. } \item{p}{ a vector of probability levels, the desired probability for the quantile estimate (e.g. 0.99 for the 99th percentile). } \item{q}{ [pgpd] - \cr a numeric vector of quantiles. } \item{x}{ [dgpd] - \cr a numeric vector of quantiles. } \item{xi, mu, beta}{ \code{xi} is the shape parameter, \code{mu} the location parameter, and \code{beta} is the scale parameter. } } \value{ All values are numeric vectors: \cr \code{d*} returns the density, \cr \code{p*} returns the probability, \cr \code{q*} returns the quantiles, and \cr \code{r*} generates random deviates. } \author{ Alec Stephenson for the functions from R's \code{evd} package, \cr Alec Stephenson for the functions from R's \code{evir} package, \cr Alexander McNeil for the EVIS functions underlying the \code{evir} package, \cr Diethelm Wuertz for this \R-port. } \references{ Embrechts, P., Klueppelberg, C., Mikosch, T. (1997); \emph{Modelling Extremal Events}, Springer. } \examples{ ## rgpd - par(mfrow = c(2, 2), cex = 0.7) r = rgpd(n = 1000, xi = 1/4) plot(r, type = "l", col = "steelblue", main = "GPD Series") grid() ## dgpd - # Plot empirical density and compare with true density: # Omit values greater than 500 from plot hist(r, n = 50, probability = TRUE, xlab = "r", col = "steelblue", border = "white", xlim = c(-1, 5), ylim = c(0, 1.1), main = "Density") box() x = seq(-5, 5, by = 0.01) lines(x, dgpd(x, xi = 1/4), col = "orange") ## pgpd - # Plot df and compare with true df: plot(sort(r), (1:length(r)/length(r)), xlim = c(-3, 6), ylim = c(0, 1.1), pch = 19, cex = 0.5, ylab = "p", xlab = "q", main = "Probability") grid() q = seq(-5, 5, by = 0.1) lines(q, pgpd(q, xi = 1/4), col = "steelblue") ## qgpd - # Compute quantiles, a test: qgpd(pgpd(seq(-1, 5, 0.25), xi = 1/4 ), xi = 1/4) } \keyword{distribution} fExtremes/man/00Extremes-package.Rd0000644000176200001440000002165213203336612016610 0ustar liggesusers\name{fExtremes-package} \alias{fExtremes-package} \alias{fExtremes} \docType{package} \title{Modelling Extreme Events in Finance} \description{ The Rmetrics "fExtemes" package is a collection of functions to analyze and model extreme events in Finance and Insurance. } \details{ \preformatted{ Package: \tab fExtremes\cr Type: \tab Package\cr %Version: \tab R 3.0.1\cr %Date: \tab 2014\cr License: \tab GPL Version 2 or later\cr Copyright: \tab (c) 1999-2014 Rmetrics Assiciation\cr URL: \tab \url{https://www.rmetrics.org} } } \section{1 Introduction}{ The \code{fExtremes} package provides functions for analyzing and modeling extreme events in financial time Series. The topics include: (i) data proeprocessing, (ii) explorative data analysis, (iii) peak over threshold modeling, (iv) block maxima modeling, (v) estimation of VaR and CVaR, and (vi) the computation of the extreme index. } \section{2 Data and their Preprocessing}{ \emph{Data Sets:} Data sets used in the examples of the timeSeries packages. \emph{Data Preprocessing:} These are tools for data preprocessing, including functions to separate data beyond a threshold value, to compute blockwise data like block maxima, and to decluster point process data. \preformatted{ blockMaxima extracts block maxima from a vector or a time series findThreshold finds upper threshold for a given number of extremes pointProcess extracts peaks over Threshold from a vector or a time series deCluster de-clusters clustered point process data } } \section{2 Explorative Data Analysis of Extremes}{ This section contains a collection of functions for explorative data analysis of extreme values in financial time series. The tools include plot functions for emprical distributions, quantile plots, graphs exploring the properties of exceedences over a threshold, plots for mean/sum ratio and for the development of records. The functions are: \preformatted{ emdPlot plots of empirical distribution function qqparetoPlot exponential/Pareto quantile plot mePlot plot of mean excesses over a threshold mrlPlot another variant, mean residual life plot mxfPlot another variant, with confidence intervals msratioPlot plot of the ratio of maximum and sum } \preformatted{ recordsPlot Record development compared with iid data ssrecordsPlot another variant, investigates subsamples sllnPlot verifies Kolmogorov's strong law of large numbers lilPlot verifies Hartman-Wintner's law of the iterated logarithm } \preformatted{ xacfPlot plots ACF of exceedences over a threshold } \emph{Parameter Fitting of Mean Excesses:} \preformatted{ normMeanExcessFit fits mean excesses with a normal density ghMeanExcessFit fits mean excesses with a GH density hypMeanExcessFit fits mean excesses with a HYP density nigMeanExcessFit fits mean excesses with a NIG density ghtMeanExcessFit fits mean excesses with a GHT density } } \section{3 GPD Peak over Threshold Modeling}{ \emph{GPD Distribution:} A collection of functions to compute the generalized Pareto distribution. The functions compute density, distribution function, quantile function and generate random deviates for the GPD. In addition functions to compute the true moments and to display the distribution and random variates changing parameters interactively are available. \preformatted{ dgpd returns the density of the GPD distribution pgpd returns the probability function of the GPD qgpd returns quantile function of the GPD distribution rgpd generates random variates from the GPD distribution gpdSlider displays density or rvs from a GPD } \emph{GPD Moments:} \preformatted{ gpdMoments computes true mean and variance of GDP } \emph{GPD Parameter Estimation:} This section contains functions to fit and to simulate processes that are generated from the generalized Pareto distribution. Two approaches for parameter estimation are provided: Maximum likelihood estimation and the probability weighted moment method. \preformatted{ gpdSim generates data from the GPD distribution gpdFit fits data to the GPD istribution } \emph{GPD print, plot and summary methods:} \preformatted{ print print method for a fitted GPD object plot plot method for a fitted GPD object summary summary method for a fitted GPD object } \emph{GDP Tail Risk:} The following functions compute tail risk under the GPD approach. \preformatted{ gpdQPlot estimation of high quantiles gpdQuantPlot variation of high quantiles with threshold gpdRiskMeasures prescribed quantiles and expected shortfalls gpdSfallPlot expected shortfall with confidence intervals gpdShapePlot variation of GPD shape with threshold gpdTailPlot plot of the GPD tail } % \preformatted{ % tailPlot % tailSlider % tailRisk % } } \section{4 GEV Block Maxima Modeling}{ \emph{GEV Distribution:} This section contains functions to fit and to simulate processes that are generated from the generalized extreme value distribution including the Frechet, Gumbel, and Weibull distributions. \preformatted{ dgev returns density of the GEV distribution pgev returns probability function of the GEV qgev returns quantile function of the GEV distribution rgev generates random variates from the GEV distribution gevSlider displays density or rvs from a GEV } \emph{GEV Moments:} \preformatted{ gevMoments computes true mean and variance } \emph{GEV Parameter Estimation:} A collection to simulate and to estimate the parameters of processes generated from GEV distribution. \preformatted{ gevSim generates data from the GEV distribution gumbelSim generates data from the Gumbel distribution gevFit fits data to the GEV distribution gumbelFit fits data to the Gumbel distribution } \preformatted{ print print method for a fitted GEV object plot plot method for a fitted GEV object summary summary method for a fitted GEV object } \emph{GEV MDA Estimation:} Here we provide Maximum Domain of Attraction estimators and visualize the results by a Hill plot and a common shape parameter plot from the Pickands, Einmal-Decker-deHaan, and Hill estimators. \preformatted{ hillPlot shape parameter and Hill estimate of the tail index shaparmPlot variation of shape parameter with tail depth } \emph{GEV Risk Estimation:} \preformatted{ gevrlevelPlot k-block return level with confidence intervals } } \section{4 Value at Risk}{ Two functions to compute Value-at-Risk and conditional Value-at-Risk. \preformatted{ VaR computes Value-at-Risk CVaR computes conditional Value-at-Risk } } \section{5 Extreme Index}{ A collection of functions to simulate time series with a known extremal index, and to estimate the extremal index by four different kind of methods, the blocks method, the reciprocal mean cluster size method, the runs method, and the method of Ferro and Segers. \preformatted{ thetaSim simulates a time Series with known theta blockTheta computes theta from Block Method clusterTheta computes theta from Reciprocal Cluster Method runTheta computes theta from Run Method ferrosegersTheta computes theta according to Ferro and Seegers } \preformatted{ exindexPlot calculatess and plots Theta(1,2,3) exindexesPlot calculates Theta(1,2) and plots Theta(1) } } \section{About Rmetrics}{ The \code{fExtremes} Rmetrics package is written for educational support in teaching "Computational Finance and Financial Engineering" and licensed under the GPL. } \keyword{package} fExtremes/man/ExtremeIndex.Rd0000644000176200001440000001365211645005146015670 0ustar liggesusers\name{ExtremeIndex} \alias{ExtremeIndex} \alias{fTHETA} \alias{fTHETA-class} \alias{show,fTHETA-method} \alias{thetaSim} \alias{blockTheta} \alias{clusterTheta} \alias{runTheta} \alias{ferrosegersTheta} \alias{exindexPlot} \alias{exindexesPlot} \title{Extremal Index Estimation} \description{ A collection and description of functions to simulate time series with a known extremal index, and to estimate the extremal index by four different kind of methods, the blocks method, the reciprocal mean cluster size method, the runs method, and the method of Ferro and Segers. \cr The functiona are: \tabular{ll}{ \code{thetaSim} \tab Simulates a time Series with known theta, \cr \code{blockTheta} \tab Computes theta from Block Method, \cr \code{clusterTheta} \tab Computes theta from Reciprocal Cluster Method, \cr \code{runTheta} \tab Computes theta from Run Method, \cr \code{ferrosegersTheta} \tab Computes Theta according to Ferro and Seegers, \cr \code{exindexPlot} \tab Calculate and Plot Theta(1,2,3), \cr \code{exindexesPlot} \tab Calculate Theta(1,2) and Plot Theta(1). } } \usage{ \S4method{show}{fTHETA}(object) thetaSim(model = c("max", "pair"), n = 1000, theta = 0.5) blockTheta(x, block = 22, quantiles = seq(0.950, 0.995, length = 10), title = NULL, description = NULL) clusterTheta(x, block = 22, quantiles = seq(0.950, 0.995, length = 10), title = NULL, description = NULL) runTheta(x, block = 22, quantiles = seq(0.950, 0.995, length = 10), title = NULL, description = NULL) ferrosegersTheta(x, quantiles = seq(0.950, 0.995, length = 10), title = NULL, description = NULL) exindexPlot(x, block = c("monthly", "quarterly"), start = 5, end = NA, doplot = TRUE, plottype = c("thresh", "K"), labels = TRUE, \dots) exindexesPlot(x, block = 22, quantiles = seq(0.950, 0.995, length = 10), doplot = TRUE, labels = TRUE, \dots) } \arguments{ \item{block}{ [*Theta] - \cr an integer value, the block size. Currently only integer specified block sizes are supported. \cr [exindex*Plot] - \cr the block size. Either \code{"monthly"}, \code{"quarterly"} or an integer value. An integer value is interpreted as the number of data values in each successive block. The default value is \code{"monthly"} which correpsond for daily data to an approximately 22-day periods. } \item{description}{ a character string which allows for a brief description. } \item{doplot}{ a logical, should the results be plotted? } \item{labels}{ whether or not axes should be labelled. If set to \code{FALSE} then user specified lables can be passed through the \code{"..."} argument. } \item{model}{ [thetaSim] - \cr a character string denoting the name of the model. Either \code{"max"} or \code{"pair"}, the first representing the maximimum Frechet series, and the second the paired exponential series. } \item{n}{ [thetaSim] - \cr an integer value, the length of the time series to be generated. } \item{object}{ an object of class \code{"fTHETA"} as returned by the functions \code{*Theta}. } \item{plottype}{ [exindexPlot] - \cr whether plot is to be by increasing threshold (\code{thresh}) or increasing K value (\code{K}). } \item{quantiles}{ [exindexesPlot] - \cr a numeric vector of quantile values. } \item{start, end}{ [exindexPlot] - \cr \code{start} is the lowest value of \code{K} at which to plot a point, and \code{end} the highest value; \code{K} is the number of blocks in which a specified threshold is exceeded. } \item{theta}{ [thetaSim] - \cr a numeric value between 0 and 1 setting the value of the extremal index for the maximum Frechet time series. (Not used in the case of the paired exponential series.) } \item{title}{ a character string which allows for a project title. } \item{x}{ a 'timeSeries' object or any other object which can be transformed by the function \code{as.vector} into a numeric vector. \code{"monthly"} and \code{"quarterly"} blocks require \code{x} to be an object of class \code{"timeSeries"}. } \item{\dots}{ additional arguments passed to the plot function. } } \value{ \code{exindexPlot} \cr returns a data frame of results with the following columns: \code{N}, \code{K}, \code{un}, \code{theta2}, and \code{theta}. A plot with \code{K} on the lower x-axis and threshold Values on the upper x-axis versus the extremal index is displayed. \code{exindexesPlot} \cr returns a data.frame with four columns: \code{thresholds}, \code{theta1}, \code{theta2}, and \code{theta3}. A plot with quantiles on the x-axis and versus the extremal indexes is displayed. } \references{ Embrechts, P., Klueppelberg, C., Mikosch, T. (1997); \emph{Modelling Extremal Events}, Springer. Chapter 8, 413--429. } \seealso{ \code{hillPlot}, \code{gevFit}. } \author{ Alexander McNeil, for parts of the \code{exindexPlot} function, and \cr Diethelm Wuertz for the \code{exindexesPlot} function. } \examples{ ## Extremal Index for the right and left tails ## of the BMW log returns: data(bmwRet) par(mfrow = c(2, 2), cex = 0.7) exindexPlot( as.timeSeries(bmwRet), block = "quarterly") exindexPlot(-as.timeSeries(bmwRet), block = "quarterly") ## Extremal Index for the right and left tails ## of the BMW log returns: exindexesPlot( as.timeSeries(bmwRet), block = 65) exindexesPlot(-as.timeSeries(bmwRet), block = 65) } \keyword{hplot} fExtremes/man/data.Rd0000644000176200001440000000030511645005146014167 0ustar liggesusers\name{TimeSeriesData} \alias{TimeSeriesData} \alias{bmwRet} \alias{danishClaims} \title{Time Series Data Sets} \description{ Data sets used in the examples of the timeSeries packages. } fExtremes/man/GevDistribution.Rd0000644000176200001440000000745511645005146016414 0ustar liggesusers\name{GevDistribution} \alias{GevDistribution} \alias{dgev} \alias{pgev} \alias{qgev} \alias{rgev} \alias{gevMoments} \alias{gevSlider} \title{Generalized Extreme Value Distribution} \description{ Density, distribution function, quantile function, random number generation, and true moments for the GEV including the Frechet, Gumbel, and Weibull distributions. \cr The GEV distribution functions are: \tabular{ll}{ \code{dgev} \tab density of the GEV distribution, \cr \code{pgev} \tab probability function of the GEV distribution, \cr \code{qgev} \tab quantile function of the GEV distribution, \cr \code{rgev} \tab random variates from the GEV distribution, \cr \code{gevMoments} \tab computes true mean and variance, \cr \code{gevSlider} \tab displays density or rvs from a GEV.} } \usage{ dgev(x, xi = 1, mu = 0, beta = 1, log = FALSE) pgev(q, xi = 1, mu = 0, beta = 1, lower.tail = TRUE) qgev(p, xi = 1, mu = 0, beta = 1, lower.tail = TRUE) rgev(n, xi = 1, mu = 0, beta = 1) gevMoments(xi = 0, mu = 0, beta = 1) gevSlider(method = c("dist", "rvs")) } \arguments{ \item{log}{ a logical, if \code{TRUE}, the log density is returned. } \item{lower.tail}{ a logical, if \code{TRUE}, the default, then probabilities are \code{P[X <= x]}, otherwise, \code{P[X > x]}. } \item{method}{ a character sgtring denoting what should be displayed. Either the density and \code{"dist"} or random variates \code{"rvs"}. } \item{n}{ the number of observations. } \item{p}{ a numeric vector of probabilities. [hillPlot] - \cr probability required when option \code{quantile} is chosen. } \item{q}{ a numeric vector of quantiles. } \item{x}{ a numeric vector of quantiles. } \item{xi, mu, beta}{ \code{xi} is the shape parameter, \code{mu} the location parameter, and \code{beta} is the scale parameter. The default values are \code{xi=1}, \code{mu=0}, and \code{beta=1}. Note, if \code{xi=0} the distribution is of type Gumbel. } } \value{ \code{d*} returns the density, \cr \code{p*} returns the probability, \cr \code{q*} returns the quantiles, and \cr \code{r*} generates random variates. \cr All values are numeric vectors. } \references{ Coles S. (2001); \emph{Introduction to Statistical Modelling of Extreme Values}, Springer. Embrechts, P., Klueppelberg, C., Mikosch, T. (1997); \emph{Modelling Extremal Events}, Springer. } \author{ Alec Stephenson for R's \code{evd} and \code{evir} package, and \cr Diethelm Wuertz for this \R-port. } \examples{ ## rgev - # Create and plot 1000 Weibull distributed rdv: r = rgev(n = 1000, xi = -1) plot(r, type = "l", col = "steelblue", main = "Weibull Series") grid() ## dgev - # Plot empirical density and compare with true density: hist(r[abs(r)<10], nclass = 25, freq = FALSE, xlab = "r", xlim = c(-5,5), ylim = c(0,1.1), main = "Density") box() x = seq(-5, 5, by = 0.01) lines(x, dgev(x, xi = -1), col = "steelblue") ## pgev - # Plot df and compare with true df: plot(sort(r), (1:length(r)/length(r)), xlim = c(-3, 6), ylim = c(0, 1.1), cex = 0.5, ylab = "p", xlab = "q", main = "Probability") grid() q = seq(-5, 5, by = 0.1) lines(q, pgev(q, xi = -1), col = "steelblue") ## qgev - # Compute quantiles, a test: qgev(pgev(seq(-5, 5, 0.25), xi = -1), xi = -1) ## gevMoments: # Returns true mean and variance: gevMoments(xi = 0, mu = 0, beta = 1) ## Slider: # gevSlider(method = "dist") # gevSlider(method = "rvs") } \keyword{models} fExtremes/man/GpdRisk.Rd0000644000176200001440000002156312323220004014614 0ustar liggesusers\name{gpdRisk} \alias{gpdRisk} \alias{gpdQPlot} \alias{gpdQuantPlot} \alias{gpdSfallPlot} \alias{gpdShapePlot} \alias{gpdTailPlot} \alias{gpdRiskMeasures} \alias{tailPlot} \alias{tailSlider} \alias{tailRisk} \title{GPD Distributions for Extreme Value Theory} \description{ A collection and description to functions to compute tail risk under the GPD approach. \cr The GPD modelling functions are: \tabular{ll}{ \code{gpdQPlot} \tab estimation of high quantiles, \cr \code{gpdQuantPlot} \tab variation of high quantiles with threshold, \cr \code{gpdRiskMeasures} \tab prescribed quantiles and expected shortfalls, \cr \code{gpdSfallPlot} \tab expected shortfall with confidence intervals, \cr \code{gpdShapePlot} \tab variation of shape with threshold, \cr \code{gpdTailPlot} \tab plot of the tail, \cr \code{tailPlot} \tab , \cr \code{tailSlider} \tab , \cr \code{tailRisk} \tab . } } \usage{ gpdQPlot(x, p = 0.99, ci = 0.95, type = c("likelihood", "wald"), like.num = 50) gpdQuantPlot(x, p = 0.99, ci = 0.95, models = 30, start = 15, end = 500, doplot = TRUE, plottype = c("normal", "reverse"), labels = TRUE, \dots) gpdSfallPlot(x, p = 0.99, ci = 0.95, like.num = 50) gpdShapePlot(x, ci = 0.95, models = 30, start = 15, end = 500, doplot = TRUE, plottype = c("normal", "reverse"), labels = TRUE, \dots) gpdTailPlot(object, plottype = c("xy", "x", "y", ""), doplot = TRUE, extend = 1.5, labels = TRUE, \dots) gpdRiskMeasures(object, prob = c(0.99, 0.995, 0.999, 0.9995, 0.9999)) tailPlot(object, p = 0.99, ci = 0.95, nLLH = 25, extend = 1.5, grid = TRUE, labels = TRUE, \dots) tailSlider(x) tailRisk(object, prob = c(0.99, 0.995, 0.999, 0.9995, 0.9999), \dots) } \arguments{ \item{ci}{ the probability for asymptotic confidence band; for no confidence band set to zero. } \item{doplot}{ a logical. Should the results be plotted? } \item{extend}{ optional argument for plots 1 and 2 expressing how far x-axis should extend as a multiple of the largest data value. This argument must take values greater than 1 and is useful for showing estimated quantiles beyond data. } \item{grid}{ ... } \item{labels}{ optional argument for plots 1 and 2 specifying whether or not axes should be labelled. } \item{like.num}{ the number of times to evaluate profile likelihood. } \item{models}{ the number of consecutive gpd models to be fitted. } \item{nLLH}{ ... } \item{object}{ [summary] - \cr a fitted object of class \code{"gpdFit"}. } \item{p}{ a vector of probability levels, the desired probability for the quantile estimate (e.g. 0.99 for the 99th percentile). } \item{reverse}{ should plot be by increasing threshold (\code{TRUE}) or number of extremes (\code{FALSE}). } \item{prob}{ a numeric value. } \item{plottype}{ a character string. } \item{start, end}{ the lowest and maximum number of exceedances to be considered. } \item{type}{ a character string selecting the desired estimation mehtod, either \code{"mle"} for the maximum likelihood mehtod or \code{"pwm"} for the probability weighted moment method. By default, the first will be selected. Note, the function \code{gpd} uses \code{"ml"}. } \item{x}{ [dgpd] - \cr a numeric vector of quantiles. \cr [gpdFit] - \cr the data vector. Note, there are two different names for the first argument \code{x} and \code{data} depending which function name is used, either \code{gpdFit} or the EVIS synonyme \code{gpd}. \cr [print][plot] - \cr a fitted object of class \code{"gpdFit"}. } \item{\dots}{ control parameters and plot parameters optionally passed to the optimization and/or plot function. Parameters for the optimization function are passed to components of the \code{control} argument of \code{optim}. } } \value{ \code{gpdSim} \cr returns a vector of datapoints from the simulated series. \code{gpdFit} \cr returns an object of class \code{"gpd"} describing the fit including parameter estimates and standard errors. \code{gpdQuantPlot} \cr returns invisible a table of results. \code{gpdShapePlot} \cr returns invisible a table of results. \code{gpdTailPlot} \cr returns invisible a list object containing details of the plot is returned invisibly. This object should be used as the first argument of \code{gpdqPlot} or \code{gpdsfallPlot} to add quantile estimates or expected shortfall estimates to the plot. } \details{ \bold{Generalized Pareto Distribution:} \cr\cr Compute density, distribution function, quantile function and generates random variates for the Generalized Pareto Distribution. \bold{Simulation:} \cr\cr \code{gpdSim} simulates data from a Generalized Pareto distribution. \cr \bold{Parameter Estimation:} \cr\cr \code{gpdFit} fits the model parameters either by the probability weighted moment method or the maxim log likelihood method. The function returns an object of class \code{"gpd"} representing the fit of a generalized Pareto model to excesses over a high threshold. The fitting functions use the probability weighted moment method, if method \code{method="pwm"} was selected, and the the general purpose optimization function \code{optim} when the maximum likelihood estimation, \code{method="mle"} or \code{method="ml"} is chosen. \cr \bold{Methods:} \cr\cr \code{print.gpd}, \code{plot.gpd} and \code{summary.gpd} are print, plot, and summary methods for a fitted object of class \code{gpdFit}. The plot method provides four different plots for assessing fitted GPD model. \cr \bold{gpd* Functions:} \cr\cr \code{gpdqPlot} calculates quantile estimates and confidence intervals for high quantiles above the threshold in a GPD analysis, and adds a graphical representation to an existing plot. The GPD approximation in the tail is used to estimate quantile. The \code{"wald"} method uses the observed Fisher information matrix to calculate confidence interval. The \code{"likelihood"} method reparametrizes the likelihood in terms of the unknown quantile and uses profile likelihood arguments to construct a confidence interval. \cr \code{gpdquantPlot} creates a plot showing how the estimate of a high quantile in the tail of a dataset based on the GPD approximation varies with threshold or number of extremes. For every model \code{gpdFit} is called. Evaluation may be slow. Confidence intervals by the Wald method may be fastest. \cr \code{gpdriskmeasures} makes a rapid calculation of point estimates of prescribed quantiles and expected shortfalls using the output of the function \code{gpdFit}. This function simply calculates point estimates and (at present) makes no attempt to calculate confidence intervals for the risk measures. If confidence levels are required use \code{gpdqPlot} and \code{gpdsfallPlot} which interact with graphs of the tail of a loss distribution and are much slower. \cr \code{gpdsfallPlot} calculates expected shortfall estimates, in other words tail conditional expectation and confidence intervals for high quantiles above the threshold in a GPD analysis. A graphicalx representation to an existing plot is added. Expected shortfall is the expected size of the loss, given that a particular quantile of the loss distribution is exceeded. The GPD approximation in the tail is used to estimate expected shortfall. The likelihood is reparametrised in terms of the unknown expected shortfall and profile likelihood arguments are used to construct a confidence interval. \cr \code{gpdshapePlot} creates a plot showing how the estimate of shape varies with threshold or number of extremes. For every model \code{gpdFit} is called. Evaluation may be slow. \cr \code{gpdtailPlot} produces a plot of the tail of the underlying distribution of the data. } \references{ Embrechts, P., Klueppelberg, C., Mikosch, T. (1997); \emph{Modelling Extremal Events}, Springer. Hosking J.R.M., Wallis J.R., (1987); \emph{Parameter and quantile estimation for the generalized Pareto distribution}, Technometrics 29, 339--349. } \author{ Alec Stephenson for the functions from R's \code{evd} package, \cr Alec Stephenson for the functions from R's \code{evir} package, \cr Alexander McNeil for the EVIS functions underlying the \code{evir} package, \cr Diethelm Wuertz for this \R-port. } \examples{ ## Load Data: danish = as.timeSeries(data(danishClaims)) ## Tail Plot: x = as.timeSeries(data(danishClaims)) fit = gpdFit(x, u = 10) tailPlot(fit) ## Try Tail Slider: # tailSlider(x) ## Tail Risk: tailRisk(fit) } \keyword{distribution} fExtremes/man/GevRisk.Rd0000644000176200001440000001467012323220004014624 0ustar liggesusers\name{GevRisk} \alias{GevRisk} \alias{gevrlevelPlot} \title{Generalized Extreme Value Modelling} \description{ A collection and description functions to estimate the parameters of the GEV distribution. To model the GEV three types of approaches for parameter estimation are provided: Maximum likelihood estimation, probability weighted moment method, and estimation by the MDA approach. MDA includes functions for the Pickands, Einmal-Decker-deHaan, and Hill estimators together with several plot variants. \cr The GEV modelling functions are: \tabular{ll}{ \code{gevrlevelPlot} \tab k-block return level with confidence intervals.} } \usage{ gevrlevelPlot(object, kBlocks = 20, ci = c(0.90, 0.95, 0.99), plottype = c("plot", "add"), labels = TRUE,...) } \arguments{ \item{add}{ [gevrlevelPlot] - \cr whether the return level should be added graphically to a time series plot; if \code{FALSE} a graph of the profile likelihood curve showing the return level and its confidence interval is produced. } \item{ci}{ [hillPlot] - \cr probability for asymptotic confidence band; for no confidence band set \code{ci} to zero. } \item{kBlocks}{ [gevrlevelPlot] - \cr specifies the particular return level to be estimated; default set arbitrarily to 20. } \item{labels}{ [hillPlot] - \cr whether or not axes should be labelled. } \item{object}{ [summary][grlevelPlot] - \cr a fitted object of class \code{"gevFit"}. } \item{plottype}{ [hillPlot] - \cr whether \code{alpha}, \code{xi} (1/alpha) or \code{quantile} (a quantile estimate) should be plotted. } \item{\dots}{ arguments passed to the plot function. } } \value{ \code{gevSim} \cr returns a vector of data points from the simulated series. \cr \code{gevFit} \cr returns an object of class \code{gev} describing the fit. \cr \code{print.summary} \cr prints a report of the parameter fit. \cr \code{summary} \cr performs diagnostic analysis. The method provides two different residual plots for assessing the fitted GEV model. \cr \code{gevrlevelPlot} \cr returns a vector containing the lower 95\% bound of the confidence interval, the estimated return level and the upper 95\% bound. \cr \code{hillPlot} \cr displays a plot. \cr \code{shaparmPlot} \cr returns a list with one or two entries, depending on the selection of the input variable \code{both.tails}. The two entries \code{upper} and \code{lower} determine the position of the tail. Each of the two variables is again a list with entries \code{pickands}, \code{hill}, and \code{dehaan}. If one of the three methods will be discarded the printout will display zeroes. } \details{ \bold{Parameter Estimation:} \cr\cr \code{gevFit} and \code{gumbelFit} estimate the parameters either by the probability weighted moment method, \code{method="pwm"} or by maximum log likelihood estimation \code{method="mle"}. The summary method produces diagnostic plots for fitted GEV or Gumbel models. \cr \bold{Methods:} \cr\cr \code{print.gev}, \code{plot.gev} and \code{summary.gev} are print, plot, and summary methods for a fitted object of class \code{gev}. Concerning the summary method, the data are converted to unit exponentially distributed residuals under null hypothesis that GEV fits. Two diagnostics for iid exponential data are offered. The plot method provides two different residual plots for assessing the fitted GEV model. Two diagnostics for iid exponential data are offered. \cr \bold{Return Level Plot:} \cr\cr \code{gevrlevelPlot} calculates and plots the k-block return level and 95\% confidence interval based on a GEV model for block maxima, where \code{k} is specified by the user. The k-block return level is that level exceeded once every \code{k} blocks, on average. The GEV likelihood is reparameterized in terms of the unknown return level and profile likelihood arguments are used to construct a confidence interval. \cr \bold{Hill Plot:} \cr\cr The function \code{hillPlot} investigates the shape parameter and plots the Hill estimate of the tail index of heavy-tailed data, or of an associated quantile estimate. This plot is usually calculated from the alpha perspective. For a generalized Pareto analysis of heavy-tailed data using the \code{gpdFit} function, it helps to plot the Hill estimates for \code{xi}. \cr \bold{Shape Parameter Plot:} \cr\cr The function \code{shaparmPlot} investigates the shape parameter and plots for the upper and lower tails the shape parameter as a function of the taildepth. Three approaches are considered, the \emph{Pickands} estimator, the \emph{Hill} estimator, and the \emph{Decker-Einmal-deHaan} estimator. } \note{ \bold{GEV Parameter Estimation:} \cr\cr If method \code{"mle"} is selected the parameter fitting in \code{gevFit} is passed to the internal function \code{gev.mle} or \code{gumbel.mle} depending on the value of \code{gumbel}, \code{FALSE} or \code{TRUE}. On the other hand, if method \code{"pwm"} is selected the parameter fitting in \code{gevFit} is passed to the internal function \code{gev.pwm} or \code{gumbel.pwm} again depending on the value of \code{gumbel}, \code{FALSE} or \code{TRUE}. } \references{ Coles S. (2001); \emph{Introduction to Statistical Modelling of Extreme Values}, Springer. Embrechts, P., Klueppelberg, C., Mikosch, T. (1997); \emph{Modelling Extremal Events}, Springer. } \author{ Alec Stephenson for R's \code{evd} and \code{evir} package, and \cr Diethelm Wuertz for this \R-port. } \examples{ ## Load Data: # BMW Stock Data - negative returns x = -as.timeSeries(data(bmwRet)) colnames(x)<-"BMW" head(x) ## gevFit - # Fit GEV to monthly Block Maxima: fit = gevFit(x, block = "month") print(fit) ## gevrlevelPlot - # Return Level Plot: gevrlevelPlot(fit) } \keyword{models} fExtremes/man/GevModelling.Rd0000644000176200001440000002365311645005146015645 0ustar liggesusers\name{GevModelling} \alias{GevModelling} \alias{fGEVFIT} \alias{fGEVFIT-class} \alias{show,fGEVFIT-method} \alias{gevSim} \alias{gumbelSim} \alias{gevFit} \alias{gumbelFit} \alias{plot.fGEVFIT} \alias{summary.fGEVFIT} \title{Generalized Extreme Value Modelling} \description{ A collection and description functions to estimate the parameters of the GEV distribution. To model the GEV three types of approaches for parameter estimation are provided: Maximum likelihood estimation, probability weighted moment method, and estimation by the MDA approach. MDA includes functions for the Pickands, Einmal-Decker-deHaan, and Hill estimators together with several plot variants. \cr The GEV modelling functions are: \tabular{ll}{ \code{gevSim} \tab generates data from the GEV distribution, \cr \code{gumbelSim} \tab generates data from the Gumbel distribution, \cr \code{gevFit} \tab fits data to the GEV distribution, \cr \code{gumbelFit} \tab fits data to the Gumbel distribution, \cr \code{print} \tab print method for a fitted GEV object, \cr \code{plot} \tab plot method for a fitted GEV object, \cr \code{summary} \tab summary method for a fitted GEV object, \cr \code{gevrlevelPlot} \tab k-block return level with confidence intervals. } } \usage{ gevSim(model = list(xi = -0.25, mu = 0, beta = 1), n = 1000, seed = NULL) gumbelSim(model = list(mu = 0, beta = 1), n = 1000, seed = NULL) gevFit(x, block = 1, type = c("mle", "pwm"), title = NULL, description = NULL, \dots) gumbelFit(x, block = 1, type = c("mle", "pwm"), title = NULL, description = NULL, \dots) \S4method{show}{fGEVFIT}(object) \method{plot}{fGEVFIT}(x, which = "ask", \dots) \method{summary}{fGEVFIT}(object, doplot = TRUE, which = "all", \dots) } \arguments{ \item{block}{ block size. } \item{description}{ a character string which allows for a brief description. } \item{doplot}{ a logical. Should the results be plotted? \cr [shaparmPlot] - \cr a vector of logicals of the same lengths as tails defining for wich tail depths plots should be created, by default plots will be generated for a tail depth of 5 percent. By default \code{c(FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE)}. } \item{model}{ [gevSim][gumbelSim] - \cr a list with components \code{shape}, \code{location} and \code{scale} giving the parameters of the GEV distribution. By default the shape parameter has the value -0.25, the location is zero and the scale is one. To fit random deviates from a Gumbel distribution set \code{shape=0}. } \item{n}{ [gevSim][gumbelSim] - \cr number of generated data points, an integer value. \cr [rgev] - \cr the number of observations. } \item{object}{ [summary][grlevelPlot] - \cr a fitted object of class \code{"gevFit"}. } \item{seed}{ [gevSim] - \cr an integer value to set the seed for the random number generator. } \item{title}{ [gevFit] - \cr a character string which allows for a project title. } \item{type}{ a character string denoting the type of parameter estimation, either by maximum likelihood estimation \code{"mle"}, the default value, or by the probability weighted moment menthod \code{"pwm"}. } \item{which}{ [plot][summary] - \cr a vector of logicals, one for each plot, denoting which plot should be displayed. Alkternatively if \code{which="ask"} the user will be interactively asked which of the plots should be desplayed. By default \code{which="all"}. } \item{x}{ [dgev][devd] - \cr a numeric vector of quantiles. \cr [gevFit] - \cr data vector. In the case of \code{method="mle"} the interpretation depends on the value of block: if no block size is specified then data are interpreted as block maxima; if block size is set, then data are interpreted as raw data and block maxima are calculated. \cr [hillPlot][shaparmPlot] - \cr the data from which to calculate the shape parameter, a numeric vector. \cr [print][plot] - \cr a fitted object of class \code{"gevFit"}. } \item{xi, mu, beta}{ [*gev] - \cr \code{xi} is the shape parameter, \code{mu} the location parameter, and \code{sigma} is the scale parameter. The default values are \code{xi=1}, \code{mu=0}, and \code{beta=1}. Note, if \code{xi=0} the distribution is of type Gumbel. } \item{\dots}{ [gevFit] - \cr control parameters optionally passed to the optimization function. Parameters for the optimization function are passed to components of the \code{control} argument of \code{optim}. \cr [hillPlot] - \cr other graphics parameters. \cr [plot][summary] - \cr arguments passed to the plot function. } } \value{ \code{gevSim} \cr returns a vector of data points from the simulated series. \cr \code{gevFit} \cr returns an object of class \code{gev} describing the fit. \cr \code{print.summary} \cr prints a report of the parameter fit. \cr \code{summary} \cr performs diagnostic analysis. The method provides two different residual plots for assessing the fitted GEV model. \cr \code{gevrlevelPlot} \cr returns a vector containing the lower 95\% bound of the confidence interval, the estimated return level and the upper 95\% bound. \cr \code{hillPlot} \cr displays a plot. \cr \code{shaparmPlot} \cr returns a list with one or two entries, depending on the selection of the input variable \code{both.tails}. The two entries \code{upper} and \code{lower} determine the position of the tail. Each of the two variables is again a list with entries \code{pickands}, \code{hill}, and \code{dehaan}. If one of the three methods will be discarded the printout will display zeroes. } \details{ \bold{Parameter Estimation:} \cr\cr \code{gevFit} and \code{gumbelFit} estimate the parameters either by the probability weighted moment method, \code{method="pwm"} or by maximum log likelihood estimation \code{method="mle"}. The summary method produces diagnostic plots for fitted GEV or Gumbel models. \cr \bold{Methods:} \cr\cr \code{print.gev}, \code{plot.gev} and \code{summary.gev} are print, plot, and summary methods for a fitted object of class \code{gev}. Concerning the summary method, the data are converted to unit exponentially distributed residuals under null hypothesis that GEV fits. Two diagnostics for iid exponential data are offered. The plot method provides two different residual plots for assessing the fitted GEV model. Two diagnostics for iid exponential data are offered. \cr \bold{Return Level Plot:} \cr\cr \code{gevrlevelPlot} calculates and plots the k-block return level and 95\% confidence interval based on a GEV model for block maxima, where \code{k} is specified by the user. The k-block return level is that level exceeded once every \code{k} blocks, on average. The GEV likelihood is reparameterized in terms of the unknown return level and profile likelihood arguments are used to construct a confidence interval. \cr \bold{Hill Plot:} \cr\cr The function \code{hillPlot} investigates the shape parameter and plots the Hill estimate of the tail index of heavy-tailed data, or of an associated quantile estimate. This plot is usually calculated from the alpha perspective. For a generalized Pareto analysis of heavy-tailed data using the \code{gpdFit} function, it helps to plot the Hill estimates for \code{xi}. \cr \bold{Shape Parameter Plot:} \cr\cr The function \code{shaparmPlot} investigates the shape parameter and plots for the upper and lower tails the shape parameter as a function of the taildepth. Three approaches are considered, the \emph{Pickands} estimator, the \emph{Hill} estimator, and the \emph{Decker-Einmal-deHaan} estimator. } \note{ \bold{GEV Parameter Estimation:} \cr\cr If method \code{"mle"} is selected the parameter fitting in \code{gevFit} is passed to the internal function \code{gev.mle} or \code{gumbel.mle} depending on the value of \code{gumbel}, \code{FALSE} or \code{TRUE}. On the other hand, if method \code{"pwm"} is selected the parameter fitting in \code{gevFit} is passed to the internal function \code{gev.pwm} or \code{gumbel.pwm} again depending on the value of \code{gumbel}, \code{FALSE} or \code{TRUE}. } \references{ Coles S. (2001); \emph{Introduction to Statistical Modelling of Extreme Values}, Springer. Embrechts, P., Klueppelberg, C., Mikosch, T. (1997); \emph{Modelling Extremal Events}, Springer. } \author{ Alec Stephenson for R's \code{evd} and \code{evir} package, and \cr Diethelm Wuertz for this \R-port. } \examples{ ## gevSim - # Simulate GEV Data, use default length n=1000 x = gevSim(model = list(xi = 0.25, mu = 0 , beta = 1), n = 1000) head(x) ## gumbelSim - # Simulate GEV Data, use default length n=1000 x = gumbelSim(model = list(xi = 0.25, mu = 0 , beta = 1)) ## gevFit - # Fit GEV Data by Probability Weighted Moments: fit = gevFit(x, type = "pwm") print(fit) ## summary - # Summarize Results: par(mfcol = c(2, 2)) summary(fit) } \keyword{models} fExtremes/man/ExtremesData.Rd0000644000176200001440000002524511645005146015656 0ustar liggesusers\name{ExtremesData} \alias{ExtremesData} \alias{emdPlot} \alias{qqparetoPlot} \alias{mePlot} \alias{mrlPlot} \alias{mxfPlot} \alias{msratioPlot} \alias{recordsPlot} \alias{ssrecordsPlot} \alias{sllnPlot} \alias{lilPlot} \alias{xacfPlot} \alias{normMeanExcessFit} \alias{ghMeanExcessFit} \alias{hypMeanExcessFit} \alias{nigMeanExcessFit} \alias{ghtMeanExcessFit} \title{Explorative Data Analysis} \description{ A collection and description of functions for explorative data analysis. The tools include plot functions for emprical distributions, quantile plots, graphs exploring the properties of exceedences over a threshold, plots for mean/sum ratio and for the development of records. \cr The functions are: \tabular{ll}{ \code{emdPlot} \tab Plot of empirical distribution function, \cr \code{qqparetoPlot} \tab Exponential/Pareto quantile plot, \cr \code{mePlot} \tab Plot of mean excesses over a threshold, \cr \code{mrlPlot} \tab another variant, mean residual life plot, \cr \code{mxfPlot} \tab another variant, with confidence intervals, \cr \code{msratioPlot} \tab Plot of the ratio of maximum and sum, \cr \code{recordsPlot} \tab Record development compared with iid data, \cr \code{ssrecordsPlot} \tab another variant, investigates subsamples, \cr \code{sllnPlot} \tab verifies Kolmogorov's strong law of large numbers, \cr \code{lilPlot} \tab verifies Hartman-Wintner's law of the iterated logarithm, \cr \code{xacfPlot} \tab ACF of exceedences over a threshold, \cr \code{normMeanExcessFit} \tab fits mean excesses with a normal density, \cr \code{ghMeanExcessFit} \tab fits mean excesses with a GH density, \cr \code{hypMeanExcessFit} \tab fits mean excesses with a HYP density, \cr \code{nigMeanExcessFit} \tab fits mean excesses with a NIG density, \cr \code{ghtMeanExcessFit} \tab fits mean excesses with a GHT density. } } \usage{ emdPlot(x, doplot = TRUE, plottype = c("xy", "x", "y", " "), labels = TRUE, \dots) qqparetoPlot(x, xi = 0, trim = NULL, threshold = NULL, doplot = TRUE, labels = TRUE, \dots) mePlot(x, doplot = TRUE, labels = TRUE, \dots) mrlPlot(x, ci = 0.95, umin = mean(x), umax = max(x), nint = 100, doplot = TRUE, plottype = c("autoscale", ""), labels = TRUE, \dots) mxfPlot(x, u = quantile(x, 0.05), doplot = TRUE, labels = TRUE, \dots) msratioPlot(x, p = 1:4, doplot = TRUE, labels = TRUE, \dots) recordsPlot(x, ci = 0.95, doplot = TRUE, labels = TRUE, \dots) ssrecordsPlot(x, subsamples = 10, doplot = TRUE, plottype = c("lin", "log"), labels = TRUE, \dots) sllnPlot(x, doplot = TRUE, labels = TRUE, \dots) lilPlot(x, doplot = TRUE, labels = TRUE, \dots) xacfPlot(x, u = quantile(x, 0.95), lag.max = 15, doplot = TRUE, which = c("all", 1, 2, 3, 4), labels = TRUE, \dots) normMeanExcessFit(x, doplot = TRUE, trace = TRUE, \dots) ghMeanExcessFit(x, doplot = TRUE, trace = TRUE, \dots) hypMeanExcessFit(x, doplot = TRUE, trace = TRUE, \dots) nigMeanExcessFit(x, doplot = TRUE, trace = TRUE, \dots) ghtMeanExcessFit(x, doplot = TRUE, trace = TRUE, \dots) } \arguments{ \item{ci}{ [recordsPlot] - \cr a confidence level. By default 0.95, i.e. 95\%. } \item{doplot}{ a logical value. Should the results be plotted? By default \code{TRUE}. } \item{labels}{ a logical value. Whether or not x- and y-axes should be automatically labelled and a default main title should be added to the plot. By default \code{TRUE}. } \item{lag.max}{ [xacfPlot] - \cr maximum number of lags at which to calculate the autocorrelation functions. The default value is 15. } \item{nint}{ [mrlPlot] - \cr the number of intervals, see \code{umin} and \code{umax}. The default value is 100. } \item{p}{ [msratioPlot] - \cr the power exponents, a numeric vector. By default a sequence from 1 to 4 in unit integer steps. } \item{plottype}{ [emdPlot] - \cr which axes should be on a log scale: \code{"x"} x-axis only; \code{"y"} y-axis only; \code{"xy"} both axes; \code{""} neither axis. \cr [msratioPlot] - \cr a logical, if set to \code{"autoscale"}, then the scale of the plots are automatically determined, any other string allows user specified scale information through the \code{\dots} argument. \cr [ssrecordsPlot] - \cr one from two options can be select either \code{"lin"} or \code{"log"}. The default creates a linear plot. } \item{subsamples}{ [ssrecordsPlot] - \cr the number of subsamples, by default 10, an integer value. } \item{threshold, trim}{ [qPlot][xacfPlot] - \cr a numeric value at which data are to be left-truncated, value at which data are to be right-truncated or the thresold value, by default 95\%. } \item{trace}{ a logical flag, by default \code{TRUE}. Should the calculations be traced? } \item{u}{ a numeric value at which level the data are to be truncated. By default the threshold value which belongs to the 95\% quantile, \code{u=quantile(x,0.95)}. } \item{umin, umax}{ [mrlPlot] - \cr range of threshold values. If \code{umin} and/or \code{umax} are not available, then by default they are set to the following values: \code{umin=mean(x)} and \code{umax=max(x)}. } \item{which}{ [xacfPlot] - \cr a numeric or character value, if \code{which="all"} then all four plots are displayed, if \code{which} is an integer between one and four, then the first, second, third or fourth plot will be displayed. } \item{x, y}{ numeric data vectors or in the case of x an object to be plotted. } \item{xi}{ the shape parameter of the generalized Pareto distribution. } \item{\dots}{ additional arguments passed to the FUN or plot function. } } \details{ \bold{Empirical Distribution Function:} \cr\cr The function \code{emdPlot} is a simple explanatory function. A straight line on the double log scale indicates Pareto tail behaviour. \cr \bold{Quantile--Quantile Pareto Plot:} \cr\cr \code{qqparetoPlot} creates a quantile-quantile plot for threshold data. If \code{xi} is zero the reference distribution is the exponential; if \code{xi} is non-zero the reference distribution is the generalized Pareto with that parameter value expressed by \code{xi}. In the case of the exponential, the plot is interpreted as follows: Concave departures from a straight line are a sign of heavy-tailed behaviour, convex departures show thin-tailed behaviour. \cr \bold{Mean Excess Function Plot:} \cr\cr Three variants to plot the mean excess function are available: A sample mean excess plot over increasing thresholds, and two mean excess function plots with confidence intervals for discrimination in the tails of a distribution. In general, an upward trend in a mean excess function plot shows heavy-tailed behaviour. In particular, a straight line with positive gradient above some threshold is a sign of Pareto behaviour in tail. A downward trend shows thin-tailed behaviour whereas a line with zero gradient shows an exponential tail. Here are some hints: Because upper plotting points are the average of a handful of extreme excesses, these may be omitted for a prettier plot. For \code{mrlPlot} and \code{mxfPlot} the upper tail is investigated; for the lower tail reverse the sign of the \code{data} vector. \cr \bold{Plot of the Maximum/Sum Ratio:} \cr\cr The ratio of maximum and sum is a simple tool for detecting heavy tails of a distribution and for giving a rough estimate of the order of its finite moments. Sharp increases in the curves of a \code{msratioPlot} are a sign for heavy tail behaviour. \cr \bold{Plot of the Development of Records:} \cr\cr These are functions that investigate the development of records in a dataset and calculate the expected behaviour for iid data. \code{recordsPlot} counts records and reports the observations at which they occur. In addition subsamples can be investigated with the help of the function \code{ssrecordsPlot}. \cr \bold{Plot of Kolmogorov's and Hartman-Wintern's Laws:} \cr\cr The function \code{sllnPlot} verifies Kolmogorov's strong law of large numbers, and the function \code{lilPlot} verifies Hartman-Wintner's law of the iterated logarithm. \cr \bold{ACF Plot of Exceedences over a Thresold:} \cr\cr This function plots the autocorrelation functions of heights and distances of exceedences over a threshold. \cr } \value{ The functions return a plot. } \note{ The plots are labeled by default with a x-label, a y-label and a main title. If the argument \code{labels} is set to \code{FALSE} neither a x-label, a y-label nor a main title will be added to the graph. To add user defined label strings just use the function \code{title(xlab="\dots", ylab="\dots", main="\dots")}. } \references{ Coles S. (2001); \emph{Introduction to Statistical Modelling of Extreme Values}, Springer. Embrechts, P., Klueppelberg, C., Mikosch, T. (1997); \emph{Modelling Extremal Events}, Springer. } \author{ Some of the functions were implemented from Alec Stephenson's R-package \code{evir} ported from Alexander McNeil's S library \code{EVIS}, \emph{Extreme Values in S}, some from Alec Stephenson's R-package \code{ismev} based on Stuart Coles code from his book, \emph{Introduction to Statistical Modeling of Extreme Values} and some were written by Diethelm Wuertz. } \examples{ ## Danish fire insurance data: data(danishClaims) danishClaims = as.timeSeries(danishClaims) ## emdPlot - # Show Pareto tail behaviour: par(mfrow = c(2, 2), cex = 0.7) emdPlot(danishClaims) ## qqparetoPlot - # QQ-Plot of heavy-tailed Danish fire insurance data: qqparetoPlot(danishClaims, xi = 0.7) ## mePlot - # Sample mean excess plot of heavy-tailed Danish fire: mePlot(danishClaims) ## ssrecordsPlot - # Record fire insurance losses in Denmark: ssrecordsPlot(danishClaims, subsamples = 10) } \keyword{hplot}