diff --git a/DESCRIPTION b/DESCRIPTION index c568822760e3aaa60a249c86a8e70405a44f199d..40bebb8d33584aeb9cd8b15825199618dd03a26b 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,12 +1,12 @@ -Package: ValuationTables +Package: MortalityTables Type: Package Version: 1.0 Date: 2016-05-01 -Title: A framework for various types of life tables +Title: A framework for various types of mortality / life tables Authors@R: c(person("Reinhold", "Kainhofer", role=c("aut", "cre"), email="reinhold@kainhofer.com")) Author: Reinhold Kainhofer [aut, cre] Maintainer: Reinhold Kainhofer <reinhold@kainhofer.com> -URL: https://gitlab.open-tools.net/R/r-valuation-tables +URL: https://gitlab.open-tools.net/R/r-mortality-tables Depends: ggplot2, methods, @@ -24,31 +24,31 @@ Description: This package provides classes to implement cohort life tables License: GPL (>= 2) RoxygenNote: 5.0.1 Collate: - 'valuationTable.R' - 'valuationTable.period.R' - 'valuationTable.ageShift.R' + 'mortalityTable.R' + 'mortalityTable.period.R' + 'mortalityTable.ageShift.R' 'ageShift.R' - 'valuationTable.observed.R' - 'valuationTable.joined.R' - 'valuationTable.mixed.R' + 'mortalityTable.observed.R' + 'mortalityTable.joined.R' + 'mortalityTable.mixed.R' 'ages.R' 'baseTable.R' 'baseYear.R' - 'valuationTable.improvementFactors.R' - 'valuationTable.trendProjection.R' + 'mortalityTable.improvementFactors.R' + 'mortalityTable.trendProjection.R' 'deathProbabilities.R' 'getCohortTable.R' 'getOmega.R' 'getPeriodTable.R' 'lifeTable.R' 'makeQxDataFrame.R' + 'mortalityTables.list.R' + 'mortalityTables.load.R' 'periodDeathProbabilities.R' - 'plot.valuationTable.R' - 'plotValuationTableComparisons.R' - 'plotValuationTables.R' + 'plot.mortalityTable.R' + 'plotMortalityTableComparisons.R' + 'plotMortalityTables.R' 'setLoading.R' 'setModification.R' 'undampenTrend.R' - 'valuationTables.list.R' - 'valuationTables.load.R' VignetteBuilder: knitr diff --git a/ValuationTables.RData b/MortalityTables.RData similarity index 100% rename from ValuationTables.RData rename to MortalityTables.RData diff --git a/ValuationTables.Rproj b/MortalityTables.Rproj similarity index 100% rename from ValuationTables.Rproj rename to MortalityTables.Rproj diff --git a/NAMESPACE b/NAMESPACE index 24d3208a40a90d73484c7bbd97034899ac495098..cbe485dc843d1eb40d1d196c0ebf3fa0738114b2 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,27 +1,27 @@ # Generated by roxygen2: do not edit by hand -S3method(plot,valuationTable) +S3method(plot,mortalityTable) export(makeQxDataFrame) -export(plotValuationTableComparisons) -export(plotValuationTables) -export(valuationTable) -export(valuationTable.ageShift) -export(valuationTable.improvementFactors) -export(valuationTable.joined) -export(valuationTable.mixed) -export(valuationTable.observed) -export(valuationTable.period) -export(valuationTable.trendProjection) -export(valuationTables.list) -export(valuationTables.load) -exportClasses(valuationTable) -exportClasses(valuationTable.ageShift) -exportClasses(valuationTable.improvementFactors) -exportClasses(valuationTable.joined) -exportClasses(valuationTable.mixed) -exportClasses(valuationTable.observed) -exportClasses(valuationTable.period) -exportClasses(valuationTable.trendProjection) +export(mortalityTable) +export(mortalityTable.ageShift) +export(mortalityTable.improvementFactors) +export(mortalityTable.joined) +export(mortalityTable.mixed) +export(mortalityTable.observed) +export(mortalityTable.period) +export(mortalityTable.trendProjection) +export(mortalityTables.list) +export(mortalityTables.load) +export(plotMortalityTableComparisons) +export(plotMortalityTables) +exportClasses(mortalityTable) +exportClasses(mortalityTable.ageShift) +exportClasses(mortalityTable.improvementFactors) +exportClasses(mortalityTable.joined) +exportClasses(mortalityTable.mixed) +exportClasses(mortalityTable.observed) +exportClasses(mortalityTable.period) +exportClasses(mortalityTable.trendProjection) exportMethods(ageShift) exportMethods(ages) exportMethods(baseTable) diff --git a/R/ageShift.R b/R/ageShift.R index fb932822cbd05286e1891a640128dd5f2429b037..06bb30ff5d0ed968f1e7a5b6b5fe9c29c4c58dac 100644 --- a/R/ageShift.R +++ b/R/ageShift.R @@ -1,9 +1,9 @@ -#' @include valuationTable.ageShift.R +#' @include mortalityTable.ageShift.R NULL #' Return the age shift of the age-shifted life table given the birth year #' -#' @param object The life table object (class inherited from valuationTable) +#' @param object The life table object (class inherited from mortalityTable) #' @param ... Other parameters (currently unused) #' @param YOB The birth year for which the age shift should be determined. #' @@ -13,7 +13,7 @@ setGeneric("ageShift", function(object, YOB=1975, ...) standardGeneric("ageShift #' @describeIn ageShift Return the age shift of the age-shifted life table #' given the birth year setMethod("ageShift", - "valuationTable.ageShift", + "mortalityTable.ageShift", function(object, YOB, ...) { shift = object@ageShifts[toString(YOB),]; if (is.na(shift)) { diff --git a/R/ages.R b/R/ages.R index 14324dfff986e821ddfcbaf616aaa0cdd9ccd8db..ff9ea3d3edfc523582a8a0080d3ccf8e11d87785 100644 --- a/R/ages.R +++ b/R/ages.R @@ -1,34 +1,34 @@ -#' @include valuationTable.period.R valuationTable.mixed.R valuationTable.joined.R valuationTable.observed.R +#' @include mortalityTable.period.R mortalityTable.mixed.R mortalityTable.joined.R mortalityTable.observed.R NULL #' Return the defined ages of the life table #' -#' @param object A life table object (instance of a \code{\linkS4class{valuationTable}} class) +#' @param object A life table object (instance of a \code{\linkS4class{mortalityTable}} class) #' @param ... Currently unused #' #' @exportMethod ages setGeneric("ages", function(object, ...) standardGeneric("ages")); #' @describeIn ages Return the defined ages of the period life table -setMethod("ages", "valuationTable.period", +setMethod("ages", "mortalityTable.period", function (object, ...) { object@ages; }) #' @describeIn ages Return the defined ages of the mixed life table -setMethod("ages", "valuationTable.mixed", +setMethod("ages", "mortalityTable.mixed", function (object, ...) { ages(object@table1); }) #' @describeIn ages Return the defined ages of the joined life table -setMethod("ages", "valuationTable.joined", +setMethod("ages", "mortalityTable.joined", function (object, ...) { ages(object@table1); }) #' @describeIn ages Return the defined ages of the observed life table -setMethod("ages", "valuationTable.observed", +setMethod("ages", "mortalityTable.observed", function (object, ...) { object@ages; }) diff --git a/R/baseTable.R b/R/baseTable.R index fd9a358cd439ecf21a5551c4c93aa4daacd6f816..135057b828d2f87894482c9d961ee8972a2678a7 100644 --- a/R/baseTable.R +++ b/R/baseTable.R @@ -1,22 +1,22 @@ -#' @include valuationTable.R valuationTable.period.R +#' @include mortalityTable.R mortalityTable.period.R NULL #' Return the base table of the life table #' -#' @param object The life table object (class inherited from valuationTable) +#' @param object The life table object (class inherited from mortalityTable) #' @param ... Other parameters (currently unused) #' #' @exportMethod baseTable setGeneric("baseTable", function(object, ...) standardGeneric("baseTable")); #' @describeIn baseTable Return the base table of the life table -setMethod("baseTable", "valuationTable", +setMethod("baseTable", "mortalityTable", function (object, ...) { c() }) #' @describeIn baseTable Return the base table of the life table -setMethod("baseTable", "valuationTable.period", +setMethod("baseTable", "mortalityTable.period", function (object, ...) { object@deathProbs }) diff --git a/R/baseYear.R b/R/baseYear.R index ccf9c70cfb0c3492d0227a71244d45b3cbe4ba1e..653ca1b1c93f6b9a8e1fefd29d14a1c7e7da5a0d 100644 --- a/R/baseYear.R +++ b/R/baseYear.R @@ -1,22 +1,22 @@ -#' @include valuationTable.R valuationTable.mixed.R +#' @include mortalityTable.R mortalityTable.mixed.R NULL #' Return the base year of the life table #' -#' @param object The life table object (class inherited from valuationTable) +#' @param object The life table object (class inherited from mortalityTable) #' @param ... Other parameters (currently unused) #' #' @exportMethod baseYear setGeneric("baseYear", function(object, ...) standardGeneric("baseYear")); #' @describeIn baseYear Return the base year of the life table -setMethod("baseYear", "valuationTable", +setMethod("baseYear", "mortalityTable", function (object, ...) { object@baseYear }) #' @describeIn baseYear Return the base year of the life table -setMethod("baseYear", "valuationTable.mixed", +setMethod("baseYear", "mortalityTable.mixed", function (object, ...) { baseYear(object@table1) }) diff --git a/R/deathProbabilities.R b/R/deathProbabilities.R index 51d9916fffe6d6e05056317e77dfe58d00a178a8..496875408bc160672333d9bc9807ddec7279962e 100644 --- a/R/deathProbabilities.R +++ b/R/deathProbabilities.R @@ -1,9 +1,9 @@ -#' @include valuationTable.R valuationTable.period.R valuationTable.ageShift.R valuationTable.trendProjection.R valuationTable.improvementFactors.R valuationTable.mixed.R +#' @include mortalityTable.R mortalityTable.period.R mortalityTable.ageShift.R mortalityTable.trendProjection.R mortalityTable.improvementFactors.R mortalityTable.mixed.R NULL #' Return the (cohort) death probabilities of the life table given the birth year (if needed) #' -#' @param object The life table object (class inherited from valuationTable) +#' @param object The life table object (class inherited from mortalityTable) #' @param ... Other parameters (currently unused) #' @param YOB The birth year for which the death probabilities should be calculated #' @@ -12,14 +12,14 @@ setGeneric("deathProbabilities", function(object, ..., YOB = 1975) standardGener #' @describeIn deathProbabilities Return the (cohort) death probabilities of the #' life table given the birth year (if needed) -setMethod("deathProbabilities", "valuationTable.period", +setMethod("deathProbabilities", "mortalityTable.period", function(object, ..., YOB = 1975) { object@modification(object@deathProbs * (1 + object@loading)); }) #' @describeIn deathProbabilities Return the (cohort) death probabilities of the #' life table given the birth year (if needed) -setMethod("deathProbabilities","valuationTable.ageShift", +setMethod("deathProbabilities","mortalityTable.ageShift", function (object, ..., YOB = 1975) { qx=object@deathProbs * (1 + object@loading); shift = ageShift(object, YOB); @@ -33,7 +33,7 @@ setMethod("deathProbabilities","valuationTable.ageShift", #' @describeIn deathProbabilities Return the (cohort) death probabilities of the #' life table given the birth year (if needed) -setMethod("deathProbabilities","valuationTable.trendProjection", +setMethod("deathProbabilities","mortalityTable.trendProjection", function (object, ..., YOB = 1975) { qx=object@deathProbs * (1 + object@loading); if (is.null(object@trend2) || length(object@trend2) <= 1) { @@ -57,7 +57,7 @@ setMethod("deathProbabilities","valuationTable.trendProjection", #' @describeIn deathProbabilities Return the (cohort) death probabilities of the #' life table given the birth year (if needed) -setMethod("deathProbabilities","valuationTable.improvementFactors", +setMethod("deathProbabilities","mortalityTable.improvementFactors", function (object, ..., YOB = 1975) { qx = object@deathProbs * (1 + object@loading); finalqx = (1 - object@improvement)^(YOB + 0:(length(qx) - 1) - object@baseYear) * qx; @@ -66,7 +66,7 @@ setMethod("deathProbabilities","valuationTable.improvementFactors", #' @describeIn deathProbabilities Return the (cohort) death probabilities of the #' life table given the birth year (if needed) -setMethod("deathProbabilities","valuationTable.mixed", +setMethod("deathProbabilities","mortalityTable.mixed", function (object, ..., YOB = 1975) { qx1 = deathProbabilities(object@table1, ..., YOB) * (1 + object@loading); qx2 = deathProbabilities(object@table2, ..., YOB) * (1 + object@loading); diff --git a/R/getCohortTable.R b/R/getCohortTable.R index 2a980a7d5a7903797d3ef20b58ed84283eaa65cb..cb226cbed17521275bc56022c002100814794c11 100644 --- a/R/getCohortTable.R +++ b/R/getCohortTable.R @@ -1,9 +1,9 @@ -#' @include valuationTable.R +#' @include mortalityTable.R NULL -#' Return the cohort life table as a \code{valuationTable.period} object +#' Return the cohort life table as a \code{mortalityTable.period} object #' -#' @param object The life table object (class inherited from valuationTable) +#' @param object The life table object (class inherited from mortalityTable) #' @param YOB The birth year for which the life table should be calculated #' @param ... Other parameters (currently unused) #' @@ -11,10 +11,10 @@ NULL setGeneric("getCohortTable", function(object, YOB, ...) standardGeneric("getCohortTable")); #' @describeIn getCohortTable Return the cohort life table as a -#' \code{valuationTable.period} object -setMethod("getCohortTable","valuationTable", +#' \code{mortalityTable.period} object +setMethod("getCohortTable","mortalityTable", function (object, YOB, ...) { - valuationTable.period( + mortalityTable.period( name = paste(object@name, ", YOB ", YOB), baseYear = YOB, ages = ages(object), diff --git a/R/getOmega.R b/R/getOmega.R index 94ea831dde2236adaa608ac32f384e77a4fb23e8..e2cf6bc14b171ffabcb97e74c8b3df0f17d54823 100644 --- a/R/getOmega.R +++ b/R/getOmega.R @@ -1,33 +1,33 @@ -#' @include valuationTable.R valuationTable.period.R valuationTable.mixed.R valuationTable.joined.R valuationTable.observed.R +#' @include mortalityTable.R mortalityTable.period.R mortalityTable.mixed.R mortalityTable.joined.R mortalityTable.observed.R NULL #' Return the maximum age of the life table #' -#' @param object A life table object (instance of a \code{valuationTable} class) +#' @param object A life table object (instance of a \code{mortalityTable} class) #' #' @exportMethod getOmega setGeneric("getOmega", function(object) standardGeneric("getOmega")); #' @describeIn getOmega Return the maximum age of the period life table -setMethod("getOmega", "valuationTable.period", +setMethod("getOmega", "mortalityTable.period", function (object) { max(object@ages, na.rm = TRUE); }) #' @describeIn getOmega Return the maximum age of the mixed life table -setMethod("getOmega", "valuationTable.mixed", +setMethod("getOmega", "mortalityTable.mixed", function (object) { getOmega(object@table1); }) #' @describeIn getOmega Return the maximum age of the joined life table -setMethod("getOmega", "valuationTable.joined", +setMethod("getOmega", "mortalityTable.joined", function (object) { getOmega(object@table1); }) #' @describeIn getOmega Return the maximum age of the joined life table -setMethod("getOmega", "valuationTable.observed", +setMethod("getOmega", "mortalityTable.observed", function (object) { max(object@ages, na.rm = TRUE); }) diff --git a/R/getPeriodTable.R b/R/getPeriodTable.R index 08349de136b8a9875e3235d47752680d88360c38..184aabd6ec27f6a9fd16114bf3c0e98183783d6a 100644 --- a/R/getPeriodTable.R +++ b/R/getPeriodTable.R @@ -1,9 +1,9 @@ -#' @include valuationTable.R +#' @include mortalityTable.R NULL -#' Return the period life table as a \code{valuationTable.period} object +#' Return the period life table as a \code{mortalityTable.period} object #' -#' @param object The life table object (class inherited from valuationTable) +#' @param object The life table object (class inherited from mortalityTable) #' @param Period The observation year, for which the death probabilities should #' be determined #' @param ... Other parameters (currently unused) @@ -15,10 +15,10 @@ setGeneric("getPeriodTable", ); #' @describeIn getPeriodTable Return the period life table as a -#' \code{valuationTable.period} object -setMethod("getPeriodTable","valuationTable", +#' \code{mortalityTable.period} object +setMethod("getPeriodTable","mortalityTable", function (object, Period, ...) { - valuationTable.period( + mortalityTable.period( name = paste(object@name, ", Period ", Period), baseYear = Period, ages = ages(object), diff --git a/R/lifeTable.R b/R/lifeTable.R index 6190fddf6ff21b7a336bdeeee168c67e68dc4ffe..82f29a62556b505a27a5358011a011c932beedab 100644 --- a/R/lifeTable.R +++ b/R/lifeTable.R @@ -1,9 +1,9 @@ -#' @include valuationTable.R +#' @include mortalityTable.R NULL #' Return the lifetable object (package lifecontingencies) for the cohort life table #' -#' @param object The life table object (class inherited from valuationTable) +#' @param object The life table object (class inherited from mortalityTable) #' @param ... Parameters to be passed to the \code{deathProbabilities} method #' of the life table #' @@ -12,7 +12,7 @@ setGeneric("lifeTable", function(object, ...) standardGeneric("lifeTable")); #' @describeIn lifeTable Return the lifetable object (package lifecontingencies) #' for the cohort life table -setMethod("lifeTable","valuationTable", +setMethod("lifeTable","mortalityTable", function (object, ...) { qx = deathProbabilities(object, ...); if (qx[[length(qx)]] != 1) { diff --git a/R/makeQxDataFrame.R b/R/makeQxDataFrame.R index 91cf8c07f707b757cf7056eebee263f4f9070b97..6e84133d9c5342e73c8f8ff9f163717c3a1adc91 100644 --- a/R/makeQxDataFrame.R +++ b/R/makeQxDataFrame.R @@ -1,11 +1,11 @@ -#' Converts one or multiple life table objects to a data frame that can be -#' plotted by \code{plotValuationTables} or \code{plotValuationTableComparisons} +#' Converts one or multiple mortality table objects to a data frame that can be +#' plotted by \code{plotMortalityTables} or \code{plotMortalityTableComparisons} #' -#' It is not required to call this function manually, \code{plotValuationTables} -#' will automatically do it if object derived from class \code{valuationTable} +#' It is not required to call this function manually, \code{plotMortalityTables} +#' will automatically do it if object derived from class \code{mortalityTable} #' are passed. #' -#' @param ... Life tables (objects of classes derived from \code{valuationTable}) +#' @param ... Life tables (objects of classes derived from \code{mortalityTable}) #' @param YOB desired year of birth to be plotted as cohort life table (default: 1972) #' @param Period desired observation year to be plotted (default: NA). If both #' \code{YOB} and \code{Period} are given, a period comparison is generated. diff --git a/R/valuationTable.R b/R/mortalityTable.R similarity index 68% rename from R/valuationTable.R rename to R/mortalityTable.R index 73669381b707c0277832da82841a42bbbf4ee0f7..eab9be6a04649513b8e186d3ffb379e38489ea77 100644 --- a/R/valuationTable.R +++ b/R/mortalityTable.R @@ -6,24 +6,24 @@ "_PACKAGE" -#' Class valuationTable +#' Class mortalityTable #' -#' Class \code{valuationTable} is the (virtual) base class for all valuation +#' Class \code{mortalityTable} is the (virtual) base class for all mortality #' tables. It contains the name and some general values applying to all #' types of tables, but does not contain any data itself. Use a child class -#' to create actual valuation tables. +#' to create actual mortality tables. #' -#' @slot name The human-readable name of the valuation table -#' @slot baseYear The base year of the valuation table (e.g. for tables with trend projection) +#' @slot name The human-readable name of the mortality table +#' @slot baseYear The base year of the mortality table (e.g. for tables with trend projection) #' @slot modification A function that will be called with the final death probabilities #' to give the user a way to modify the final probabilities #' @slot loading Additional security loading on the resulting table (single numeric #' value, e.g. 0.05 adds 5\% security margin to the probabilities) #' -#' @export valuationTable -#' @exportClass valuationTable -valuationTable=setClass( - "valuationTable", +#' @export mortalityTable +#' @exportClass mortalityTable +mortalityTable=setClass( + "mortalityTable", slots = list( name = "character", baseYear = "numeric", @@ -31,7 +31,7 @@ valuationTable=setClass( modification = "function" ), prototype = list( - name = "Actuarial Valuation Table", + name = "Actuarial Mortality Table", baseYear = 2000, loading = 0, modification = identity diff --git a/R/valuationTable.ageShift.R b/R/mortalityTable.ageShift.R similarity index 58% rename from R/valuationTable.ageShift.R rename to R/mortalityTable.ageShift.R index 5bcfe8613801ed75637d4accaad1be418992071e..d7bfc69c13bd83a9713d9d6a946957d3a9efb5af 100644 --- a/R/valuationTable.ageShift.R +++ b/R/mortalityTable.ageShift.R @@ -1,22 +1,22 @@ -#' @include valuationTable.R valuationTable.period.R +#' @include mortalityTable.R mortalityTable.period.R NULL -#' Class valuationTable.ageShift - Cohort life tables generated by age-shift +#' Class mortalityTable.ageShift - Cohort life tables generated by age-shift #' #' A cohort life table, obtained by age-shifting from a given base table (death probabilities # for a base birth year) #' #' @slot ageShifts A \code{data.frame} with columns \code{YOB} and \code{shifts} giving the age shifts for each birth year #' -#' @export valuationTable.ageShift -#' @exportClass valuationTable.ageShift -valuationTable.ageShift = setClass( - "valuationTable.ageShift", +#' @export mortalityTable.ageShift +#' @exportClass mortalityTable.ageShift +mortalityTable.ageShift = setClass( + "mortalityTable.ageShift", slots = list( ageShifts = "data.frame" ), prototype = list( ageShifts = data.frame(YOB = c(), shifts = c()) ), - contains = "valuationTable.period" + contains = "mortalityTable.period" ) diff --git a/R/valuationTable.improvementFactors.R b/R/mortalityTable.improvementFactors.R similarity index 61% rename from R/valuationTable.improvementFactors.R rename to R/mortalityTable.improvementFactors.R index 53925a99b95ae0ccbbc2f4b69e3e5b3666cccdfe..bf61cf558fa6587480f02b8161f4da53d86d3470 100644 --- a/R/valuationTable.improvementFactors.R +++ b/R/mortalityTable.improvementFactors.R @@ -1,7 +1,7 @@ -#' @include valuationTable.R valuationTable.period.R +#' @include mortalityTable.R mortalityTable.period.R NULL -#' Class valuationTable.improvementFactors - Cohort life table with improvement +#' Class mortalityTable.improvementFactors - Cohort life table with improvement #' factors #' #' A cohort life table, obtained by an improvment factor projection @@ -11,10 +11,10 @@ NULL #' describes the death probabilities in this year) #' @slot improvement Yearly improvement factors per age #' -#' @export valuationTable.improvementFactors -#' @exportClass valuationTable.improvementFactors -valuationTable.improvementFactors = setClass( - "valuationTable.improvementFactors", +#' @export mortalityTable.improvementFactors +#' @exportClass mortalityTable.improvementFactors +mortalityTable.improvementFactors = setClass( + "mortalityTable.improvementFactors", slots = list( baseYear = "numeric", improvement = "numeric" @@ -23,5 +23,5 @@ valuationTable.improvementFactors = setClass( baseYear = 2012, improvement = rep(0,120) ), - contains = "valuationTable.period" + contains = "mortalityTable.period" ) diff --git a/R/valuationTable.joined.R b/R/mortalityTable.joined.R similarity index 56% rename from R/valuationTable.joined.R rename to R/mortalityTable.joined.R index ec797e0284e876933ce63b30e5dc4fbbb72fe73a..532a2103377683e5531ebafbd7d1a6a3f2adf427 100644 --- a/R/valuationTable.joined.R +++ b/R/mortalityTable.joined.R @@ -1,26 +1,26 @@ -#' @include valuationTable.R +#' @include mortalityTable.R NULL -#' Class valuationTable.joined - Life table created by joining two life tables +#' Class mortalityTable.joined - Life table created by joining two life tables #' #' A cohort life table obtained by joining two cohort life tables, each of which #' applies only to certain observation years (e.g. for the past use the observed #' PoDs, and project them to the future with the trend projection) #' -#' @slot table1 The first \code{valuationTable}, valid for years given in \code{yearRange1} +#' @slot table1 The first \code{mortalityTable}, valid for years given in \code{yearRange1} #' @slot yearRange1 The years, for which \code{table1} describes the death probabilities -#' @slot table2 The second \code{valuationTable}, valid for years given in \code{yearRange2} +#' @slot table2 The second \code{mortalityTable}, valid for years given in \code{yearRange2} #' @slot yearRange2 The years, for which \code{table2} describes the death probabilities #' -#' @export valuationTable.joined -#' @exportClass valuationTable.joined -valuationTable.joined = setClass( - "valuationTable.joined", +#' @export mortalityTable.joined +#' @exportClass mortalityTable.joined +mortalityTable.joined = setClass( + "mortalityTable.joined", slots=list( - table1 = "valuationTable", + table1 = "mortalityTable", yearRange1 = "numeric", - table2 = "valuationTable", + table2 = "mortalityTable", yearRange2 = "numeric" ), - contains = "valuationTable" + contains = "mortalityTable" ) diff --git a/R/mortalityTable.mixed.R b/R/mortalityTable.mixed.R new file mode 100644 index 0000000000000000000000000000000000000000..a7a0252b6cab362b3b34461004eed55abf465fe0 --- /dev/null +++ b/R/mortalityTable.mixed.R @@ -0,0 +1,31 @@ +#' @include mortalityTable.R +NULL + +#' Class mortalityTable.mixed - Life table as a mix of two life tables +#' +#' A cohort life table obtained by mixing two life tables with the given weights +#' +#' @slot table1 The first \code{mortalityTable} +#' @slot table2 The second \code{mortalityTable} +#' @slot weight1 The weight of the first mortality table +#' @slot weight2 The weight of the second mortality table +#' @slot loading Additional security loading +#' +#' @export mortalityTable.mixed +#' @exportClass mortalityTable.mixed +mortalityTable.mixed = setClass( + "mortalityTable.mixed", + slots = c( + table1 = "mortalityTable", + table2 = "mortalityTable", + weight1 = "numeric", + weight2 = "numeric", + loading = "numeric" + ), + prototype=list( + weight1 = 1/2, + weight2 = 1/2, + loading = 0 + ), + contains = "mortalityTable" +) diff --git a/R/valuationTable.observed.R b/R/mortalityTable.observed.R similarity index 62% rename from R/valuationTable.observed.R rename to R/mortalityTable.observed.R index d86201a4c67a631ba3d54bf38cc4057cd13908db..de6d4fc182a69b5bcf53a06f5c32b1749c439cda 100644 --- a/R/valuationTable.observed.R +++ b/R/mortalityTable.observed.R @@ -1,7 +1,7 @@ -#' @include valuationTable.R +#' @include mortalityTable.R NULL -#' Class valuationTable.observed - Life table from actual observations +#' Class mortalityTable.observed - Life table from actual observations #' #' A cohort life table described by actual observations (data frame of PODs #' per year and age) @@ -10,10 +10,10 @@ NULL #' @slot years The observation years #' @slot ages The observation ages #' -#' @export valuationTable.observed -#' @exportClass valuationTable.observed -valuationTable.observed = setClass( - "valuationTable.observed", +#' @export mortalityTable.observed +#' @exportClass mortalityTable.observed +mortalityTable.observed = setClass( + "mortalityTable.observed", slots = list( data = "data.frame", years = "numeric", @@ -24,5 +24,5 @@ valuationTable.observed = setClass( years = c(), ages = c() ), - contains = "valuationTable" + contains = "mortalityTable" ) diff --git a/R/valuationTable.period.R b/R/mortalityTable.period.R similarity index 67% rename from R/valuationTable.period.R rename to R/mortalityTable.period.R index 5f046aa259a3d4a8527d949143446c31b7d961be..b33b150b15fc64097de63bc407f93110a0770477 100644 --- a/R/valuationTable.period.R +++ b/R/mortalityTable.period.R @@ -1,7 +1,7 @@ -#' @include valuationTable.R +#' @include mortalityTable.R NULL -#' Class valuationTable.period - Period life tables +#' Class mortalityTable.period - Period life tables #' #' A period life table, giving death probabilities for each age, up to #' maximum age \code{omega}. The \code{baseYear} slot can be used to hold @@ -10,10 +10,10 @@ NULL #' @slot ages The ages corresponding to the entries of the deathProbs #' @slot deathProbs The one-year death probabilities for the ages #' -#' @export valuationTable.period -#' @exportClass valuationTable.period -valuationTable.period = setClass( - "valuationTable.period", +#' @export mortalityTable.period +#' @exportClass mortalityTable.period +mortalityTable.period = setClass( + "mortalityTable.period", slots = list( ages = "numeric", deathProbs = "numeric" @@ -22,5 +22,5 @@ valuationTable.period = setClass( ages = eval(0:120), deathProbs = rep(1,120) ), - contains = "valuationTable" + contains = "mortalityTable" ) diff --git a/R/valuationTable.trendProjection.R b/R/mortalityTable.trendProjection.R similarity index 75% rename from R/valuationTable.trendProjection.R rename to R/mortalityTable.trendProjection.R index 3da5c67c0eb5432209b6a308e3b1c2427555a09b..c291164d240181f6ab79d233f4d68c73bad07940 100644 --- a/R/valuationTable.trendProjection.R +++ b/R/mortalityTable.trendProjection.R @@ -1,9 +1,9 @@ -#' @include valuationTable.R valuationTable.period.R +#' @include mortalityTable.R mortalityTable.period.R NULL -#' Class valuationTable.trendProjection - Cohort life table with age-specific trend +#' Class mortalityTable.trendProjection - Cohort mortality table with age-specific trend #' -#' A cohort life table, obtained by a trend projection from a given base table +#' A cohort mortality table, obtained by a trend projection from a given base table #' (PODs for a given observation year). Typically, the trend is obtained by #' the Lee-Carter method or some other trend estimation. #' The dampingFunction can be used to modify the cumulative years (e.g. G(tau+x) @@ -22,10 +22,10 @@ NULL #' the dumping function simply modifies the coefficients of #' \code{trend}. #' -#' @export valuationTable.trendProjection -#' @exportClass valuationTable.trendProjection -valuationTable.trendProjection = setClass( - "valuationTable.trendProjection", +#' @export mortalityTable.trendProjection +#' @exportClass mortalityTable.trendProjection +mortalityTable.trendProjection = setClass( + "mortalityTable.trendProjection", slots = list( baseYear = "numeric", trend = "numeric", @@ -38,5 +38,5 @@ valuationTable.trendProjection = setClass( dampingFunction = identity, trend2 = 0 ), - contains = "valuationTable.period" + contains = "mortalityTable.period" ) diff --git a/R/mortalityTables.list.R b/R/mortalityTables.list.R new file mode 100644 index 0000000000000000000000000000000000000000..7ff5830bc367c1f3dbe3ab6aef0f81c2b6f6cdd6 --- /dev/null +++ b/R/mortalityTables.list.R @@ -0,0 +1,13 @@ +#' List all available sets of life tables provided by the \link[MortalityTables]{MortalityTables-package} package +#' An existing life table can then be loaded with \link{mortalityTables.load}. +#' +#' @param pattern Restrict the results only to life table sets that match the pattern (default: "*" to show all sets) +#' +#' @export +mortalityTables.list = function(pattern="*") { + filepath = system.file("extdata", package="MortalityTables"); + files = Sys.glob(file.path(filepath, paste("MortalityTables_", pattern, ".R", sep=""))) + gsub('^MortalityTables_(.*).R$', '\\1', basename(files)) +} + + diff --git a/R/valuationTables.load.R b/R/mortalityTables.load.R similarity index 53% rename from R/valuationTables.load.R rename to R/mortalityTables.load.R index 873c6e849d59d00b514a6119d4e26ab886ed116c..6aa3848f98842c81a706ed1727f6154d3c09ad01 100644 --- a/R/valuationTables.load.R +++ b/R/mortalityTables.load.R @@ -1,26 +1,26 @@ -#' Load a named set of life tables provided by the \link{ValuationTables} package +#' Load a named set of mortality tables provided by the \link{MortalityTables} package #' #' @param dataset The set of life tables to be loaded. A list of all available -#' data sets is provided by the +#' data sets is provided by the function \code{\link{mortalityTables.list}}. #' @param wildcard Whether the dataset name contains wildcard. If TRUE, all #' datasets matching the pattern will be loaded #' #' @export -valuationTables.load = function(dataset, wildcard=FALSE) { +mortalityTables.load = function(dataset, wildcard=FALSE) { if (wildcard) { - sets = valuationTables.list(dataset); + sets = mortalityTables.list(dataset); } else { sets = c(dataset); } for (set in sets) { sname = gsub("[^-A-Za-z0-9_.]", "", set); - message("Loading valuation life table data set '", sname, "'"); - filename = system.file("extdata", paste("ValuationTables_", sname, ".R", sep = ""), package="ValuationTables"); + message("Loading mortality table data set '", sname, "'"); + filename = system.file("extdata", paste("MortalityTables_", sname, ".R", sep = ""), package="MortalityTables"); if (filename != "") { sys.source(filename, envir = globalenv()) #envir=topenv()) } else { - warning(sprintf("Unable to locate dataset '%s' provided by the ValuationTables package!", sname)); + warning(sprintf("Unable to locate dataset '%s' provided by the MortalityTables package!", sname)); } } } diff --git a/R/periodDeathProbabilities.R b/R/periodDeathProbabilities.R index 5bdd8746457d7513743e58bca5bdb47d12169558..cbe2220ff3172773204d11e4916fc0bf9f4b15ee 100644 --- a/R/periodDeathProbabilities.R +++ b/R/periodDeathProbabilities.R @@ -1,10 +1,10 @@ -#' @include valuationTable.R valuationTable.period.R valuationTable.trendProjection.R valuationTable.improvementFactors.R valuationTable.mixed.R +#' @include mortalityTable.R mortalityTable.period.R mortalityTable.trendProjection.R mortalityTable.improvementFactors.R mortalityTable.mixed.R NULL #' Return the (period) death probabilities of the life table for a given #' observation year #' -#' @param object The life table object (class inherited from valuationTable) +#' @param object The life table object (class inherited from mortalityTable) #' @param ... Other parameters (currently unused) #' @param Period The observation year for which the period death probabilities should be determined #' @@ -13,14 +13,14 @@ setGeneric("periodDeathProbabilities", function(object, ..., Period = 1975) stan #' @describeIn periodDeathProbabilities Return the (period) death probabilities #' of the life table for a given observation year -setMethod("periodDeathProbabilities", "valuationTable.period", +setMethod("periodDeathProbabilities", "mortalityTable.period", function(object, ..., Period = 1975) { object@modification(object@deathProbs * (1 + object@loading)); }) #' @describeIn periodDeathProbabilities Return the (period) death probabilities #' of the life table for a given observation year -setMethod("periodDeathProbabilities", "valuationTable.ageShift", +setMethod("periodDeathProbabilities", "mortalityTable.ageShift", function (object, ..., Period = 1975) { # TODO qx = object@deathProbs * (1 + object@loading); @@ -32,7 +32,7 @@ setMethod("periodDeathProbabilities", "valuationTable.ageShift", #' @describeIn periodDeathProbabilities Return the (period) death probabilities #' of the life table for a given observation year -setMethod("periodDeathProbabilities", "valuationTable.trendProjection", +setMethod("periodDeathProbabilities", "mortalityTable.trendProjection", function (object, ..., Period = 1975) { qx = object@deathProbs * (1 + object@loading); if (is.null(object@trend2) || length(object@trend2) <= 1) { @@ -51,7 +51,7 @@ setMethod("periodDeathProbabilities", "valuationTable.trendProjection", #' @describeIn periodDeathProbabilities Return the (period) death probabilities #' of the life table for a given observation year -setMethod("periodDeathProbabilities", "valuationTable.improvementFactors", +setMethod("periodDeathProbabilities", "mortalityTable.improvementFactors", function (object, ..., Period = 1975) { qx = object@deathProbs * (1 + object@loading); finalqx = (1 - object@improvement) ^ (Period - object@baseYear) * qx; @@ -60,7 +60,7 @@ setMethod("periodDeathProbabilities", "valuationTable.improvementFactors", #' @describeIn periodDeathProbabilities Return the (period) death probabilities #' of the life table for a given observation year -setMethod("periodDeathProbabilities", "valuationTable.mixed", +setMethod("periodDeathProbabilities", "mortalityTable.mixed", function (object, ..., Period = 1975) { qx1 = periodDeathProbabilities(object@table1, ..., Period = Period) * (1 + object@loading); qx2 = periodDeathProbabilities(object@table2, ..., Period = Period) * (1 + object@loading); diff --git a/R/plot.valuationTable.R b/R/plot.mortalityTable.R similarity index 73% rename from R/plot.valuationTable.R rename to R/plot.mortalityTable.R index 5d02a5fa3a7466e56c931f4118385de6e0d34d5f..192e71f46eefc09575e1d23e698d3f73b467ffa7 100644 --- a/R/plot.valuationTable.R +++ b/R/plot.mortalityTable.R @@ -1,15 +1,15 @@ -#' Plot multiple valuation tables (life tables) in one plot +#' Plot multiple mortality tables (life tables) in one plot #' -#' \code{plot.valuationTable} displays multiple life tables (objects of child -#' classes of \code{valuationTable}) in one plot, with a legend showing the +#' \code{plot.mortalityTable} displays multiple life tables (objects of child +#' classes of \code{mortalityTable}) in one plot, with a legend showing the #' names of the tables. If the argument \code{reference} not given, all #' mortality rates are plotted on a log-linear scale for comparison. If the #' argument \code{reference} is given and is a valid life table, then all #' death probabilities are scaled by the given reference table and the y-axis #' shows the death rates as percentage of the reference table. #' -#' @param x First life table to be plotted. Must be a \code{valuationTable} object for the dispatcher to call this function -#' @param ... Additional life tables to be plotted (\code{valuationTable} objects) +#' @param x First life table to be plotted. Must be a \code{mortalityTable} object for the dispatcher to call this function +#' @param ... Additional life tables to be plotted (\code{mortalityTable} objects) #' @param xlim,ylim Axes limitatation (as a two-element vectors) #' @param xlab,ylab Axes labels (default for x-axis: "Alter", default for y-axis: "Sterbewahrscheinlichkeit q_x") #' @param title The plot title @@ -19,7 +19,7 @@ #' #' @examples #' # Load the Austrian census data -#' valuationTables.load("Austria_Census") +#' mortalityTables.load("Austria_Census") #' #' # Plot some select census tables in a log-linear plot #' plot(mort.AT.census.1869.male, mort.AT.census.1869.female, @@ -37,15 +37,15 @@ #' title="Austrian Census tables, relative to 2011 males", #' reference=mort.AT.census.2011.male) #' -#' @seealso \code{\link{plotValuationTables}} and \code{\link{plotValuationTableComparisons}} +#' @seealso \code{\link{plotMortalityTables}} and \code{\link{plotMortalityTableComparisons}} #' #' @import scales #' @export -plot.valuationTable = function(x, ..., reference=NULL) { +plot.mortalityTable = function(x, ..., reference=NULL) { if (!missing(reference) && !is.null(reference)) { - plotValuationTableComparisons(x, ..., reference=reference) + plotMortalityTableComparisons(x, ..., reference=reference) } else { - plotValuationTables(x, ...) + plotMortalityTables(x, ...) } } diff --git a/R/plotValuationTableComparisons.R b/R/plotMortalityTableComparisons.R similarity index 88% rename from R/plotValuationTableComparisons.R rename to R/plotMortalityTableComparisons.R index 98f2d6abee7c83b20e226e8fbb32a1cc28b97580..413236fa6c9d30a2b0dd987419c1bc1dd1550c23 100644 --- a/R/plotValuationTableComparisons.R +++ b/R/plotMortalityTableComparisons.R @@ -1,13 +1,13 @@ -#' Plot multiple valuation tables (life tables) in one plot, relative to a given reference table +#' Plot multiple mortality tables (life tables) in one plot, relative to a given reference table #' -#' \code{plotValuationTableComparisons} prints multiple life tables (objects of child classes of \code{valuationTable}) in one plot and scales each by the given reference table, so that the relative mortality can be easily seen. A legend is added showing the names of the tables. +#' \code{plotMortalityTableComparisons} prints multiple life tables (objects of child classes of \code{mortalityTable}) in one plot and scales each by the given reference table, so that the relative mortality can be easily seen. A legend is added showing the names of the tables. #' -#' @inheritParams plotValuationTables +#' @inheritParams plotMortalityTables #' @param reference The reference table that determines the 100\% values. If not given, the first argument of \code{data} is used as reference table. #' #' @import scales #' @export -plotValuationTableComparisons = function( +plotMortalityTableComparisons = function( data, ..., xlim = NULL, ylim = NULL, xlab = NULL, ylab = NULL, @@ -15,9 +15,9 @@ plotValuationTableComparisons = function( legend.position = c(0.9,0.1), legend.key.width = unit(25, "mm"), reference = NULL) { - # If no reference mortality table is given, use the first table (data if its a valuation table) + # If no reference mortality table is given, use the first table (data if its a mortality table) if (missing(reference)) { - if (inherits(data, "valuationTable")) { + if (inherits(data, "mortalityTable")) { reference = data; } else { reference = NULL;# TODO; diff --git a/R/plotValuationTables.R b/R/plotMortalityTables.R similarity index 82% rename from R/plotValuationTables.R rename to R/plotMortalityTables.R index d77824d37a0c36fde15cd55bf6ae4efad0ddea3c..2021fc210ac26018b5a4be4f122e5ad7702459bd 100644 --- a/R/plotValuationTables.R +++ b/R/plotMortalityTables.R @@ -1,9 +1,9 @@ -#' Plot multiple valuation tables (life tables) in one plot +#' Plot multiple mortality tables (life tables) in one plot #' -#' \code{plotValuationTables} prints multiple life tables (objects of child classes of \code{valuationTable}) in one log-linear plot, with a legend showing the names of the tables. +#' \code{plotMortalityTables} prints multiple life tables (objects of child classes of \code{mortalityTable}) in one log-linear plot, with a legend showing the names of the tables. #' -#' @param data First life table to be plotted. Either a \code{data.frame} generated by \code{makeQxDataFrame} or a \code{valuationTable} object -#' @param ... Additional life tables to be plotted (if \code{data} is a \code{valuationTable} object) +#' @param data First life table to be plotted. Either a \code{data.frame} generated by \code{makeQxDataFrame} or a \code{mortalityTable} object +#' @param ... Additional life tables to be plotted (if \code{data} is a \code{mortalityTable} object) #' @param xlim X-axis limitatation (as a two-element vector) #' @param ylim Y-axis limitatation (as a two-element vector) #' @param xlab X-axis label (default: "Alter") @@ -14,7 +14,7 @@ #' #' @import scales #' @export -plotValuationTables = function(data, ..., xlim=NULL, ylim=NULL, xlab=NULL, ylab=NULL, title = "", legend.position=c(0.9,0.1), legend.key.width = unit(25, "mm")) { +plotMortalityTables = function(data, ..., xlim=NULL, ylim=NULL, xlab=NULL, ylab=NULL, title = "", legend.position=c(0.9,0.1), legend.key.width = unit(25, "mm")) { if (!is.data.frame(data)) { data = makeQxDataFrame(data, ...); } @@ -61,7 +61,7 @@ globalVariables(c("x", "y", ".x")) # -# plotValuationTables(mort.AT.census.1869.male, mort.AT.census.1869.female, mort.AT.census.2011.male, mort.AT.census.2011.female, AVOe2005R.male, AVOe2005R.female, YOB=1972,title="Vergleich österreichische Sterbetafeln, YOB=1972 (bei Generationentafeln)") +# plotMortalityTables(mort.AT.census.1869.male, mort.AT.census.1869.female, mort.AT.census.2011.male, mort.AT.census.2011.female, AVOe2005R.male, AVOe2005R.female, YOB=1972,title="Vergleich österreichische Sterbetafeln, YOB=1972 (bei Generationentafeln)") # -# plotValuationTables(mort.AT.census.2001.male, AVOe2005R.male, YOB=1972, title="Vergleich österreichische Sterbetafeln") -# plotValuationTables(getCohortTable(AVOe2005R.male, YOB=1972), getCohortTable(AVOe2005R.male, YOB=2016), title="Vergleich österreichische Sterbetafeln") +# plotMortalityTables(mort.AT.census.2001.male, AVOe2005R.male, YOB=1972, title="Vergleich österreichische Sterbetafeln") +# plotMortalityTables(getCohortTable(AVOe2005R.male, YOB=1972), getCohortTable(AVOe2005R.male, YOB=2016), title="Vergleich österreichische Sterbetafeln") diff --git a/R/setLoading.R b/R/setLoading.R index 3de795e9675e882279641e3f180dd09b07583afe..6cf380d9fe64527db1f3950f646baf928808fb48 100644 --- a/R/setLoading.R +++ b/R/setLoading.R @@ -1,16 +1,16 @@ -#' @include valuationTable.R +#' @include mortalityTable.R NULL #' Return a copy of the table with an additional loading added #' -#' @param object A life table object (instance of a \code{valuationTable} class) +#' @param object A life table object (instance of a \code{mortalityTable} class) #' @param loading The additional (security) loading to be added to the table. #' #' @exportMethod setLoading setGeneric("setLoading", function(object, loading = 0) standardGeneric("setLoading")); #' @describeIn setLoading Return the life table with the given loading set -setMethod("setLoading", "valuationTable", +setMethod("setLoading", "mortalityTable", function (object, loading = 0) { object@loading = loading; object diff --git a/R/setModification.R b/R/setModification.R index 9f1ad64ed23d095b3d3879bc26b110f0ac6f2ba4..6c0ca5c18c5640e6bc4c9744d5ceb0aab4e1089c 100644 --- a/R/setModification.R +++ b/R/setModification.R @@ -1,16 +1,16 @@ -#' @include valuationTable.R +#' @include mortalityTable.R NULL #' Return a copy of the table with the given modification function added #' -#' @param object A life table object (instance of a \code{valuationTable} class) +#' @param object A life table object (instance of a \code{mortalityTable} class) #' @param modification The postprocessing modification function (for example, so enforce a lower bound). #' #' @exportMethod setModification setGeneric("setModification", function(object, modification = 0) standardGeneric("setModification")); #' @describeIn setModification Return the life table with the given modification set -setMethod("setModification", "valuationTable", +setMethod("setModification", "mortalityTable", function (object, modification = 0) { object@modification = modification; object diff --git a/R/undampenTrend.R b/R/undampenTrend.R index a3d08bbc6ec5a8a84a7a8e849068fc28341234cb..de4f2a7fc65c83a18cdba13cffaa29b91762dfab 100644 --- a/R/undampenTrend.R +++ b/R/undampenTrend.R @@ -1,16 +1,16 @@ -#' @include valuationTable.trendProjection.R +#' @include mortalityTable.trendProjection.R NULL -#' Return a \code{valuationTable.trendProjection} object with the trend damping removed. +#' Return a \code{mortalityTable.trendProjection} object with the trend damping removed. #' -#' @param object The life table object (class inherited from valuationTable) +#' @param object The life table object (class inherited from mortalityTable) #' #' @exportMethod undampenTrend setGeneric("undampenTrend", function (object) standardGeneric("undampenTrend")); -#' @describeIn undampenTrend Return a \code{valuationTable.trendProjection} +#' @describeIn undampenTrend Return a \code{mortalityTable.trendProjection} #' object with the trend damping removed. -setMethod("undampenTrend", "valuationTable.trendProjection", +setMethod("undampenTrend", "mortalityTable.trendProjection", function (object) { object@dampingFunction=identity; object diff --git a/R/valuationTable.mixed.R b/R/valuationTable.mixed.R deleted file mode 100644 index c5acb3300f225f8dcd2f9e1c143b6a72601241a9..0000000000000000000000000000000000000000 --- a/R/valuationTable.mixed.R +++ /dev/null @@ -1,31 +0,0 @@ -#' @include valuationTable.R -NULL - -#' Class valuationTable.mixed - Life table as a mix of two life tables -#' -#' A cohort life table obtained by mixing two life tables with the given weights -#' -#' @slot table1 The first \code{valuationTable} -#' @slot table2 The second \code{valuationTable} -#' @slot weight1 The weight of the first valuation table -#' @slot weight2 The weight of the second valuation table -#' @slot loading Additional security loading -#' -#' @export valuationTable.mixed -#' @exportClass valuationTable.mixed -valuationTable.mixed = setClass( - "valuationTable.mixed", - slots = c( - table1 = "valuationTable", - table2 = "valuationTable", - weight1 = "numeric", - weight2 = "numeric", - loading = "numeric" - ), - prototype=list( - weight1 = 1/2, - weight2 = 1/2, - loading = 0 - ), - contains = "valuationTable" -) diff --git a/R/valuationTables.list.R b/R/valuationTables.list.R deleted file mode 100644 index a01175f2d986c522ad0c6955ae795dc825f6c781..0000000000000000000000000000000000000000 --- a/R/valuationTables.list.R +++ /dev/null @@ -1,13 +0,0 @@ -#' List all available sets of life tables provided by the \link[ValuationTables]{ValuationTables-package} package -#' An existing life table can then be loaded with \link{valuationTables.load}. -#' -#' @param pattern Restrict the results only to life table sets that match the pattern (default: "*" to show all sets) -#' -#' @export -valuationTables.list = function(pattern="*") { - filepath = system.file("extdata", package="ValuationTables"); - files = Sys.glob(file.path(filepath, paste("ValuationTables_", pattern, ".R", sep=""))) - gsub('^ValuationTables_(.*).R$', '\\1', basename(files)) -} - - diff --git a/README.md b/README.md index d9f51a8bd73a0d296e093979c14f64896fe03b08..7c83126b5a27b6f9cfe5ddf0ed1032098a046073 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,81 @@ -# r-valuation-tables -R package implementing actuarial valuation tables (period and cohort life tables) and also general insurance contracts +# MortalityTables +## Author: Reinhold Kainhofer, reinhold@kainhofer.com + +R package implementing actuarial mortality tables (period and cohort life tables) + +## About the package + +The MortalityTables package provides the `mortalityTable` base class and +some derived classes to handle different types of mortality tables (also +called life tables), mainly +used for life insurance. Additionally it provides a plot function to compare +multiple life tables either directly using the absolute mortalities in +log-linear plots or using relative mortalities as percentages of a given +reference table. + +### Types of Life Tables + +Provided types of mortality tables are: + +* Base class + : Class `mortalityTable` +* Period life table + : Class `mortalityTable.period (ages, deathProbs, ..., baseYear=2000)` + : Death probabilities observed / predicted for one observation year; + No dependency on the bith year is assumed. +* Cohort life table using age-specific trends + : Class `mortalityTable.trendProjection` + : Death probabilities of a given base year are projected into the future + using age-specific trends $\lambda_x$. The death probability of an $x$-year old in year + `baseYear + n` is calculated as: + $$q_x^{(baseYear+n)} = q_x^{(baseYear)} \cdot e^{-n\cdot\lambda_x}$$ + : Consequently, the death probabilities for a person born in year `YOB` can be calculated as + $$q_x^{YOB} = q_x^{(base)} \cdot e^{-(YOB+x-baseYear)\cdot \lambda_x}$$ +* Cohort life table approximation using age shift + : Class `mortalityTable.ageShift` + : Death probabilities for cohort $YOB$ are obtained by using death probabilities + for cohort $X$ and modifying the technical age with a birth-year dependent shift: + $$q_x^{YOB} = q_{x+shift(YOB)}^{(base)}$$ +<!-- * Observed life table --> +<!-- : Class `mortalityTable.observed` --> +<!-- : Death probabilities observed during several years. The probabilities are --> +<!-- stored as a matrix with observation year and age as dimensions. --> +* Mixed life table + : Class `mortalityTable.mixed` + : Arithmetic mean of two life tables with given weights. This approach is + often used to generate unisex life tables by mixing male and female + mortalities with given weights (e.g. 70:30 or 40:60) +* Cohort life table using age-specific improvement factors + : Class `mortalityTable.improvementFactors` + : Project base life table using age-specific improvement factors. + +## Loading the MortalityTables package +``` +library("MortalityTables") +``` + +## Provided Data Sets + +The package provides several real-life life tables published by census bureaus +and actuarial associations around the world. You can use the function +`mortalityTables.list` to list all available datasets (if no argument is given) +or all datasets that match the given pattern (wildcard character is *). You can +then use `mortalityTables.load` to load either one single data set or all +datasets that match the pattern (if `wildcard=TRUE` is given). + +``` +# list all available data sets +mortalityTables.list() + +# list all datasets for Austria +mortalityTables.list("Austria_*") + +# Load the German annuity table DAV 2004-R +mortalityTables.load("Germany_Annuities_DAV2004R") + +# Load all Austrian data sets +mortalityTables.load("Austria_*", wildcard=TRUE) +``` + +## Further information +For further information on how to use the package, see the "Using the MortalityTables Package" vignette. \ No newline at end of file diff --git a/inst/extdata/MortalityTables_Austria_Annuities.R b/inst/extdata/MortalityTables_Austria_Annuities.R new file mode 100644 index 0000000000000000000000000000000000000000..93be8e6cc4d010dd351f91c50acfc9f3f431395c --- /dev/null +++ b/inst/extdata/MortalityTables_Austria_Annuities.R @@ -0,0 +1,3 @@ +stopifnot(require(methods), require(utils), require(MortalityTables)) # MortalityTable classes; new; Excel reader + +mortalityTables.load("Austria_Annuities_*", wildcard=TRUE) diff --git a/inst/extdata/ValuationTables_Austria_Annuities_AVOe1996R.R b/inst/extdata/MortalityTables_Austria_Annuities_AVOe1996R.R similarity index 84% rename from inst/extdata/ValuationTables_Austria_Annuities_AVOe1996R.R rename to inst/extdata/MortalityTables_Austria_Annuities_AVOe1996R.R index c8444babc5329ccd876b7c39b5d1a2bd64370a02..dbcb2eb7668b141daf1e9c8e3badabf9a691c311 100644 --- a/inst/extdata/ValuationTables_Austria_Annuities_AVOe1996R.R +++ b/inst/extdata/MortalityTables_Austria_Annuities_AVOe1996R.R @@ -1,4 +1,4 @@ -stopifnot(require(methods), require(utils), require(ValuationTables)) # ValuationTable classes; new; Excel reader +stopifnot(require(methods), require(utils), require(MortalityTables)) # MortalityTable classes; new; Excel reader ############################################################################### @@ -8,7 +8,7 @@ stopifnot(require(methods), require(utils), require(ValuationTables)) # Valuatio AVOe1996R.exakt.data = utils::read.csv( system.file("extdata", "Austria_Annuities_AVOe1996R.csv", - package="ValuationTables"), + package="MortalityTables"), skip=2) AVOe1996R.trend.switching = function(year) { @@ -25,7 +25,7 @@ AVOe1996R.trend.switching = function(year) { } } -AVÖ1996R.male = valuationTable.trendProjection( +AVÖ1996R.male = mortalityTable.trendProjection( name = "AVÖ 1996R male", ages = AVOe1996R.exakt.data$age, baseYear = 1991, deathProbs = AVOe1996R.exakt.data$qx1991 * AVOe1996R.exakt.data$factorM, @@ -34,7 +34,7 @@ AVÖ1996R.male = valuationTable.trendProjection( dampingFunction = AVOe1996R.trend.switching ); -AVÖ1996R.female = valuationTable.trendProjection( +AVÖ1996R.female = mortalityTable.trendProjection( name = "AVÖ 1996R female", ages = AVOe1996R.exakt.data$age, baseYear = 1991, deathProbs = AVOe1996R.exakt.data$qy1991 * AVOe1996R.exakt.data$factorF, @@ -43,7 +43,7 @@ AVÖ1996R.female = valuationTable.trendProjection( dampingFunction = AVOe1996R.trend.switching ); -AVÖ1996R.male.group = valuationTable.trendProjection( +AVÖ1996R.male.group = mortalityTable.trendProjection( name = "AVÖ 1996R male, group", ages = AVOe1996R.exakt.data$age, baseYear = 1991, deathProbs = AVOe1996R.exakt.data$qx1991 * AVOe1996R.exakt.data$factorMG, @@ -52,7 +52,7 @@ AVÖ1996R.male.group = valuationTable.trendProjection( dampingFunction = AVOe1996R.trend.switching ); -AVÖ1996R.female.group = valuationTable.trendProjection( +AVÖ1996R.female.group = mortalityTable.trendProjection( name = "AVÖ 1996R female, group", ages = AVOe1996R.exakt.data$age, baseYear = 1991, deathProbs = AVOe1996R.exakt.data$qy1991 * AVOe1996R.exakt.data$factorFG, diff --git a/inst/extdata/ValuationTables_Austria_Annuities_AVOe2005R.R b/inst/extdata/MortalityTables_Austria_Annuities_AVOe2005R.R similarity index 82% rename from inst/extdata/ValuationTables_Austria_Annuities_AVOe2005R.R rename to inst/extdata/MortalityTables_Austria_Annuities_AVOe2005R.R index 0e58e2bae66dc5ba31b79bc625d2fcd06232ff39..e88199052ce190cd6a813a0cff60c22a3b82a4f2 100644 --- a/inst/extdata/ValuationTables_Austria_Annuities_AVOe2005R.R +++ b/inst/extdata/MortalityTables_Austria_Annuities_AVOe2005R.R @@ -1,4 +1,4 @@ -stopifnot(require(methods), require(utils), require(ValuationTables)) # ValuationTable classes; new; Excel reader +stopifnot(require(methods), require(utils), require(MortalityTables)) # MortalityTable classes; new; Excel reader ############################################################################### @@ -10,7 +10,7 @@ AVOe2005R.exakt.data = utils::read.csv( system.file( "extdata", "Austria_Annuities_AVOe2005R.csv", - package="ValuationTables"), + package="MortalityTables"), skip = 2); AVOe2005R.trend.damping = function(t) { @@ -19,7 +19,7 @@ AVOe2005R.trend.damping = function(t) { AVOe2005R_gen = function(nm, probs, trend) { with( AVOe2005R.exakt.data, - valuationTable.trendProjection( + mortalityTable.trendProjection( name = nm, ages = age, baseYear = 2001, @@ -58,18 +58,18 @@ AVOe2005R.av.base = utils::read.csv( system.file( "extdata", "Austria_Annuities_AVOe2005R_AVBasis.csv", - package="ValuationTables"), + package="MortalityTables"), skip=2); AVOe2005R.av.verschiebung = utils::read.csv( system.file( "extdata", "Austria_Annuities_AVOe2005R_AVShifts.csv", - package="ValuationTables"), + package="MortalityTables"), row.names=1, skip=2); AVOe2005R_gen.av = function(nm, probs, shft) { - valuationTable.ageShift( + mortalityTable.ageShift( name = nm, ages = AVOe2005R.av.base$age, deathProbs = AVOe2005R.av.base[[probs]], @@ -104,10 +104,10 @@ AVOe2005R.unisex.group.av = AVOe2005R_gen.av( # t = AVOe2005R.unisex; # deathProbabilities(t, YOB = 1981) -# plotValuationTables(mort.AT.census.1869.male, mort.AT.census.1869.female, mort.AT.census.2011.male, mort.AT.census.2011.female, AVOe2005R.male, AVOe2005R.female, YOB = 1972,title = "Vergleich österreichische Sterbetafeln, YOB = 1972 (bei Generationentafeln)") +# plot(mort.AT.census.1869.male, mort.AT.census.1869.female, mort.AT.census.2011.male, mort.AT.census.2011.female, AVOe2005R.male, AVOe2005R.female, YOB = 1972,title = "Vergleich österreichische Sterbetafeln, YOB = 1972 (bei Generationentafeln)") # -# plotValuationTables(mort.AT.census.2001.male, AVOe2005R.male, YOB = 1972, title = "Vergleich österreichische Sterbetafeln") -# plotValuationTables(getCohortTable(AVOe2005R.male, YOB = 1972), getCohortTable(AVOe2005R.male, YOB = 2016), title = "Vergleich österreichische Sterbetafeln") +# plot(mort.AT.census.2001.male, AVOe2005R.male, YOB = 1972, title = "Vergleich österreichische Sterbetafeln") +# plot(getCohortTable(AVOe2005R.male, YOB = 1972), getCohortTable(AVOe2005R.male, YOB = 2016), title = "Vergleich österreichische Sterbetafeln") # makeQxDataFrame(mort.AT.census.1869.male, mort.AT.census.1869.female, mort.AT.census.2011.male, mort.AT.census.2011.female, AVOe2005R.male, AVOe2005R.female, YOB = 1972) # makeQxDataFrame() diff --git a/inst/extdata/ValuationTables_Austria_Annuities_EROMF.R b/inst/extdata/MortalityTables_Austria_Annuities_EROMF.R similarity index 75% rename from inst/extdata/ValuationTables_Austria_Annuities_EROMF.R rename to inst/extdata/MortalityTables_Austria_Annuities_EROMF.R index 22a43ed0625ef0acb7a753872b130d40d18aaafe..56135608ea71e2cf5122e4ea2185906ff3325d3a 100644 --- a/inst/extdata/ValuationTables_Austria_Annuities_EROMF.R +++ b/inst/extdata/MortalityTables_Austria_Annuities_EROMF.R @@ -1,4 +1,4 @@ -stopifnot(require(methods), require(utils), require(ValuationTables)) # ValuationTable classes; new; Excel reader +stopifnot(require(methods), require(utils), require(MortalityTables)) # MortalityTable classes; new; Excel reader ############################################################################### ### EROM/EROF 85 and G 1985 (period and age-shifted generation) @@ -9,37 +9,37 @@ eromf.data = utils::read.csv( system.file( "extdata", "Austria_Annuities_EROMF.csv", - package="ValuationTables"), + package="MortalityTables"), skip=2) eromf.data.av = utils::read.csv( system.file( "extdata", "Austria_Annuities_EROMF_AV.csv", - package="ValuationTables"), + package="MortalityTables"), skip=2) -EROM85.male = valuationTable.period( +EROM85.male = mortalityTable.period( name = "EROM 85, male", ages = eromf.data$Alter, deathProbs = eromf.data$EROM.85 ); -EROF85.female = valuationTable.period( +EROF85.female = mortalityTable.period( name = "EROF 85, female", ages = eromf.data$Alter, deathProbs = eromf.data$EROF.85 ); -EROM.G1950.male = valuationTable.period( +EROM.G1950.male = mortalityTable.period( name = "EROM G 1950 Basistafel, male", ages = eromf.data$Alter, deathProbs = eromf.data$EROM.G1950, baseYear = 1950 ); -EROF.G1950.female = valuationTable.period( +EROF.G1950.female = mortalityTable.period( name = "EROF G 1950 Basistafel, female", ages = eromf.data$Alter, deathProbs = eromf.data$EROF.G1950, @@ -47,14 +47,14 @@ EROF.G1950.female = valuationTable.period( ); -EROM.G1950.male.av = valuationTable.ageShift( +EROM.G1950.male.av = mortalityTable.ageShift( name = "EROM G 1950 mit Altersverschiebung, male", ages = eromf.data$Alter, deathProbs = eromf.data$EROM.G1950, ageShifts = eromf.data.av["Shift.M"], baseYear = 1950 ); -EROF.G1950.female.av = valuationTable.ageShift( +EROF.G1950.female.av = mortalityTable.ageShift( name = "EROF G 1950 mit Altersverschiebung, female", ages = eromf.data$Alter, deathProbs = eromf.data$EROF.G1950, diff --git a/inst/extdata/ValuationTables_Austria_Annuities_RR67.R b/inst/extdata/MortalityTables_Austria_Annuities_RR67.R similarity index 65% rename from inst/extdata/ValuationTables_Austria_Annuities_RR67.R rename to inst/extdata/MortalityTables_Austria_Annuities_RR67.R index 318e6f3536671a58cf00bae8b04fe245cdf9ed92..dceed523cd784627a094bfb4bc88374047c43c2c 100644 --- a/inst/extdata/ValuationTables_Austria_Annuities_RR67.R +++ b/inst/extdata/MortalityTables_Austria_Annuities_RR67.R @@ -1,13 +1,13 @@ -stopifnot(require(methods), require(utils), require(ValuationTables)) # ValuationTable classes; new; Excel reader +stopifnot(require(methods), require(utils), require(MortalityTables)) # MortalityTable classes; new; Excel reader ############################################################################### ### RR67 Rententafel für Männer, 3% ############################################################################### -rr67.data = utils::read.csv(system.file("extdata", "Austria_Annuities_RR67.csv", package="ValuationTables"), skip=2) +rr67.data = utils::read.csv(system.file("extdata", "Austria_Annuities_RR67.csv", package="MortalityTables"), skip=2) -RR67 = valuationTable.period( +RR67 = mortalityTable.period( name = "ÖVM 59/61 RR67", ages = rr67.data$Alter, deathProbs = rr67.data$qx diff --git a/inst/extdata/ValuationTables_Austria_Census.R b/inst/extdata/MortalityTables_Austria_Census.R similarity index 85% rename from inst/extdata/ValuationTables_Austria_Census.R rename to inst/extdata/MortalityTables_Austria_Census.R index 3f147e437127c92c272875cd17397b8e6133dfe5..722013fe38ce4ece9f5bd6b83fb4e83e5f75c21c 100644 --- a/inst/extdata/ValuationTables_Austria_Census.R +++ b/inst/extdata/MortalityTables_Austria_Census.R @@ -1,4 +1,4 @@ -stopifnot(require(methods), require(utils), require(ValuationTables)) # ValuationTable classes; new; Excel reader +stopifnot(require(methods), require(utils), require(MortalityTables)) # MortalityTable classes; new; Excel reader ############################################################################### @@ -6,13 +6,13 @@ stopifnot(require(methods), require(utils), require(ValuationTables)) # Valuatio ############################################################################### -a.vz.dataM = utils::read.csv(system.file("extdata", "Austria_Census_Male.csv", package="ValuationTables"), skip=3); -a.vz.dataF = utils::read.csv(system.file("extdata", "Austria_Census_Female.csv", package="ValuationTables"), skip=3); +a.vz.dataM = utils::read.csv(system.file("extdata", "Austria_Census_Male.csv", package="MortalityTables"), skip=3); +a.vz.dataF = utils::read.csv(system.file("extdata", "Austria_Census_Female.csv", package="MortalityTables"), skip=3); censtable = function(data, name, qslot, baseYear=1900) { qx=data[names(data)==qslot]; ix=complete.cases(qx); - ValuationTables::valuationTable.period(name=name, ages=data$x[ix], deathProbs=qx[ix,], baseYear=baseYear) + mortalityTable.period(name=name, ages=data$x[ix], deathProbs=qx[ix,], baseYear=baseYear) } mort.AT.census.1869.male = censtable(a.vz.dataM, name="ÖVSt 1868/71 M", baseYear=1869, qslot="X1868.71"); @@ -43,9 +43,9 @@ mort.AT.census.1991.female = censtable(a.vz.dataF, name="ÖVSt 1990/92 F", bas mort.AT.census.2001.female = censtable(a.vz.dataF, name="ÖVSt 2000/02 F", baseYear=2001, qslot="X2000.02"); mort.AT.census.2011.female = censtable(a.vz.dataF, name="ÖVSt 2010/2012 F", baseYear=2011, qslot="X2010.12"); -mort.AT.census.2001.unisex = valuationTable.mixed(table1=mort.AT.census.2001.male, table2=mort.AT.census.2001.female) +mort.AT.census.2001.unisex = mortalityTable.mixed(table1=mort.AT.census.2001.male, table2=mort.AT.census.2001.female) -mort.AT.census.ALL.male = ValuationTables::makeQxDataFrame( +mort.AT.census.ALL.male = MortalityTables::makeQxDataFrame( mort.AT.census.1869.male, mort.AT.census.1880.male, mort.AT.census.1890.male, @@ -60,7 +60,7 @@ mort.AT.census.ALL.male = ValuationTables::makeQxDataFrame( mort.AT.census.2001.male, mort.AT.census.2011.male); -mort.AT.census.ALL.female = ValuationTables::makeQxDataFrame( +mort.AT.census.ALL.female = MortalityTables::makeQxDataFrame( mort.AT.census.1869.female, mort.AT.census.1880.female, mort.AT.census.1890.female, @@ -79,6 +79,6 @@ rm(a.vz.dataM, a.vz.dataF, censtable) ############################################################################### -# plotValuationTables(mort.AT.census.ALL.male, title="Vergleich österreichische Sterbetafeln, Männer", legend.position=c(1,0)) -# plotValuationTables(mort.AT.census.ALL.female, title="Vergleich österreichische Sterbetafeln, Frauen", legend.position=c(1,0)) +# plot(mort.AT.census.ALL.male, title="Vergleich österreichische Sterbetafeln, Männer", legend.position=c(1,0)) +# plot(mort.AT.census.ALL.female, title="Vergleich österreichische Sterbetafeln, Frauen", legend.position=c(1,0)) diff --git a/inst/extdata/MortalityTables_Germany_Annuities.R b/inst/extdata/MortalityTables_Germany_Annuities.R new file mode 100644 index 0000000000000000000000000000000000000000..f5008bbe6dc1f001ae813bb8fd06f98ce6f3da65 --- /dev/null +++ b/inst/extdata/MortalityTables_Germany_Annuities.R @@ -0,0 +1,3 @@ +stopifnot(require(methods), require(utils), require(MortalityTables)) + +mortalityTables.load("Germany_Annuities_*", wildcard = TRUE) diff --git a/inst/extdata/ValuationTables_Germany_Annuities_DAV1994R.R b/inst/extdata/MortalityTables_Germany_Annuities_DAV1994R.R similarity index 76% rename from inst/extdata/ValuationTables_Germany_Annuities_DAV1994R.R rename to inst/extdata/MortalityTables_Germany_Annuities_DAV1994R.R index 20373d769221a478be4e74e83f679a11f038e3ba..0dbbe3231c79e471ebcaeac975048e4f073c3f8f 100644 --- a/inst/extdata/ValuationTables_Germany_Annuities_DAV1994R.R +++ b/inst/extdata/MortalityTables_Germany_Annuities_DAV1994R.R @@ -1,4 +1,4 @@ -stopifnot(require(methods), require(utils), require(ValuationTables)) +stopifnot(require(methods), require(utils), require(MortalityTables)) ############################################################################### # DAV 1994R exact (Male, Female), 1st-order only @@ -8,7 +8,7 @@ stopifnot(require(methods), require(utils), require(ValuationTables)) DAV1994R.exakt.data = utils::read.csv( system.file("extdata", "Germany_Annuities_DAV1994R.csv", - package = "ValuationTables"), + package = "MortalityTables"), col.names = c("age", "qx2000", "qy2000", "trendM", "trendF", @@ -20,12 +20,12 @@ DAV1994R.exakt.data = utils::read.csv( DAV1994R.av.data = utils::read.csv( system.file("extdata", "Germany_Annuities_DAV1994R_AV.csv", - package = "ValuationTables"), + package = "MortalityTables"), row.names = 1, skip = 4 ) -DAV1994R.male = valuationTable.trendProjection( +DAV1994R.male = mortalityTable.trendProjection( name = "DAV 1994R male", ages = DAV1994R.exakt.data$age, baseYear = 2000, @@ -33,7 +33,7 @@ DAV1994R.male = valuationTable.trendProjection( trend = DAV1994R.exakt.data$trendM ); -DAV1994R.female = valuationTable.trendProjection( +DAV1994R.female = mortalityTable.trendProjection( name = "DAV 1994R female", ages = DAV1994R.exakt.data$age, baseYear = 2000, @@ -43,14 +43,14 @@ DAV1994R.female = valuationTable.trendProjection( -DAV1994R.male.av = valuationTable.ageShift( +DAV1994R.male.av = mortalityTable.ageShift( name = "DAV 1994R male, age-shifted", ages = DAV1994R.exakt.data$age, deathProbs = DAV1994R.exakt.data$qxAVbase1955, ageShifts = DAV1994R.av.data["AS.Male"] ); -DAV1994R.female.av = valuationTable.ageShift( +DAV1994R.female.av = mortalityTable.ageShift( name = "DAV 1994R female, age-shifted", ages = DAV1994R.exakt.data$age, deathProbs = DAV1994R.exakt.data$qyAVbase1955, @@ -60,4 +60,4 @@ DAV1994R.female.av = valuationTable.ageShift( rm(DAV1994R.exakt.data, DAV1994R.av.data) -# plotValuationTables(DAV1994R.male, DAV1994R.male.av, DAV1994T.male, DAV1994T.male.2Ord, DAV2008T.male) +# plot(DAV1994R.male, DAV1994R.male.av, DAV1994T.male, DAV1994T.male.2Ord, DAV2008T.male) diff --git a/inst/extdata/ValuationTables_Germany_Annuities_DAV2004R.R b/inst/extdata/MortalityTables_Germany_Annuities_DAV2004R.R similarity index 85% rename from inst/extdata/ValuationTables_Germany_Annuities_DAV2004R.R rename to inst/extdata/MortalityTables_Germany_Annuities_DAV2004R.R index 386778439c70f8a7937829c0d6070f28883585a9..c7ca920e5d5e883fde3fca3d450df85501a53a5d 100644 --- a/inst/extdata/ValuationTables_Germany_Annuities_DAV2004R.R +++ b/inst/extdata/MortalityTables_Germany_Annuities_DAV2004R.R @@ -1,4 +1,4 @@ -stopifnot(require(methods), require(utils), require(ValuationTables)) +stopifnot(require(methods), require(utils), require(MortalityTables)) ############################################################################### @@ -8,7 +8,7 @@ stopifnot(require(methods), require(utils), require(ValuationTables)) DAV2004R.data.basistafeln = utils::read.csv( system.file("extdata", "Germany_Annuities_DAV2004R.csv", - package = "ValuationTables"), + package = "MortalityTables"), col.names = c("age", "qxSel2Ord", "qySel2Ord", "qxAgg2Ord", "qyAgg2Ord", "qxSelBestand", "qySelBestand", "qxAggBestand", "qyAggBestand", @@ -20,7 +20,7 @@ DAV2004R.data.basistafeln = utils::read.csv( DAV2004R.data.trend = utils::read.csv( system.file("extdata", "Germany_Annuities_DAV2004R_Trends.csv", - package = "ValuationTables"), + package = "MortalityTables"), col.names = c("age", "trend2Ord.male.start", "trend2Ord.female.start", "trend2Ord.male.end", "trend2Ord.female.end", @@ -34,7 +34,7 @@ DAV2004R.data.trend = utils::read.csv( DAV2004R.data.select = utils::read.csv( system.file("extdata", "Germany_Annuities_DAV2004R_Select.csv", - package = "ValuationTables"), + package = "MortalityTables"), col.names = c("year", "SelectMale", "SelectFemale"), row.names = NULL, skip = 2) @@ -43,7 +43,7 @@ DAV2004R.data.select = utils::read.csv( DAV2004R.data.av.grundtafeln = utils::read.csv( system.file("extdata", "Germany_Annuities_DAV2004R_AVBase.csv", - package = "ValuationTables"), + package = "MortalityTables"), col.names = c("age", "qxBestand", "qyBestand", "qxB20", "qyB20", @@ -55,7 +55,7 @@ DAV2004R.data.av.grundtafeln = utils::read.csv( DAV2004R.data.av = utils::read.csv( system.file("extdata", "Germany_Annuities_DAV2004R_AV.csv", - package = "ValuationTables"), + package = "MortalityTables"), col.names = c("YOB", "shiftMBestand", "shiftFBestand", "shiftMB20", "shiftFB20", "shiftM1Ord", "shiftF1Ord"), @@ -66,7 +66,7 @@ DAV2004R.data.av = utils::read.csv( # colnames(DAV2004R.data.basistafeln) # colnames(DAV2004R.data.trend) -DAV2004R.male = valuationTable.trendProjection( +DAV2004R.male = mortalityTable.trendProjection( name = "DAV 2004R male, aggregate, loaded", ages = DAV2004R.data.basistafeln$age, baseYear = 1999, @@ -74,7 +74,7 @@ DAV2004R.male = valuationTable.trendProjection( trend = DAV2004R.data.trend$trend1Ord.male ); -DAV2004R.female = valuationTable.trendProjection( +DAV2004R.female = mortalityTable.trendProjection( name = "DAV 2004R female, aggregate, loaded", ages = DAV2004R.data.basistafeln$age, baseYear = 1999, @@ -83,7 +83,7 @@ DAV2004R.female = valuationTable.trendProjection( ) -DAV2004R.male.2Ord = valuationTable.trendProjection( +DAV2004R.male.2Ord = mortalityTable.trendProjection( name = "DAV 2004R male, aggregate, unloaded, no trend dampening", ages = DAV2004R.data.basistafeln$age, baseYear = 1999, @@ -91,7 +91,7 @@ DAV2004R.male.2Ord = valuationTable.trendProjection( trend = DAV2004R.data.trend$trend2Ord.male.start ); -DAV2004R.female.2Ord = valuationTable.trendProjection( +DAV2004R.female.2Ord = mortalityTable.trendProjection( name = "DAV 2004R female, aggregate, unloaded, no trend dampening", ages = DAV2004R.data.basistafeln$age, baseYear = 1999, @@ -101,26 +101,26 @@ DAV2004R.female.2Ord = valuationTable.trendProjection( -DAV2004R.male.av = valuationTable.ageShift( +DAV2004R.male.av = mortalityTable.ageShift( name = "DAV 2004R male, age-shifted, aggregate, loaded", ages = DAV2004R.data.av.grundtafeln$age, deathProbs = DAV2004R.data.av.grundtafeln$qx1Ord, ageShifts = DAV2004R.data.av["shiftM1Ord"] ); -DAV2004R.female.av = valuationTable.ageShift( +DAV2004R.female.av = mortalityTable.ageShift( name = "DAV 2004R female, age-shifted, aggregate, loaded", ages = DAV2004R.data.av.grundtafeln$age, deathProbs = DAV2004R.data.av.grundtafeln$qy1Ord, ageShifts = DAV2004R.data.av["shiftF1Ord"] ) -DAV2004R.male.av.2Ord = valuationTable.ageShift( +DAV2004R.male.av.2Ord = mortalityTable.ageShift( name = "DAV 2004R male, age-shifted, aggregate, unloaded, no trend dampening", ages = DAV2004R.data.av.grundtafeln$age, deathProbs = DAV2004R.data.av.grundtafeln$qxBestand, ageShifts = DAV2004R.data.av["shiftMBestand"] ); -DAV2004R.female.av.2Ord = valuationTable.ageShift( +DAV2004R.female.av.2Ord = mortalityTable.ageShift( name = "DAV 2004R female, age-shifted, aggregate, unloaded, no trend dampening", ages = DAV2004R.data.av.grundtafeln$age, deathProbs = DAV2004R.data.av.grundtafeln$qyBestand, diff --git a/inst/extdata/MortalityTables_Germany_Endowments.R b/inst/extdata/MortalityTables_Germany_Endowments.R new file mode 100644 index 0000000000000000000000000000000000000000..e7108f83309373393ef3098203d8526b814b9c0c --- /dev/null +++ b/inst/extdata/MortalityTables_Germany_Endowments.R @@ -0,0 +1,3 @@ +stopifnot(require(methods), require(utils), require(MortalityTables)) # MortalityTable classes; new; Excel reader + +mortalityTables.load("Germany_Endowments_*", wildcard=TRUE) diff --git a/inst/extdata/ValuationTables_Germany_Endowments_DAV1994T.R b/inst/extdata/MortalityTables_Germany_Endowments_DAV1994T.R similarity index 80% rename from inst/extdata/ValuationTables_Germany_Endowments_DAV1994T.R rename to inst/extdata/MortalityTables_Germany_Endowments_DAV1994T.R index a31c479e413481c3051bfc835f5b23dbc51376cf..b17056e9ef77cb37032d15160684b259a68714c6 100644 --- a/inst/extdata/ValuationTables_Germany_Endowments_DAV1994T.R +++ b/inst/extdata/MortalityTables_Germany_Endowments_DAV1994T.R @@ -1,4 +1,4 @@ -stopifnot(require(methods), require(utils), require(ValuationTables)) # ValuationTable classes; new; Excel reader +stopifnot(require(methods), require(utils), require(MortalityTables)) # MortalityTable classes; new; Excel reader #' German Life Tables for (pure) endowments, loaded and unloaded #' - DAV1994T: General German risk life table, based on general mortality 1986/88 @@ -15,26 +15,26 @@ stopifnot(require(methods), require(utils), require(ValuationTables)) # Valuatio DAV1994T.data = utils::read.csv( system.file("extdata", "Germany_Endowments_DAV1994T.csv", - package = "ValuationTables"), + package = "MortalityTables"), skip = 1); # DAV1994T (Male, Female), 1st-order and general mortality 1986/88 -DAV1994T.male = valuationTable.period( +DAV1994T.male = mortalityTable.period( name = "DAV 1994T male, loaded", ages = DAV1994T.data$Alter, deathProbs = DAV1994T.data$qbar_x.a) -DAV1994T.male.2Ord = valuationTable.period( +DAV1994T.male.2Ord = mortalityTable.period( name = "DAV 1994T male, unloaded", ages = DAV1994T.data$Alter, deathProbs = DAV1994T.data$q_x) -DAV1994T.female = valuationTable.period( +DAV1994T.female = mortalityTable.period( name = "DAV 1994T female, loaded", ages = DAV1994T.data$Alter, deathProbs = DAV1994T.data$qbar_y.a ) -DAV1994T.female.2Ord = valuationTable.period( +DAV1994T.female.2Ord = mortalityTable.period( name = "DAV 1994T female, unloaded", ages = DAV1994T.data$Alter, deathProbs = DAV1994T.data$q_y) diff --git a/inst/extdata/ValuationTables_Germany_Endowments_DAV2008T.R b/inst/extdata/MortalityTables_Germany_Endowments_DAV2008T.R similarity index 68% rename from inst/extdata/ValuationTables_Germany_Endowments_DAV2008T.R rename to inst/extdata/MortalityTables_Germany_Endowments_DAV2008T.R index e7ca58e29387e7809497c74158c4f47c3485c07d..e46367a53922d6dcaa4684bdb01d532612421a2a 100644 --- a/inst/extdata/ValuationTables_Germany_Endowments_DAV2008T.R +++ b/inst/extdata/MortalityTables_Germany_Endowments_DAV2008T.R @@ -1,4 +1,4 @@ -stopifnot(require(methods), require(utils), require(ValuationTables)) # ValuationTable classes; new; Excel reader +stopifnot(require(methods), require(utils), require(MortalityTables)) # MortalityTable classes; new; Excel reader #' German Life Tables for (pure) endowments, loaded and unloaded #' - DAV2008T: General German risk life table published by the DAV 2008 @@ -23,7 +23,7 @@ stopifnot(require(methods), require(utils), require(ValuationTables)) # Valuatio DAV2008T.data = utils::read.csv( system.file("extdata", "Germany_Endowments_DAV2008T.csv", - package = "ValuationTables"), + package = "MortalityTables"), col.names = c( "age", "", "", "", "qx2", "qx2NR", "qx2R", # male 2nd order @@ -34,66 +34,66 @@ DAV2008T.data = utils::read.csv( skip = 4); ### DAV 2008T Aggregat (smoker+non-smoker combined) -DAV2008T.male = valuationTable.period( +DAV2008T.male = mortalityTable.period( name = "DAV 2008T male, loaded", ages = DAV2008T.data$age, deathProbs = DAV2008T.data$qx1) -DAV2008T.male.2Ord = valuationTable.period( +DAV2008T.male.2Ord = mortalityTable.period( name = "DAV 2008T male, unloaded", ages = DAV2008T.data$age, deathProbs = DAV2008T.data$qx2) -DAV2008T.female = valuationTable.period( +DAV2008T.female = mortalityTable.period( name = "DAV 2008T female, loaded", ages = DAV2008T.data$age, deathProbs = DAV2008T.data$qy1) -DAV2008T.female.2Ord = valuationTable.period( +DAV2008T.female.2Ord = mortalityTable.period( name = "DAV 2008T female, unloaded", ages = DAV2008T.data$age, deathProbs = DAV2008T.data$qy2) ### DAV 2008T Smoker -DAV2008T.male.smoker = valuationTable.period( +DAV2008T.male.smoker = mortalityTable.period( name = "DAV 2008T male smoker, loaded", ages = DAV2008T.data$age, deathProbs = DAV2008T.data$qx1R) -DAV2008T.male.smoker.2Ord = valuationTable.period( +DAV2008T.male.smoker.2Ord = mortalityTable.period( name = "DAV 2008T male smoker, unloaded", ages = DAV2008T.data$age, deathProbs = DAV2008T.data$qx2R) -DAV2008T.female.smoker = valuationTable.period( +DAV2008T.female.smoker = mortalityTable.period( name = "DAV 2008T female smoker, loaded", ages = DAV2008T.data$age, deathProbs = DAV2008T.data$qy1R) -DAV2008T.female.smoker.2Ord = valuationTable.period( +DAV2008T.female.smoker.2Ord = mortalityTable.period( name = "DAV 2008T female smoker, unloaded", ages = DAV2008T.data$age, deathProbs = DAV2008T.data$qy2R) ### DAV 2008T Non-Smoker -DAV2008T.male.nonsmoker = valuationTable.period( +DAV2008T.male.nonsmoker = mortalityTable.period( name = "DAV 2008T male non-smoker, loaded", ages = DAV2008T.data$age, deathProbs = DAV2008T.data$qx1NR) -DAV2008T.male.nonsmoker.2Ord = valuationTable.period( +DAV2008T.male.nonsmoker.2Ord = mortalityTable.period( name = "DAV 2008T male non-smoker, unloaded", ages = DAV2008T.data$age, deathProbs = DAV2008T.data$qx2NR) -DAV2008T.female.nonsmoker = valuationTable.period( +DAV2008T.female.nonsmoker = mortalityTable.period( name = "DAV 2008T female non-smoker, loaded", ages = DAV2008T.data$age, deathProbs = DAV2008T.data$qy1NR) -DAV2008T.female.nonsmoker.2Ord = valuationTable.period( +DAV2008T.female.nonsmoker.2Ord = mortalityTable.period( name = "DAV 2008T female non-smoker, unloaded", ages = DAV2008T.data$age, deathProbs = DAV2008T.data$qy2NR) @@ -101,9 +101,9 @@ DAV2008T.female.nonsmoker.2Ord = valuationTable.period( rm(DAV2008T.data) -# plotValuationTables(DAV1994T.male, DAV2008T.male, DAV2008T.male.smoker, DAV2008T.male.nonsmoker, DAV2008T.male.2Ord, DAV2008T.male.smoker.2Ord, DAV2008T.male.nonsmoker.2Ord, legend.position = c(1, 0), title = "DAV 2008T Vergleich Raucher-Nichtraucher") +# plot(DAV1994T.male, DAV2008T.male, DAV2008T.male.smoker, DAV2008T.male.nonsmoker, DAV2008T.male.2Ord, DAV2008T.male.smoker.2Ord, DAV2008T.male.nonsmoker.2Ord, legend.position = c(1, 0), title = "DAV 2008T Vergleich Raucher-Nichtraucher") # -# plotValuationTables(DAV1994T.male, DAV2008T.male.2Ord, DAV2008T.male.smoker.2Ord, DAV2008T.male.nonsmoker.2Ord, legend.position = c(1, 0), title = "DAV 2008T Vergleich Raucher-Nichtraucher") +# plot(DAV1994T.male, DAV2008T.male.2Ord, DAV2008T.male.smoker.2Ord, DAV2008T.male.nonsmoker.2Ord, legend.position = c(1, 0), title = "DAV 2008T Vergleich Raucher-Nichtraucher") # -# plotValuationTableComparisons(DAV1994T.male, DAV2008T.male.2Ord, DAV2008T.male.smoker.2Ord, DAV2008T.male.nonsmoker.2Ord, legend.position = c(1, 0), title = "DAV 2008T Vergleich Raucher-Nichtraucher", reference = DAV2008T.male.2Ord, ylim=c(.5,2)) +# plot(DAV1994T.male, DAV2008T.male.2Ord, DAV2008T.male.smoker.2Ord, DAV2008T.male.nonsmoker.2Ord, legend.position = c(1, 0), title = "DAV 2008T Vergleich Raucher-Nichtraucher", reference = DAV2008T.male.2Ord, ylim=c(.5,2)) diff --git a/inst/extdata/MortalityTables_USA_Annuities.R b/inst/extdata/MortalityTables_USA_Annuities.R new file mode 100644 index 0000000000000000000000000000000000000000..642fb7a057974efd59a06c2d3c12c8a0fb91abed --- /dev/null +++ b/inst/extdata/MortalityTables_USA_Annuities.R @@ -0,0 +1,3 @@ +stopifnot(require(methods), require(utils), require(MortalityTables)) + +mortalityTables.load("USA_Annuities_*", wildcard = TRUE) diff --git a/inst/extdata/ValuationTables_USA_Annuities_1971IAM.R b/inst/extdata/MortalityTables_USA_Annuities_1971IAM.R similarity index 66% rename from inst/extdata/ValuationTables_USA_Annuities_1971IAM.R rename to inst/extdata/MortalityTables_USA_Annuities_1971IAM.R index 925a534934e4f45a259d0e0cefe04726ccb002a3..bbfc084102e8160a856c4bdd426ca1778c975c31 100644 --- a/inst/extdata/ValuationTables_USA_Annuities_1971IAM.R +++ b/inst/extdata/MortalityTables_USA_Annuities_1971IAM.R @@ -1,4 +1,4 @@ -stopifnot(require(methods), require(utils), require(ValuationTables)) +stopifnot(require(methods), require(utils), require(MortalityTables)) ############################################################################### @@ -8,28 +8,28 @@ stopifnot(require(methods), require(utils), require(ValuationTables)) USA1971IAM.data = utils::read.csv( system.file("extdata", "USA_Annuities_1971IAM.csv", - package = "ValuationTables"), + package = "MortalityTables"), col.names = c("age","qx", "qy", "B"), skip = 3) -USA1971IAM.male = valuationTable.period ( +USA1971IAM.male = mortalityTable.period ( name = "USA 1971 IAM, male", ages = USA1971IAM.data$age, deathProbs = USA1971IAM.data$qx) -USA1971IAM.female = valuationTable.period ( +USA1971IAM.female = mortalityTable.period ( name = "USA 1971 IAM, female", ages = USA1971IAM.data$age, deathProbs = USA1971IAM.data$qy) -USA1971IAM.male.projected = valuationTable.improvementFactors ( +USA1971IAM.male.projected = mortalityTable.improvementFactors ( name = "USA 1971 IAM, male, projected", ages = USA1971IAM.data$age, baseYear = 1971, deathProbs = USA1971IAM.data$qx, improvement = USA1971IAM.data$B) -USA1971IAM.female.projected = valuationTable.improvementFactors ( +USA1971IAM.female.projected = mortalityTable.improvementFactors ( name = "USA 1971 IAM, female, projected", ages = USA1971IAM.data$age, baseYear = 1971, @@ -38,7 +38,5 @@ USA1971IAM.female.projected = valuationTable.improvementFactors ( rm(USA1971IAM.data) -# plotValuationTables(USA1971IAM.male, USA1971IAM.male.projected, YOB = 1971) -# plotValuationTables(USA1971IAM.male, USA1971IAM.male.projected, Period = 1999) - - +# plot(USA1971IAM.male, USA1971IAM.male.projected, YOB = 1971) +# plot(USA1971IAM.male, USA1971IAM.male.projected, Period = 1999) diff --git a/inst/extdata/ValuationTables_USA_Annuities_1983a.R b/inst/extdata/MortalityTables_USA_Annuities_1983a.R similarity index 61% rename from inst/extdata/ValuationTables_USA_Annuities_1983a.R rename to inst/extdata/MortalityTables_USA_Annuities_1983a.R index ead1d69b154f0389e4f6b05811ecf7c272b89d80..92e3bf708a297bf1173dd96a53ec3c76b5389f02 100644 --- a/inst/extdata/ValuationTables_USA_Annuities_1983a.R +++ b/inst/extdata/MortalityTables_USA_Annuities_1983a.R @@ -1,4 +1,4 @@ -stopifnot(require(methods), require(utils), require(ValuationTables)) +stopifnot(require(methods), require(utils), require(MortalityTables)) ############################################################################### ### 1983 Table "a" (individual) and GAM (group annuities), period tables @@ -7,35 +7,35 @@ stopifnot(require(methods), require(utils), require(ValuationTables)) USA1983a.data = utils::read.csv( system.file("extdata", "USA_Annuities_1983a_GAM.csv", - package = "ValuationTables"), + package = "MortalityTables"), col.names = c("age","qx", "qy", "qxG", "qyG"), skip = 3) -USA1983a.male = valuationTable.period ( +USA1983a.male = mortalityTable.period ( name = "USA 1983 Table a, male", ages = USA1983a.data$age, deathProbs = USA1983a.data$qx) -USA1983a.female = valuationTable.period ( +USA1983a.female = mortalityTable.period ( name = "USA 1983 Table a, female", ages = USA1983a.data$age, deathProbs = USA1983a.data$qy) -USA1983GAM.male = valuationTable.period ( +USA1983GAM.male = mortalityTable.period ( name = "USA 1983 GAM, male", ages = USA1983a.data$age, deathProbs = USA1983a.data$qxG) -USA1983GAM.female = valuationTable.period ( +USA1983GAM.female = mortalityTable.period ( name = "USA 1983 GAM, female", ages = USA1983a.data$age, deathProbs = USA1983a.data$qyG) rm(USA1983a.data) -# plotValuationTables(USA1971IAM.male, USA1971IAM.male.projected, YOB = 1971) -# plotValuationTables(USA1971IAM.male, USA1971IAM.male.projected, Period = 1999) -# plotValuationTables(USA1971IAM.male, USA1983a.male, USA1983GAM.male, YOB = 1971) +# plot(USA1971IAM.male, USA1971IAM.male.projected, YOB = 1971) +# plot(USA1971IAM.male, USA1971IAM.male.projected, Period = 1999) +# plot(USA1971IAM.male, USA1983a.male, USA1983GAM.male, YOB = 1971) diff --git a/inst/extdata/ValuationTables_USA_Annuities_1994GAR.R b/inst/extdata/MortalityTables_USA_Annuities_1994GAR.R similarity index 71% rename from inst/extdata/ValuationTables_USA_Annuities_1994GAR.R rename to inst/extdata/MortalityTables_USA_Annuities_1994GAR.R index a82e27480eeb7a0ebbe73392c7449662185b89c2..653bcccd471c6e38c41afdbe0239af5733368e2a 100644 --- a/inst/extdata/ValuationTables_USA_Annuities_1994GAR.R +++ b/inst/extdata/MortalityTables_USA_Annuities_1994GAR.R @@ -1,4 +1,4 @@ -stopifnot(require(methods), require(utils), require(ValuationTables)) +stopifnot(require(methods), require(utils), require(MortalityTables)) ############################################################################### ### 1994 GAR/GAM group annuity tables, with improvement factors AA_x @@ -7,28 +7,28 @@ stopifnot(require(methods), require(utils), require(ValuationTables)) USA1994GAM.data = utils::read.csv( system.file("extdata", "USA_Annuities_1994GAR.csv", - package = "ValuationTables"), + package = "MortalityTables"), col.names = c("age","qx", "AAx", "qy", "AAy", "qxBasic", "qyBasic"), skip = 3) -USA1994GAM.male.basic = valuationTable.period ( +USA1994GAM.male.basic = mortalityTable.period ( name = "USA 1994 GAM basic (unloaded), male", ages = USA1994GAM.data$age, deathProbs = USA1994GAM.data$qxBasic) -USA1994GAM.female.basic = valuationTable.period ( +USA1994GAM.female.basic = mortalityTable.period ( name = "USA 1994 GAM basic (unloaded), female", ages = USA1994GAM.data$age, deathProbs = USA1994GAM.data$qyBasic) -USA1994GAR.male = valuationTable.improvementFactors ( +USA1994GAR.male = mortalityTable.improvementFactors ( name = "USA 1994 GAR, male", ages = USA1994GAM.data$age, deathProbs = USA1994GAM.data$qx, improvement = USA1994GAM.data$AAx) -USA1994GAR.female = valuationTable.improvementFactors ( +USA1994GAR.female = mortalityTable.improvementFactors ( name = "USA 1994 GAR, female", ages = USA1994GAM.data$age, deathProbs = USA1994GAM.data$qy, @@ -36,5 +36,5 @@ USA1994GAR.female = valuationTable.improvementFactors ( rm(USA1994GAM.data) -# plotValuationTables(USA1994GAM.male.basic, USA1994GAR.male, Period = 1994) +# plot(USA1994GAM.male.basic, USA1994GAR.male, Period = 1994) diff --git a/inst/extdata/ValuationTables_USA_Annuities_2012IAM.R b/inst/extdata/MortalityTables_USA_Annuities_2012IAM.R similarity index 75% rename from inst/extdata/ValuationTables_USA_Annuities_2012IAM.R rename to inst/extdata/MortalityTables_USA_Annuities_2012IAM.R index 676e79dda452a572917b5ec87c8a38cb93e07ecb..37839e18b9aa60e2511546ca404d245f4f80c4bb 100644 --- a/inst/extdata/ValuationTables_USA_Annuities_2012IAM.R +++ b/inst/extdata/MortalityTables_USA_Annuities_2012IAM.R @@ -1,4 +1,4 @@ -stopifnot(require(methods), require(utils), require(ValuationTables)) +stopifnot(require(methods), require(utils), require(MortalityTables)) ############################################################################### ### 2012 IAR/GAM group annuity tables, with improvement factors AA_x @@ -7,29 +7,29 @@ stopifnot(require(methods), require(utils), require(ValuationTables)) USA2012IAM.data = utils::read.csv( system.file("extdata", "USA_Annuities_2012IAM.csv", - package = "ValuationTables"), + package = "MortalityTables"), col.names = c("age", "qxBasic", "qyBasic", "qx", "qy", "G2x", "G2y", "", "", ""), skip = 3 ) -USA2012IAM.male.basic = valuationTable.period ( +USA2012IAM.male.basic = mortalityTable.period ( name = "USA 2012 IAM basic (unloaded), male", ages = USA2012IAM.data$age, deathProbs = USA2012IAM.data$qxBasic) -USA2012IAM.female.basic = valuationTable.period ( +USA2012IAM.female.basic = mortalityTable.period ( name = "USA 2012 IAM basic (unloaded), female", ages = USA2012IAM.data$age, deathProbs = USA2012IAM.data$qyBasic) -USA2012IAM.male = valuationTable.improvementFactors ( +USA2012IAM.male = mortalityTable.improvementFactors ( name = "USA 2012 IAM, male", ages = USA2012IAM.data$age, deathProbs = USA2012IAM.data$qx, improvement = USA2012IAM.data$G2x) -USA2012IAM.female = valuationTable.improvementFactors ( +USA2012IAM.female = mortalityTable.improvementFactors ( name = "USA 2012 IAM, female", ages = USA2012IAM.data$age, deathProbs = USA2012IAM.data$qy, diff --git a/inst/extdata/ValuationTables_USA_Annuities_Annuity2000.R b/inst/extdata/MortalityTables_USA_Annuities_Annuity2000.R similarity index 71% rename from inst/extdata/ValuationTables_USA_Annuities_Annuity2000.R rename to inst/extdata/MortalityTables_USA_Annuities_Annuity2000.R index 19befd132235f2721433cc58101855bfcd1dd741..7e4d3b7190a859607d7f3f5dea579b8d51c971e4 100644 --- a/inst/extdata/ValuationTables_USA_Annuities_Annuity2000.R +++ b/inst/extdata/MortalityTables_USA_Annuities_Annuity2000.R @@ -1,4 +1,4 @@ -stopifnot(require(methods), require(utils), require(ValuationTables)) +stopifnot(require(methods), require(utils), require(MortalityTables)) ############################################################################### ### Annuity 2000 Basic (unloaded) and Mortality (loaded) Tables, PERIOD tables @@ -7,35 +7,35 @@ stopifnot(require(methods), require(utils), require(ValuationTables)) USAAnnuity2000.data = utils::read.csv( system.file("extdata", "USA_Annuities_Annuity2000.csv", - package = "ValuationTables"), + package = "MortalityTables"), col.names = c("age","qxBasic", "qyBasic", "qx", "qy"), skip = 4 ) -USAAnnuity2000.basic.male = valuationTable.period ( +USAAnnuity2000.basic.male = mortalityTable.period ( name = "USA Annuity 2000 basic, male", ages = USAAnnuity2000.data$age, deathProbs = USAAnnuity2000.data$qxBasic) -USAAnnuity2000.basic.female = valuationTable.period ( +USAAnnuity2000.basic.female = mortalityTable.period ( name = "USA Annuity 2000 basic, female", ages = USAAnnuity2000.data$age, deathProbs = USAAnnuity2000.data$qyBasic) -USAAnnuity2000.male = valuationTable.period ( +USAAnnuity2000.male = mortalityTable.period ( name = "USA Annuity 2000 mortality, male", ages = USAAnnuity2000.data$age, deathProbs = USAAnnuity2000.data$qx) -USAAnnuity2000.female = valuationTable.period ( +USAAnnuity2000.female = mortalityTable.period ( name = "USA Annuity 2000 mortality, female", ages = USAAnnuity2000.data$age, deathProbs = USAAnnuity2000.data$qy) rm(USAAnnuity2000.data) -# plotValuationTables(USAAnnuity2000.basic.male, USAAnnuity2000.male, Period = 2000) +# plot(USAAnnuity2000.basic.male, USAAnnuity2000.male, Period = 2000) diff --git a/inst/extdata/ValuationTables_Austria_Annuities.R b/inst/extdata/ValuationTables_Austria_Annuities.R deleted file mode 100644 index 62fb70a13365d53d53c36a5166017a97916b1334..0000000000000000000000000000000000000000 --- a/inst/extdata/ValuationTables_Austria_Annuities.R +++ /dev/null @@ -1,3 +0,0 @@ -stopifnot(require(methods), require(utils), require(ValuationTables)) # ValuationTable classes; new; Excel reader - -valuationTables.load("Austria_Annuities_*", wildcard=TRUE) diff --git a/inst/extdata/ValuationTables_Germany_Annuities.R b/inst/extdata/ValuationTables_Germany_Annuities.R deleted file mode 100644 index 5a5519dc712ca62ee114c1d08ff0188212f0bb16..0000000000000000000000000000000000000000 --- a/inst/extdata/ValuationTables_Germany_Annuities.R +++ /dev/null @@ -1,3 +0,0 @@ -stopifnot(require(methods), require(utils), require(ValuationTables)) - -valuationTables.load("Germany_Annuities_*", wildcard = TRUE) diff --git a/inst/extdata/ValuationTables_Germany_Endowments.R b/inst/extdata/ValuationTables_Germany_Endowments.R deleted file mode 100644 index 7914d0ebfc379e10337af376fa3d03f66c1e2c72..0000000000000000000000000000000000000000 --- a/inst/extdata/ValuationTables_Germany_Endowments.R +++ /dev/null @@ -1,3 +0,0 @@ -stopifnot(require(methods), require(utils), require(ValuationTables)) # ValuationTable classes; new; Excel reader - -valuationTables.load("Germany_Endowments_*", wildcard=TRUE) diff --git a/inst/extdata/ValuationTables_USA_Annuities.R b/inst/extdata/ValuationTables_USA_Annuities.R deleted file mode 100644 index 524eb5ae1af624390ef877edd871684b540e57a5..0000000000000000000000000000000000000000 --- a/inst/extdata/ValuationTables_USA_Annuities.R +++ /dev/null @@ -1,3 +0,0 @@ -stopifnot(require(methods), require(utils), require(ValuationTables)) - -valuationTables.load("USA_Annuities_*", wildcard = TRUE) diff --git a/man/ValuationTables-package.Rd b/man/MortalityTables-package.Rd similarity index 59% rename from man/ValuationTables-package.Rd rename to man/MortalityTables-package.Rd index 3aecba0237fcc170e726cc732bbaa042f9193ed1..551781ad4b443aafa15cf6312b04316379e7b99f 100644 --- a/man/ValuationTables-package.Rd +++ b/man/MortalityTables-package.Rd @@ -1,9 +1,9 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/valuationTable.R +% Please edit documentation in R/mortalityTable.R \docType{package} -\name{ValuationTables-package} -\alias{ValuationTables} -\alias{ValuationTables-package} +\name{MortalityTables-package} +\alias{MortalityTables} +\alias{MortalityTables-package} \title{Provide life table classes for life insurance purposes} \description{ Provide life table classes for life insurance purposes diff --git a/man/ageShift.Rd b/man/ageShift.Rd index 88d2e91cb1bb99e973dc5ed1257aa0cbc480fade..7110cf5a0d562e68fe0d19e7cdcf50fab3e272ec 100644 --- a/man/ageShift.Rd +++ b/man/ageShift.Rd @@ -3,15 +3,15 @@ \docType{methods} \name{ageShift} \alias{ageShift} -\alias{ageShift,valuationTable.ageShift-method} +\alias{ageShift,mortalityTable.ageShift-method} \title{Return the age shift of the age-shifted life table given the birth year} \usage{ ageShift(object, YOB = 1975, ...) -\S4method{ageShift}{valuationTable.ageShift}(object, YOB = 1975, ...) +\S4method{ageShift}{mortalityTable.ageShift}(object, YOB = 1975, ...) } \arguments{ -\item{object}{The life table object (class inherited from valuationTable)} +\item{object}{The life table object (class inherited from mortalityTable)} \item{YOB}{The birth year for which the age shift should be determined.} @@ -22,7 +22,7 @@ Return the age shift of the age-shifted life table given the birth year } \section{Methods (by class)}{ \itemize{ -\item \code{valuationTable.ageShift}: Return the age shift of the age-shifted life table +\item \code{mortalityTable.ageShift}: Return the age shift of the age-shifted life table given the birth year }} diff --git a/man/ages.Rd b/man/ages.Rd index 7c2975eb069a9c5692e8aca719811b16fc5136f2..49cccf3a8c45b691e2d3c5321d05a0f7c577f323 100644 --- a/man/ages.Rd +++ b/man/ages.Rd @@ -3,24 +3,24 @@ \docType{methods} \name{ages} \alias{ages} -\alias{ages,valuationTable.joined-method} -\alias{ages,valuationTable.mixed-method} -\alias{ages,valuationTable.observed-method} -\alias{ages,valuationTable.period-method} +\alias{ages,mortalityTable.joined-method} +\alias{ages,mortalityTable.mixed-method} +\alias{ages,mortalityTable.observed-method} +\alias{ages,mortalityTable.period-method} \title{Return the defined ages of the life table} \usage{ ages(object, ...) -\S4method{ages}{valuationTable.period}(object, ...) +\S4method{ages}{mortalityTable.period}(object, ...) -\S4method{ages}{valuationTable.mixed}(object, ...) +\S4method{ages}{mortalityTable.mixed}(object, ...) -\S4method{ages}{valuationTable.joined}(object, ...) +\S4method{ages}{mortalityTable.joined}(object, ...) -\S4method{ages}{valuationTable.observed}(object, ...) +\S4method{ages}{mortalityTable.observed}(object, ...) } \arguments{ -\item{object}{A life table object (instance of a \code{\linkS4class{valuationTable}} class)} +\item{object}{A life table object (instance of a \code{\linkS4class{mortalityTable}} class)} \item{...}{Currently unused} } @@ -29,12 +29,12 @@ Return the defined ages of the life table } \section{Methods (by class)}{ \itemize{ -\item \code{valuationTable.period}: Return the defined ages of the period life table +\item \code{mortalityTable.period}: Return the defined ages of the period life table -\item \code{valuationTable.mixed}: Return the defined ages of the mixed life table +\item \code{mortalityTable.mixed}: Return the defined ages of the mixed life table -\item \code{valuationTable.joined}: Return the defined ages of the joined life table +\item \code{mortalityTable.joined}: Return the defined ages of the joined life table -\item \code{valuationTable.observed}: Return the defined ages of the observed life table +\item \code{mortalityTable.observed}: Return the defined ages of the observed life table }} diff --git a/man/baseTable.Rd b/man/baseTable.Rd index 2956b33a04136c5ba24241bced5d814107a8b9c8..7011174f30a08835ab8e2da7e21d700ad4070e1f 100644 --- a/man/baseTable.Rd +++ b/man/baseTable.Rd @@ -3,18 +3,18 @@ \docType{methods} \name{baseTable} \alias{baseTable} -\alias{baseTable,valuationTable-method} -\alias{baseTable,valuationTable.period-method} +\alias{baseTable,mortalityTable-method} +\alias{baseTable,mortalityTable.period-method} \title{Return the base table of the life table} \usage{ baseTable(object, ...) -\S4method{baseTable}{valuationTable}(object, ...) +\S4method{baseTable}{mortalityTable}(object, ...) -\S4method{baseTable}{valuationTable.period}(object, ...) +\S4method{baseTable}{mortalityTable.period}(object, ...) } \arguments{ -\item{object}{The life table object (class inherited from valuationTable)} +\item{object}{The life table object (class inherited from mortalityTable)} \item{...}{Other parameters (currently unused)} } @@ -23,8 +23,8 @@ Return the base table of the life table } \section{Methods (by class)}{ \itemize{ -\item \code{valuationTable}: Return the base table of the life table +\item \code{mortalityTable}: Return the base table of the life table -\item \code{valuationTable.period}: Return the base table of the life table +\item \code{mortalityTable.period}: Return the base table of the life table }} diff --git a/man/baseYear.Rd b/man/baseYear.Rd index 896cacf4b4461984118b08a6d31b62fdba30da8c..059a6cecbd96cf581c04c97077d2c13786b4f36b 100644 --- a/man/baseYear.Rd +++ b/man/baseYear.Rd @@ -3,18 +3,18 @@ \docType{methods} \name{baseYear} \alias{baseYear} -\alias{baseYear,valuationTable-method} -\alias{baseYear,valuationTable.mixed-method} +\alias{baseYear,mortalityTable-method} +\alias{baseYear,mortalityTable.mixed-method} \title{Return the base year of the life table} \usage{ baseYear(object, ...) -\S4method{baseYear}{valuationTable}(object, ...) +\S4method{baseYear}{mortalityTable}(object, ...) -\S4method{baseYear}{valuationTable.mixed}(object, ...) +\S4method{baseYear}{mortalityTable.mixed}(object, ...) } \arguments{ -\item{object}{The life table object (class inherited from valuationTable)} +\item{object}{The life table object (class inherited from mortalityTable)} \item{...}{Other parameters (currently unused)} } @@ -23,8 +23,8 @@ Return the base year of the life table } \section{Methods (by class)}{ \itemize{ -\item \code{valuationTable}: Return the base year of the life table +\item \code{mortalityTable}: Return the base year of the life table -\item \code{valuationTable.mixed}: Return the base year of the life table +\item \code{mortalityTable.mixed}: Return the base year of the life table }} diff --git a/man/deathProbabilities.Rd b/man/deathProbabilities.Rd index 7b5fc969bc6776b429c16861a8ac5504b5f58d3e..3bbcb561b5305840d7f7c0a7f4e9f88c07939b7d 100644 --- a/man/deathProbabilities.Rd +++ b/man/deathProbabilities.Rd @@ -3,30 +3,30 @@ \docType{methods} \name{deathProbabilities} \alias{deathProbabilities} -\alias{deathProbabilities,valuationTable.ageShift-method} -\alias{deathProbabilities,valuationTable.improvementFactors-method} -\alias{deathProbabilities,valuationTable.mixed-method} -\alias{deathProbabilities,valuationTable.period-method} -\alias{deathProbabilities,valuationTable.trendProjection-method} +\alias{deathProbabilities,mortalityTable.ageShift-method} +\alias{deathProbabilities,mortalityTable.improvementFactors-method} +\alias{deathProbabilities,mortalityTable.mixed-method} +\alias{deathProbabilities,mortalityTable.period-method} +\alias{deathProbabilities,mortalityTable.trendProjection-method} \title{Return the (cohort) death probabilities of the life table given the birth year (if needed)} \usage{ deathProbabilities(object, ..., YOB = 1975) -\S4method{deathProbabilities}{valuationTable.period}(object, ..., YOB = 1975) +\S4method{deathProbabilities}{mortalityTable.period}(object, ..., YOB = 1975) -\S4method{deathProbabilities}{valuationTable.ageShift}(object, ..., +\S4method{deathProbabilities}{mortalityTable.ageShift}(object, ..., YOB = 1975) -\S4method{deathProbabilities}{valuationTable.trendProjection}(object, ..., +\S4method{deathProbabilities}{mortalityTable.trendProjection}(object, ..., YOB = 1975) -\S4method{deathProbabilities}{valuationTable.improvementFactors}(object, ..., +\S4method{deathProbabilities}{mortalityTable.improvementFactors}(object, ..., YOB = 1975) -\S4method{deathProbabilities}{valuationTable.mixed}(object, ..., YOB = 1975) +\S4method{deathProbabilities}{mortalityTable.mixed}(object, ..., YOB = 1975) } \arguments{ -\item{object}{The life table object (class inherited from valuationTable)} +\item{object}{The life table object (class inherited from mortalityTable)} \item{...}{Other parameters (currently unused)} @@ -37,19 +37,19 @@ Return the (cohort) death probabilities of the life table given the birth year ( } \section{Methods (by class)}{ \itemize{ -\item \code{valuationTable.period}: Return the (cohort) death probabilities of the +\item \code{mortalityTable.period}: Return the (cohort) death probabilities of the life table given the birth year (if needed) -\item \code{valuationTable.ageShift}: Return the (cohort) death probabilities of the +\item \code{mortalityTable.ageShift}: Return the (cohort) death probabilities of the life table given the birth year (if needed) -\item \code{valuationTable.trendProjection}: Return the (cohort) death probabilities of the +\item \code{mortalityTable.trendProjection}: Return the (cohort) death probabilities of the life table given the birth year (if needed) -\item \code{valuationTable.improvementFactors}: Return the (cohort) death probabilities of the +\item \code{mortalityTable.improvementFactors}: Return the (cohort) death probabilities of the life table given the birth year (if needed) -\item \code{valuationTable.mixed}: Return the (cohort) death probabilities of the +\item \code{mortalityTable.mixed}: Return the (cohort) death probabilities of the life table given the birth year (if needed) }} diff --git a/man/getCohortTable.Rd b/man/getCohortTable.Rd index 82494cdf06e395404d748b9236fac5ef1a7ef33b..7b1c5a9307cb107ce9ed25a46b7f0c23bcdd66d0 100644 --- a/man/getCohortTable.Rd +++ b/man/getCohortTable.Rd @@ -3,26 +3,26 @@ \docType{methods} \name{getCohortTable} \alias{getCohortTable} -\alias{getCohortTable,valuationTable-method} -\title{Return the cohort life table as a \code{valuationTable.period} object} +\alias{getCohortTable,mortalityTable-method} +\title{Return the cohort life table as a \code{mortalityTable.period} object} \usage{ getCohortTable(object, YOB, ...) -\S4method{getCohortTable}{valuationTable}(object, YOB, ...) +\S4method{getCohortTable}{mortalityTable}(object, YOB, ...) } \arguments{ -\item{object}{The life table object (class inherited from valuationTable)} +\item{object}{The life table object (class inherited from mortalityTable)} \item{YOB}{The birth year for which the life table should be calculated} \item{...}{Other parameters (currently unused)} } \description{ -Return the cohort life table as a \code{valuationTable.period} object +Return the cohort life table as a \code{mortalityTable.period} object } \section{Methods (by class)}{ \itemize{ -\item \code{valuationTable}: Return the cohort life table as a -\code{valuationTable.period} object +\item \code{mortalityTable}: Return the cohort life table as a +\code{mortalityTable.period} object }} diff --git a/man/getOmega.Rd b/man/getOmega.Rd index d1c4e279f41ba2dd9f4dec8f1a9f9cc27d6f5f52..7ce28d966ef1266dac0c814acd9df32e89239216 100644 --- a/man/getOmega.Rd +++ b/man/getOmega.Rd @@ -3,36 +3,36 @@ \docType{methods} \name{getOmega} \alias{getOmega} -\alias{getOmega,valuationTable.joined-method} -\alias{getOmega,valuationTable.mixed-method} -\alias{getOmega,valuationTable.observed-method} -\alias{getOmega,valuationTable.period-method} +\alias{getOmega,mortalityTable.joined-method} +\alias{getOmega,mortalityTable.mixed-method} +\alias{getOmega,mortalityTable.observed-method} +\alias{getOmega,mortalityTable.period-method} \title{Return the maximum age of the life table} \usage{ getOmega(object) -\S4method{getOmega}{valuationTable.period}(object) +\S4method{getOmega}{mortalityTable.period}(object) -\S4method{getOmega}{valuationTable.mixed}(object) +\S4method{getOmega}{mortalityTable.mixed}(object) -\S4method{getOmega}{valuationTable.joined}(object) +\S4method{getOmega}{mortalityTable.joined}(object) -\S4method{getOmega}{valuationTable.observed}(object) +\S4method{getOmega}{mortalityTable.observed}(object) } \arguments{ -\item{object}{A life table object (instance of a \code{valuationTable} class)} +\item{object}{A life table object (instance of a \code{mortalityTable} class)} } \description{ Return the maximum age of the life table } \section{Methods (by class)}{ \itemize{ -\item \code{valuationTable.period}: Return the maximum age of the period life table +\item \code{mortalityTable.period}: Return the maximum age of the period life table -\item \code{valuationTable.mixed}: Return the maximum age of the mixed life table +\item \code{mortalityTable.mixed}: Return the maximum age of the mixed life table -\item \code{valuationTable.joined}: Return the maximum age of the joined life table +\item \code{mortalityTable.joined}: Return the maximum age of the joined life table -\item \code{valuationTable.observed}: Return the maximum age of the joined life table +\item \code{mortalityTable.observed}: Return the maximum age of the joined life table }} diff --git a/man/getPeriodTable.Rd b/man/getPeriodTable.Rd index 6cbac147d33db17592f991bae35729aac3885662..a9aec4d463fa74dc1c9b40cd230d9f9466e0daaf 100644 --- a/man/getPeriodTable.Rd +++ b/man/getPeriodTable.Rd @@ -3,15 +3,15 @@ \docType{methods} \name{getPeriodTable} \alias{getPeriodTable} -\alias{getPeriodTable,valuationTable-method} -\title{Return the period life table as a \code{valuationTable.period} object} +\alias{getPeriodTable,mortalityTable-method} +\title{Return the period life table as a \code{mortalityTable.period} object} \usage{ getPeriodTable(object, Period, ...) -\S4method{getPeriodTable}{valuationTable}(object, Period, ...) +\S4method{getPeriodTable}{mortalityTable}(object, Period, ...) } \arguments{ -\item{object}{The life table object (class inherited from valuationTable)} +\item{object}{The life table object (class inherited from mortalityTable)} \item{Period}{The observation year, for which the death probabilities should be determined} @@ -19,11 +19,11 @@ be determined} \item{...}{Other parameters (currently unused)} } \description{ -Return the period life table as a \code{valuationTable.period} object +Return the period life table as a \code{mortalityTable.period} object } \section{Methods (by class)}{ \itemize{ -\item \code{valuationTable}: Return the period life table as a -\code{valuationTable.period} object +\item \code{mortalityTable}: Return the period life table as a +\code{mortalityTable.period} object }} diff --git a/man/lifeTable.Rd b/man/lifeTable.Rd index 6b307537dc4f7c8fbed9249842f5f70c045b7540..15423eacc702d5ef9e92a2d5be35b6ee5d5b40dc 100644 --- a/man/lifeTable.Rd +++ b/man/lifeTable.Rd @@ -3,15 +3,15 @@ \docType{methods} \name{lifeTable} \alias{lifeTable} -\alias{lifeTable,valuationTable-method} +\alias{lifeTable,mortalityTable-method} \title{Return the lifetable object (package lifecontingencies) for the cohort life table} \usage{ lifeTable(object, ...) -\S4method{lifeTable}{valuationTable}(object, ...) +\S4method{lifeTable}{mortalityTable}(object, ...) } \arguments{ -\item{object}{The life table object (class inherited from valuationTable)} +\item{object}{The life table object (class inherited from mortalityTable)} \item{...}{Parameters to be passed to the \code{deathProbabilities} method of the life table} @@ -21,7 +21,7 @@ Return the lifetable object (package lifecontingencies) for the cohort life tabl } \section{Methods (by class)}{ \itemize{ -\item \code{valuationTable}: Return the lifetable object (package lifecontingencies) +\item \code{mortalityTable}: Return the lifetable object (package lifecontingencies) for the cohort life table }} diff --git a/man/makeQxDataFrame.Rd b/man/makeQxDataFrame.Rd index 76ffdea0fa55172ba7202cfb63b978e1d5afd6a0..7ac7c8e645ec278c67dfba11e622f94144141da7 100644 --- a/man/makeQxDataFrame.Rd +++ b/man/makeQxDataFrame.Rd @@ -2,13 +2,13 @@ % Please edit documentation in R/makeQxDataFrame.R \name{makeQxDataFrame} \alias{makeQxDataFrame} -\title{Converts one or multiple life table objects to a data frame that can be -plotted by \code{plotValuationTables} or \code{plotValuationTableComparisons}} +\title{Converts one or multiple mortality table objects to a data frame that can be +plotted by \code{plotMortalityTables} or \code{plotMortalityTableComparisons}} \usage{ makeQxDataFrame(..., YOB = 1972, Period = NA, reference = NULL) } \arguments{ -\item{...}{Life tables (objects of classes derived from \code{valuationTable})} +\item{...}{Life tables (objects of classes derived from \code{mortalityTable})} \item{YOB}{desired year of birth to be plotted as cohort life table (default: 1972)} @@ -20,8 +20,8 @@ probabilities (i.e. the q_x for all ages are divided by the corresponding probabilities of the reference table)} } \description{ -It is not required to call this function manually, \code{plotValuationTables} -will automatically do it if object derived from class \code{valuationTable} +It is not required to call this function manually, \code{plotMortalityTables} +will automatically do it if object derived from class \code{mortalityTable} are passed. } diff --git a/man/valuationTable-class.Rd b/man/mortalityTable-class.Rd similarity index 60% rename from man/valuationTable-class.Rd rename to man/mortalityTable-class.Rd index 89df9ad5a639f3e4e13d2f987db79649bb6278e5..79d788f24e13c5abf93015c7e3361e9818788c42 100644 --- a/man/valuationTable-class.Rd +++ b/man/mortalityTable-class.Rd @@ -1,22 +1,22 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/valuationTable.R +% Please edit documentation in R/mortalityTable.R \docType{class} -\name{valuationTable-class} -\alias{valuationTable} -\alias{valuationTable-class} -\title{Class valuationTable} +\name{mortalityTable-class} +\alias{mortalityTable} +\alias{mortalityTable-class} +\title{Class mortalityTable} \description{ -Class \code{valuationTable} is the (virtual) base class for all valuation +Class \code{mortalityTable} is the (virtual) base class for all mortality tables. It contains the name and some general values applying to all types of tables, but does not contain any data itself. Use a child class -to create actual valuation tables. +to create actual mortality tables. } \section{Slots}{ \describe{ -\item{\code{name}}{The human-readable name of the valuation table} +\item{\code{name}}{The human-readable name of the mortality table} -\item{\code{baseYear}}{The base year of the valuation table (e.g. for tables with trend projection)} +\item{\code{baseYear}}{The base year of the mortality table (e.g. for tables with trend projection)} \item{\code{modification}}{A function that will be called with the final death probabilities to give the user a way to modify the final probabilities} diff --git a/man/valuationTable.ageShift-class.Rd b/man/mortalityTable.ageShift-class.Rd similarity index 60% rename from man/valuationTable.ageShift-class.Rd rename to man/mortalityTable.ageShift-class.Rd index 3b64aa10dd153cbf6d8d9366a9998daea60a7d57..5d1523c46e4e0d03b004d9fbca68a0fa58521b11 100644 --- a/man/valuationTable.ageShift-class.Rd +++ b/man/mortalityTable.ageShift-class.Rd @@ -1,10 +1,10 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/valuationTable.ageShift.R +% Please edit documentation in R/mortalityTable.ageShift.R \docType{class} -\name{valuationTable.ageShift-class} -\alias{valuationTable.ageShift} -\alias{valuationTable.ageShift-class} -\title{Class valuationTable.ageShift - Cohort life tables generated by age-shift} +\name{mortalityTable.ageShift-class} +\alias{mortalityTable.ageShift} +\alias{mortalityTable.ageShift-class} +\title{Class mortalityTable.ageShift - Cohort life tables generated by age-shift} \description{ A cohort life table, obtained by age-shifting from a given base table (death probabilities } diff --git a/man/valuationTable.improvementFactors-class.Rd b/man/mortalityTable.improvementFactors-class.Rd similarity index 63% rename from man/valuationTable.improvementFactors-class.Rd rename to man/mortalityTable.improvementFactors-class.Rd index a324ef25cb4d35bbf5adb9fab5702d7705838976..b8b3f67f3d9c741ca3e3d19008c8ee73cecfd3c0 100644 --- a/man/valuationTable.improvementFactors-class.Rd +++ b/man/mortalityTable.improvementFactors-class.Rd @@ -1,10 +1,10 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/valuationTable.improvementFactors.R +% Please edit documentation in R/mortalityTable.improvementFactors.R \docType{class} -\name{valuationTable.improvementFactors-class} -\alias{valuationTable.improvementFactors} -\alias{valuationTable.improvementFactors-class} -\title{Class valuationTable.improvementFactors - Cohort life table with improvement +\name{mortalityTable.improvementFactors-class} +\alias{mortalityTable.improvementFactors} +\alias{mortalityTable.improvementFactors-class} +\title{Class mortalityTable.improvementFactors - Cohort life table with improvement factors} \description{ A cohort life table, obtained by an improvment factor projection diff --git a/man/valuationTable.joined-class.Rd b/man/mortalityTable.joined-class.Rd similarity index 63% rename from man/valuationTable.joined-class.Rd rename to man/mortalityTable.joined-class.Rd index 409dc79ecf557be17e31640acc640bfa4ccd9418..6900551f964a80906223c6e3823bcf506cfc8084 100644 --- a/man/valuationTable.joined-class.Rd +++ b/man/mortalityTable.joined-class.Rd @@ -1,10 +1,10 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/valuationTable.joined.R +% Please edit documentation in R/mortalityTable.joined.R \docType{class} -\name{valuationTable.joined-class} -\alias{valuationTable.joined} -\alias{valuationTable.joined-class} -\title{Class valuationTable.joined - Life table created by joining two life tables} +\name{mortalityTable.joined-class} +\alias{mortalityTable.joined} +\alias{mortalityTable.joined-class} +\title{Class mortalityTable.joined - Life table created by joining two life tables} \description{ A cohort life table obtained by joining two cohort life tables, each of which applies only to certain observation years (e.g. for the past use the observed @@ -13,11 +13,11 @@ PoDs, and project them to the future with the trend projection) \section{Slots}{ \describe{ -\item{\code{table1}}{The first \code{valuationTable}, valid for years given in \code{yearRange1}} +\item{\code{table1}}{The first \code{mortalityTable}, valid for years given in \code{yearRange1}} \item{\code{yearRange1}}{The years, for which \code{table1} describes the death probabilities} -\item{\code{table2}}{The second \code{valuationTable}, valid for years given in \code{yearRange2}} +\item{\code{table2}}{The second \code{mortalityTable}, valid for years given in \code{yearRange2}} \item{\code{yearRange2}}{The years, for which \code{table2} describes the death probabilities} }} diff --git a/man/mortalityTable.mixed-class.Rd b/man/mortalityTable.mixed-class.Rd new file mode 100644 index 0000000000000000000000000000000000000000..4a2e9ce6f68813b49bb68c919318be081779b1a2 --- /dev/null +++ b/man/mortalityTable.mixed-class.Rd @@ -0,0 +1,24 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/mortalityTable.mixed.R +\docType{class} +\name{mortalityTable.mixed-class} +\alias{mortalityTable.mixed} +\alias{mortalityTable.mixed-class} +\title{Class mortalityTable.mixed - Life table as a mix of two life tables} +\description{ +A cohort life table obtained by mixing two life tables with the given weights +} +\section{Slots}{ + +\describe{ +\item{\code{table1}}{The first \code{mortalityTable}} + +\item{\code{table2}}{The second \code{mortalityTable}} + +\item{\code{weight1}}{The weight of the first mortality table} + +\item{\code{weight2}}{The weight of the second mortality table} + +\item{\code{loading}}{Additional security loading} +}} + diff --git a/man/valuationTable.observed-class.Rd b/man/mortalityTable.observed-class.Rd similarity index 59% rename from man/valuationTable.observed-class.Rd rename to man/mortalityTable.observed-class.Rd index c8b6bbe7eed4e7062896104289149f7e71233d7a..e1f8f9041d1a911222c4986f7805a7796192fa2f 100644 --- a/man/valuationTable.observed-class.Rd +++ b/man/mortalityTable.observed-class.Rd @@ -1,10 +1,10 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/valuationTable.observed.R +% Please edit documentation in R/mortalityTable.observed.R \docType{class} -\name{valuationTable.observed-class} -\alias{valuationTable.observed} -\alias{valuationTable.observed-class} -\title{Class valuationTable.observed - Life table from actual observations} +\name{mortalityTable.observed-class} +\alias{mortalityTable.observed} +\alias{mortalityTable.observed-class} +\title{Class mortalityTable.observed - Life table from actual observations} \description{ A cohort life table described by actual observations (data frame of PODs per year and age) diff --git a/man/valuationTable.period-class.Rd b/man/mortalityTable.period-class.Rd similarity index 66% rename from man/valuationTable.period-class.Rd rename to man/mortalityTable.period-class.Rd index 8e26b38a4e9f6ae6cdbad7352856ac655886b59c..e433a3a45f54530a8e897d8ad0704bae067d334e 100644 --- a/man/valuationTable.period-class.Rd +++ b/man/mortalityTable.period-class.Rd @@ -1,10 +1,10 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/valuationTable.period.R +% Please edit documentation in R/mortalityTable.period.R \docType{class} -\name{valuationTable.period-class} -\alias{valuationTable.period} -\alias{valuationTable.period-class} -\title{Class valuationTable.period - Period life tables} +\name{mortalityTable.period-class} +\alias{mortalityTable.period} +\alias{mortalityTable.period-class} +\title{Class mortalityTable.period - Period life tables} \description{ A period life table, giving death probabilities for each age, up to maximum age \code{omega}. The \code{baseYear} slot can be used to hold diff --git a/man/valuationTable.trendProjection-class.Rd b/man/mortalityTable.trendProjection-class.Rd similarity index 74% rename from man/valuationTable.trendProjection-class.Rd rename to man/mortalityTable.trendProjection-class.Rd index f9bb6e274dd1e689f83a659f450580528c562dc3..85d8f35fc35ea61e0a90dbfea252f05021a1cdc5 100644 --- a/man/valuationTable.trendProjection-class.Rd +++ b/man/mortalityTable.trendProjection-class.Rd @@ -1,12 +1,12 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/valuationTable.trendProjection.R +% Please edit documentation in R/mortalityTable.trendProjection.R \docType{class} -\name{valuationTable.trendProjection-class} -\alias{valuationTable.trendProjection} -\alias{valuationTable.trendProjection-class} -\title{Class valuationTable.trendProjection - Cohort life table with age-specific trend} +\name{mortalityTable.trendProjection-class} +\alias{mortalityTable.trendProjection} +\alias{mortalityTable.trendProjection-class} +\title{Class mortalityTable.trendProjection - Cohort mortality table with age-specific trend} \description{ -A cohort life table, obtained by a trend projection from a given base table +A cohort mortality table, obtained by a trend projection from a given base table (PODs for a given observation year). Typically, the trend is obtained by the Lee-Carter method or some other trend estimation. The dampingFunction can be used to modify the cumulative years (e.g. G(tau+x) diff --git a/man/mortalityTables.list.Rd b/man/mortalityTables.list.Rd new file mode 100644 index 0000000000000000000000000000000000000000..773165c4a75e5e92ddec195445685e77f01afdcb --- /dev/null +++ b/man/mortalityTables.list.Rd @@ -0,0 +1,17 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/mortalityTables.list.R +\name{mortalityTables.list} +\alias{mortalityTables.list} +\title{List all available sets of life tables provided by the \link[MortalityTables]{MortalityTables-package} package +An existing life table can then be loaded with \link{mortalityTables.load}.} +\usage{ +mortalityTables.list(pattern = "*") +} +\arguments{ +\item{pattern}{Restrict the results only to life table sets that match the pattern (default: "*" to show all sets)} +} +\description{ +List all available sets of life tables provided by the \link[MortalityTables]{MortalityTables-package} package +An existing life table can then be loaded with \link{mortalityTables.load}. +} + diff --git a/man/mortalityTables.load.Rd b/man/mortalityTables.load.Rd new file mode 100644 index 0000000000000000000000000000000000000000..3117708e775f4ffcb369969e21bfc64d8d446976 --- /dev/null +++ b/man/mortalityTables.load.Rd @@ -0,0 +1,19 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/mortalityTables.load.R +\name{mortalityTables.load} +\alias{mortalityTables.load} +\title{Load a named set of mortality tables provided by the \link{MortalityTables} package} +\usage{ +mortalityTables.load(dataset, wildcard = FALSE) +} +\arguments{ +\item{dataset}{The set of life tables to be loaded. A list of all available +data sets is provided by the function \code{\link{mortalityTables.list}}.} + +\item{wildcard}{Whether the dataset name contains wildcard. If TRUE, all +datasets matching the pattern will be loaded} +} +\description{ +Load a named set of mortality tables provided by the \link{MortalityTables} package +} + diff --git a/man/periodDeathProbabilities.Rd b/man/periodDeathProbabilities.Rd index 57ee3b1479af6c0fcbcf462ad57e731e7b995382..7d85c3eb7686d5a8fb3b239a9ff23b256c3cc563 100644 --- a/man/periodDeathProbabilities.Rd +++ b/man/periodDeathProbabilities.Rd @@ -3,33 +3,33 @@ \docType{methods} \name{periodDeathProbabilities} \alias{periodDeathProbabilities} -\alias{periodDeathProbabilities,valuationTable.ageShift-method} -\alias{periodDeathProbabilities,valuationTable.improvementFactors-method} -\alias{periodDeathProbabilities,valuationTable.mixed-method} -\alias{periodDeathProbabilities,valuationTable.period-method} -\alias{periodDeathProbabilities,valuationTable.trendProjection-method} +\alias{periodDeathProbabilities,mortalityTable.ageShift-method} +\alias{periodDeathProbabilities,mortalityTable.improvementFactors-method} +\alias{periodDeathProbabilities,mortalityTable.mixed-method} +\alias{periodDeathProbabilities,mortalityTable.period-method} +\alias{periodDeathProbabilities,mortalityTable.trendProjection-method} \title{Return the (period) death probabilities of the life table for a given observation year} \usage{ periodDeathProbabilities(object, ..., Period = 1975) -\S4method{periodDeathProbabilities}{valuationTable.period}(object, ..., +\S4method{periodDeathProbabilities}{mortalityTable.period}(object, ..., Period = 1975) -\S4method{periodDeathProbabilities}{valuationTable.ageShift}(object, ..., +\S4method{periodDeathProbabilities}{mortalityTable.ageShift}(object, ..., Period = 1975) -\S4method{periodDeathProbabilities}{valuationTable.trendProjection}(object, ..., +\S4method{periodDeathProbabilities}{mortalityTable.trendProjection}(object, ..., Period = 1975) -\S4method{periodDeathProbabilities}{valuationTable.improvementFactors}(object, +\S4method{periodDeathProbabilities}{mortalityTable.improvementFactors}(object, ..., Period = 1975) -\S4method{periodDeathProbabilities}{valuationTable.mixed}(object, ..., +\S4method{periodDeathProbabilities}{mortalityTable.mixed}(object, ..., Period = 1975) } \arguments{ -\item{object}{The life table object (class inherited from valuationTable)} +\item{object}{The life table object (class inherited from mortalityTable)} \item{...}{Other parameters (currently unused)} @@ -41,19 +41,19 @@ observation year } \section{Methods (by class)}{ \itemize{ -\item \code{valuationTable.period}: Return the (period) death probabilities +\item \code{mortalityTable.period}: Return the (period) death probabilities of the life table for a given observation year -\item \code{valuationTable.ageShift}: Return the (period) death probabilities +\item \code{mortalityTable.ageShift}: Return the (period) death probabilities of the life table for a given observation year -\item \code{valuationTable.trendProjection}: Return the (period) death probabilities +\item \code{mortalityTable.trendProjection}: Return the (period) death probabilities of the life table for a given observation year -\item \code{valuationTable.improvementFactors}: Return the (period) death probabilities +\item \code{mortalityTable.improvementFactors}: Return the (period) death probabilities of the life table for a given observation year -\item \code{valuationTable.mixed}: Return the (period) death probabilities +\item \code{mortalityTable.mixed}: Return the (period) death probabilities of the life table for a given observation year }} diff --git a/man/plot.valuationTable.Rd b/man/plot.mortalityTable.Rd similarity index 73% rename from man/plot.valuationTable.Rd rename to man/plot.mortalityTable.Rd index 1befe3a68c2324bdf7f41b3d9bc82d04d1d10198..3757080a12f7a45e5375f7efd43812f1d0d5f3fc 100644 --- a/man/plot.valuationTable.Rd +++ b/man/plot.mortalityTable.Rd @@ -1,15 +1,15 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/plot.valuationTable.R -\name{plot.valuationTable} -\alias{plot.valuationTable} -\title{Plot multiple valuation tables (life tables) in one plot} +% Please edit documentation in R/plot.mortalityTable.R +\name{plot.mortalityTable} +\alias{plot.mortalityTable} +\title{Plot multiple mortality tables (life tables) in one plot} \usage{ -\method{plot}{valuationTable}(x, ..., reference = NULL) +\method{plot}{mortalityTable}(x, ..., reference = NULL) } \arguments{ -\item{x}{First life table to be plotted. Must be a \code{valuationTable} object for the dispatcher to call this function} +\item{x}{First life table to be plotted. Must be a \code{mortalityTable} object for the dispatcher to call this function} -\item{...}{Additional life tables to be plotted (\code{valuationTable} objects)} +\item{...}{Additional life tables to be plotted (\code{mortalityTable} objects)} \item{reference}{The reference table that determines the 100\% values. If not given, the first argument of \code{data} is used as reference table.} @@ -24,8 +24,8 @@ \item{legend.key.width}{The keywith of the lines in the legend (default is \code{unit(25,"mm")})} } \description{ -\code{plot.valuationTable} displays multiple life tables (objects of child -classes of \code{valuationTable}) in one plot, with a legend showing the +\code{plot.mortalityTable} displays multiple life tables (objects of child +classes of \code{mortalityTable}) in one plot, with a legend showing the names of the tables. If the argument \code{reference} not given, all mortality rates are plotted on a log-linear scale for comparison. If the argument \code{reference} is given and is a valid life table, then all @@ -34,7 +34,7 @@ shows the death rates as percentage of the reference table. } \examples{ # Load the Austrian census data -valuationTables.load("Austria_Census") +mortalityTables.load("Austria_Census") # Plot some select census tables in a log-linear plot plot(mort.AT.census.1869.male, mort.AT.census.1869.female, @@ -54,6 +54,6 @@ plot(mort.AT.census.1869.male, mort.AT.census.1869.female, } \seealso{ -\code{\link{plotValuationTables}} and \code{\link{plotValuationTableComparisons}} +\code{\link{plotMortalityTables}} and \code{\link{plotMortalityTableComparisons}} } diff --git a/man/plotValuationTableComparisons.Rd b/man/plotMortalityTableComparisons.Rd similarity index 70% rename from man/plotValuationTableComparisons.Rd rename to man/plotMortalityTableComparisons.Rd index 02841f6c623184251dfbfed643750fc65713eae2..aa1ba20ef12915c11c6e0c8eb3874cfa1079a05e 100644 --- a/man/plotValuationTableComparisons.Rd +++ b/man/plotMortalityTableComparisons.Rd @@ -1,17 +1,17 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/plotValuationTableComparisons.R -\name{plotValuationTableComparisons} -\alias{plotValuationTableComparisons} -\title{Plot multiple valuation tables (life tables) in one plot, relative to a given reference table} +% Please edit documentation in R/plotMortalityTableComparisons.R +\name{plotMortalityTableComparisons} +\alias{plotMortalityTableComparisons} +\title{Plot multiple mortality tables (life tables) in one plot, relative to a given reference table} \usage{ -plotValuationTableComparisons(data, ..., xlim = NULL, ylim = NULL, +plotMortalityTableComparisons(data, ..., xlim = NULL, ylim = NULL, xlab = NULL, ylab = NULL, title = "", legend.position = c(0.9, 0.1), legend.key.width = unit(25, "mm"), reference = NULL) } \arguments{ -\item{data}{First life table to be plotted. Either a \code{data.frame} generated by \code{makeQxDataFrame} or a \code{valuationTable} object} +\item{data}{First life table to be plotted. Either a \code{data.frame} generated by \code{makeQxDataFrame} or a \code{mortalityTable} object} -\item{...}{Additional life tables to be plotted (if \code{data} is a \code{valuationTable} object)} +\item{...}{Additional life tables to be plotted (if \code{data} is a \code{mortalityTable} object)} \item{xlim}{X-axis limitatation (as a two-element vector)} @@ -30,6 +30,6 @@ plotValuationTableComparisons(data, ..., xlim = NULL, ylim = NULL, \item{reference}{The reference table that determines the 100\% values. If not given, the first argument of \code{data} is used as reference table.} } \description{ -\code{plotValuationTableComparisons} prints multiple life tables (objects of child classes of \code{valuationTable}) in one plot and scales each by the given reference table, so that the relative mortality can be easily seen. A legend is added showing the names of the tables. +\code{plotMortalityTableComparisons} prints multiple life tables (objects of child classes of \code{mortalityTable}) in one plot and scales each by the given reference table, so that the relative mortality can be easily seen. A legend is added showing the names of the tables. } diff --git a/man/plotValuationTables.Rd b/man/plotMortalityTables.Rd similarity index 64% rename from man/plotValuationTables.Rd rename to man/plotMortalityTables.Rd index 088d13ba23437b80fcf743d6c629e559c4ee8b8a..d767fbdc235e5eae0a9d19c2a43524f7dd68c8a5 100644 --- a/man/plotValuationTables.Rd +++ b/man/plotMortalityTables.Rd @@ -1,17 +1,17 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/plotValuationTables.R -\name{plotValuationTables} -\alias{plotValuationTables} -\title{Plot multiple valuation tables (life tables) in one plot} +% Please edit documentation in R/plotMortalityTables.R +\name{plotMortalityTables} +\alias{plotMortalityTables} +\title{Plot multiple mortality tables (life tables) in one plot} \usage{ -plotValuationTables(data, ..., xlim = NULL, ylim = NULL, xlab = NULL, +plotMortalityTables(data, ..., xlim = NULL, ylim = NULL, xlab = NULL, ylab = NULL, title = "", legend.position = c(0.9, 0.1), legend.key.width = unit(25, "mm")) } \arguments{ -\item{data}{First life table to be plotted. Either a \code{data.frame} generated by \code{makeQxDataFrame} or a \code{valuationTable} object} +\item{data}{First life table to be plotted. Either a \code{data.frame} generated by \code{makeQxDataFrame} or a \code{mortalityTable} object} -\item{...}{Additional life tables to be plotted (if \code{data} is a \code{valuationTable} object)} +\item{...}{Additional life tables to be plotted (if \code{data} is a \code{mortalityTable} object)} \item{xlim}{X-axis limitatation (as a two-element vector)} @@ -28,6 +28,6 @@ plotValuationTables(data, ..., xlim = NULL, ylim = NULL, xlab = NULL, \item{legend.key.width}{The keywith of the lines in the legend (default is \code{unit(25,"mm")})} } \description{ -\code{plotValuationTables} prints multiple life tables (objects of child classes of \code{valuationTable}) in one log-linear plot, with a legend showing the names of the tables. +\code{plotMortalityTables} prints multiple life tables (objects of child classes of \code{mortalityTable}) in one log-linear plot, with a legend showing the names of the tables. } diff --git a/man/setLoading.Rd b/man/setLoading.Rd index 0914b2ac099a290a3891dd7a9f8dbf86886032e2..04bea1df0b68366531cea1d9f5d4503c26112687 100644 --- a/man/setLoading.Rd +++ b/man/setLoading.Rd @@ -3,15 +3,15 @@ \docType{methods} \name{setLoading} \alias{setLoading} -\alias{setLoading,valuationTable-method} +\alias{setLoading,mortalityTable-method} \title{Return a copy of the table with an additional loading added} \usage{ setLoading(object, loading = 0) -\S4method{setLoading}{valuationTable}(object, loading = 0) +\S4method{setLoading}{mortalityTable}(object, loading = 0) } \arguments{ -\item{object}{A life table object (instance of a \code{valuationTable} class)} +\item{object}{A life table object (instance of a \code{mortalityTable} class)} \item{loading}{The additional (security) loading to be added to the table.} } @@ -20,6 +20,6 @@ Return a copy of the table with an additional loading added } \section{Methods (by class)}{ \itemize{ -\item \code{valuationTable}: Return the life table with the given loading set +\item \code{mortalityTable}: Return the life table with the given loading set }} diff --git a/man/setModification.Rd b/man/setModification.Rd index 607ec191f4b7d6a6c4fd065ee754369d63d0dd6c..966f37ca2e51063feb327443c6c63f817decacee 100644 --- a/man/setModification.Rd +++ b/man/setModification.Rd @@ -3,15 +3,15 @@ \docType{methods} \name{setModification} \alias{setModification} -\alias{setModification,valuationTable-method} +\alias{setModification,mortalityTable-method} \title{Return a copy of the table with the given modification function added} \usage{ setModification(object, modification = 0) -\S4method{setModification}{valuationTable}(object, modification = 0) +\S4method{setModification}{mortalityTable}(object, modification = 0) } \arguments{ -\item{object}{A life table object (instance of a \code{valuationTable} class)} +\item{object}{A life table object (instance of a \code{mortalityTable} class)} \item{modification}{The postprocessing modification function (for example, so enforce a lower bound).} } @@ -20,6 +20,6 @@ Return a copy of the table with the given modification function added } \section{Methods (by class)}{ \itemize{ -\item \code{valuationTable}: Return the life table with the given modification set +\item \code{mortalityTable}: Return the life table with the given modification set }} diff --git a/man/undampenTrend.Rd b/man/undampenTrend.Rd index f49416ed4ec3337d4dc4895b1a674fca9fc26b80..693bac9d2459552e5487e3e5c7cd0f1e14310bc8 100644 --- a/man/undampenTrend.Rd +++ b/man/undampenTrend.Rd @@ -3,22 +3,22 @@ \docType{methods} \name{undampenTrend} \alias{undampenTrend} -\alias{undampenTrend,valuationTable.trendProjection-method} -\title{Return a \code{valuationTable.trendProjection} object with the trend damping removed.} +\alias{undampenTrend,mortalityTable.trendProjection-method} +\title{Return a \code{mortalityTable.trendProjection} object with the trend damping removed.} \usage{ undampenTrend(object) -\S4method{undampenTrend}{valuationTable.trendProjection}(object) +\S4method{undampenTrend}{mortalityTable.trendProjection}(object) } \arguments{ -\item{object}{The life table object (class inherited from valuationTable)} +\item{object}{The life table object (class inherited from mortalityTable)} } \description{ -Return a \code{valuationTable.trendProjection} object with the trend damping removed. +Return a \code{mortalityTable.trendProjection} object with the trend damping removed. } \section{Methods (by class)}{ \itemize{ -\item \code{valuationTable.trendProjection}: Return a \code{valuationTable.trendProjection} +\item \code{mortalityTable.trendProjection}: Return a \code{mortalityTable.trendProjection} object with the trend damping removed. }} diff --git a/man/valuationTable.mixed-class.Rd b/man/valuationTable.mixed-class.Rd deleted file mode 100644 index 02f07910fe9398f5075e26c9e1532ebf34e82e22..0000000000000000000000000000000000000000 --- a/man/valuationTable.mixed-class.Rd +++ /dev/null @@ -1,24 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/valuationTable.mixed.R -\docType{class} -\name{valuationTable.mixed-class} -\alias{valuationTable.mixed} -\alias{valuationTable.mixed-class} -\title{Class valuationTable.mixed - Life table as a mix of two life tables} -\description{ -A cohort life table obtained by mixing two life tables with the given weights -} -\section{Slots}{ - -\describe{ -\item{\code{table1}}{The first \code{valuationTable}} - -\item{\code{table2}}{The second \code{valuationTable}} - -\item{\code{weight1}}{The weight of the first valuation table} - -\item{\code{weight2}}{The weight of the second valuation table} - -\item{\code{loading}}{Additional security loading} -}} - diff --git a/man/valuationTables.list.Rd b/man/valuationTables.list.Rd deleted file mode 100644 index 922b2c3da67bfe2eae82ba91896e04debfe47c64..0000000000000000000000000000000000000000 --- a/man/valuationTables.list.Rd +++ /dev/null @@ -1,17 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/valuationTables.list.R -\name{valuationTables.list} -\alias{valuationTables.list} -\title{List all available sets of life tables provided by the \link[ValuationTables]{ValuationTables-package} package -An existing life table can then be loaded with \link{valuationTables.load}.} -\usage{ -valuationTables.list(pattern = "*") -} -\arguments{ -\item{pattern}{Restrict the results only to life table sets that match the pattern (default: "*" to show all sets)} -} -\description{ -List all available sets of life tables provided by the \link[ValuationTables]{ValuationTables-package} package -An existing life table can then be loaded with \link{valuationTables.load}. -} - diff --git a/man/valuationTables.load.Rd b/man/valuationTables.load.Rd deleted file mode 100644 index e9aaea8bc6076f325e4928f32cd30f1da07dc955..0000000000000000000000000000000000000000 --- a/man/valuationTables.load.Rd +++ /dev/null @@ -1,19 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/valuationTables.load.R -\name{valuationTables.load} -\alias{valuationTables.load} -\title{Load a named set of life tables provided by the \link{ValuationTables} package} -\usage{ -valuationTables.load(dataset, wildcard = FALSE) -} -\arguments{ -\item{dataset}{The set of life tables to be loaded. A list of all available -data sets is provided by the} - -\item{wildcard}{Whether the dataset name contains wildcard. If TRUE, all -datasets matching the pattern will be loaded} -} -\description{ -Load a named set of life tables provided by the \link{ValuationTables} package -} - diff --git a/vignettes/using-the-valuationTables-package.R b/vignettes/using-the-mortalityTables-package.R similarity index 92% rename from vignettes/using-the-valuationTables-package.R rename to vignettes/using-the-mortalityTables-package.R index a7da1335c8d772dc3b4e5ede8bb722fc88adc1c3..4c5260e64eb3314734dbbdc561412b919bda099f 100644 --- a/vignettes/using-the-valuationTables-package.R +++ b/vignettes/using-the-mortalityTables-package.R @@ -2,20 +2,20 @@ knitr::opts_chunk$set(collapse = TRUE, comment = "#>") ## ----message=FALSE------------------------------------------------------- -library("ValuationTables") +library("MortalityTables") ## ------------------------------------------------------------------------ # list all available data sets -valuationTables.list() +mortalityTables.list() # list all datasets for Austria -valuationTables.list("Austria_*") +mortalityTables.list("Austria_*") # Load the German annuity table DAV 2004-R -valuationTables.load("Germany_Annuities_DAV2004R") +mortalityTables.load("Germany_Annuities_DAV2004R") # Load all Austrian data sets -valuationTables.load("Austria_*", wildcard=TRUE) +mortalityTables.load("Austria_*", wildcard=TRUE) ## ------------------------------------------------------------------------ # Log-linear plot comparing some Austrian census tables @@ -37,7 +37,7 @@ plot(AVÖ1996R.male, AVOe2005R.male, Period=2020, title="Comparison for observat ## ----message=FALSE------------------------------------------------------- -valuationTables.load("Austria_Annuities") +mortalityTables.load("Austria_Annuities") # Get the cohort death probabilities for Austrian Annuitants born in 1977: qx.coh1977 = deathProbabilities(AVOe2005R.male, YOB=1977) @@ -45,7 +45,7 @@ qx.coh1977 = deathProbabilities(AVOe2005R.male, YOB=1977) qx.per2020 = periodDeathProbabilities(AVOe2005R.male, Period=2020) ## ------------------------------------------------------------------------ -# Get the cohort death probabilities for Austrian Annuitants born in 1977 as a valuationTable.period object: +# Get the cohort death probabilities for Austrian Annuitants born in 1977 as a mortalityTable.period object: table.coh1977 = getCohortTable(AVOe2005R.male, YOB=1977) # Get the period death probabilities for Austrian Annuitants observed in the year 2020: @@ -56,13 +56,13 @@ plot(table.coh1977, table.per2020, title="Comparison of cohort 1977 with Period ## ------------------------------------------------------------------------ -lt = valuationTable.period(name="Sample period lifetable", ages=1:99, deathProbs=exp(-(99:1)/10)) +lt = mortalityTable.period(name="Sample period lifetable", ages=1:99, deathProbs=exp(-(99:1)/10)) plot(lt, title="Simple log-linear period mortality table") deathProbabilities(lt) ## ------------------------------------------------------------------------ -atPlus2 = valuationTable.trendProjection( +atPlus2 = mortalityTable.trendProjection( name = "Austrian Census Males 2011, 2% yearly trend", baseYear = 2011, deathProbs = deathProbabilities(mort.AT.census.2011.male), @@ -71,7 +71,7 @@ atPlus2 = valuationTable.trendProjection( ) ## ------------------------------------------------------------------------ -atPlus2.damp = valuationTable.trendProjection( +atPlus2.damp = mortalityTable.trendProjection( name = "Austrian M '11, 2% yearly, damping until 2111", baseYear = 2011, deathProbs = deathProbabilities(mort.AT.census.2011.male), @@ -86,7 +86,7 @@ atPlus2.damp = valuationTable.trendProjection( plot(mort.AT.census.2011.male, atPlus2, atPlus2.damp, YOB=2011, legend.position=c(0.8,0.75)) ## ------------------------------------------------------------------------ -atPlus2.damp2 = valuationTable.trendProjection( +atPlus2.damp2 = mortalityTable.trendProjection( name = "Austrian M '11, 2% yearly, 1% long-term", baseYear = 2011, deathProbs = deathProbabilities(mort.AT.census.2011.male), @@ -108,7 +108,7 @@ plot(mort.AT.census.2011.male, atPlus2, atPlus2.damp, atPlus2.damp2, YOB=2011, l baseTableShift = getCohortTable(atPlus2, YOB=2011); baseTableShift@name = "Base table of the shift (YOB 2011)" -atShifted = valuationTable.ageShift( +atShifted = mortalityTable.ageShift( name = "Approximation with age shift", baseYear = 2011, deathProbs = deathProbabilities(baseTableShift), diff --git a/vignettes/using-the-valuationTables-package.Rmd b/vignettes/using-the-mortalityTables-package.Rmd similarity index 88% rename from vignettes/using-the-valuationTables-package.Rmd rename to vignettes/using-the-mortalityTables-package.Rmd index 432e790c1560bbed4d09ba558650f281b9604247..dbb85ff01b78348f6d42f5d6a4258bddebc970ca 100644 --- a/vignettes/using-the-valuationTables-package.Rmd +++ b/vignettes/using-the-mortalityTables-package.Rmd @@ -1,5 +1,5 @@ --- -title: "Using the ValuationTables Package" +title: "Using the MortalityTables Package" author: "Reinhold Kainhofer, reinhold@kainhofer.com" date: "`r Sys.Date()`" output: @@ -9,7 +9,7 @@ output: fig_width: 7 fig_height: 5 vignette: > - %\VignetteIndexEntry{ValuationTables} + %\VignetteIndexEntry{MortalityTables} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- @@ -19,8 +19,9 @@ vignette: > knitr::opts_chunk$set(collapse = TRUE, comment = "#>") ``` -The ValuationTables package provides the `valuationTable` base class and -some derived classes to handle different types of valuation life tables, mainly +The MortalityTables package provides the `mortalityTable` base class and +some derived classes to handle different types of mortality tables (also +called life tables), mainly used for life insurance. Additionally it provides a plot function to compare multiple life tables either directly using the absolute mortalities in log-linear plots or using relative mortalities as percentages of a given @@ -28,16 +29,16 @@ reference table. ## Types of Life Tables -Provided types of valuation tables are: +Provided types of mortality tables are: * Base class - : Class `valuationTable` + : Class `mortalityTable` * Period life table - : Class `valuationTable.period (ages, deathProbs, ..., baseYear=2000)` + : Class `mortalityTable.period (ages, deathProbs, ..., baseYear=2000)` : Death probabilities observed / predicted for one observation year; No dependency on the bith year is assumed. * Cohort life table using age-specific trends - : Class `valuationTable.trendProjection` + : Class `mortalityTable.trendProjection` : Death probabilities of a given base year are projected into the future using age-specific trends $\lambda_x$. The death probability of an $x$-year old in year `baseYear + n` is calculated as: @@ -45,49 +46,49 @@ Provided types of valuation tables are: : Consequently, the death probabilities for a person born in year `YOB` can be calculated as $$q_x^{YOB} = q_x^{(base)} \cdot e^{-(YOB+x-baseYear)\cdot \lambda_x}$$ * Cohort life table approximation using age shift - : Class `valuationTable.ageShift` + : Class `mortalityTable.ageShift` : Death probabilities for cohort $YOB$ are obtained by using death probabilities for cohort $X$ and modifying the technical age with a birth-year dependent shift: $$q_x^{YOB} = q_{x+shift(YOB)}^{(base)}$$ <!-- * Observed life table --> -<!-- : Class `valuationTable.observed` --> +<!-- : Class `mortalityTable.observed` --> <!-- : Death probabilities observed during several years. The probabilities are --> <!-- stored as a matrix with observation year and age as dimensions. --> * Mixed life table - : Class `valuationTable.mixed` + : Class `mortalityTable.mixed` : Arithmetic mean of two life tables with given weights. This approach is often used to generate unisex life tables by mixing male and female mortalities with given weights (e.g. 70:30 or 40:60) * Cohort life table using age-specific improvement factors - : Class `valuationTable.improvementFactors` + : Class `mortalityTable.improvementFactors` : Project base life table using age-specific improvement factors. -## Loading the ValuationTables package +## Loading the MortalityTables package ```{r message=FALSE} -library("ValuationTables") +library("MortalityTables") ``` ## Provided Data Sets The package provides several real-life life tables published by census bureaus and actuarial associations around the world. You can use the function -`valuationTables.list` to list all available datasets (if no argument is given) +`mortalityTables.list` to list all available datasets (if no argument is given) or all datasets that match the given pattern (wildcard character is *). You can -then use `valuationTables.load` to load either one single data set or all +then use `mortalityTables.load` to load either one single data set or all datasets that match the pattern (if `wildcard=TRUE` is given). ```{r} # list all available data sets -valuationTables.list() +mortalityTables.list() # list all datasets for Austria -valuationTables.list("Austria_*") +mortalityTables.list("Austria_*") # Load the German annuity table DAV 2004-R -valuationTables.load("Germany_Annuities_DAV2004R") +mortalityTables.load("Germany_Annuities_DAV2004R") # Load all Austrian data sets -valuationTables.load("Austria_*", wildcard=TRUE) +mortalityTables.load("Austria_*", wildcard=TRUE) ``` @@ -101,15 +102,15 @@ for demonstration purposes. The package provides two functions to plot lifetables: -* `plotValuationTables(table1, table2, ...)` +* `plotMortalityTables(table1, table2, ...)` : A log-linear plot comparing all given life tables. -* `plotValuationTableComparisons(table1, table2, ..., reference=reftable)` +* `plotMortalityTableComparisons(table1, table2, ..., reference=reftable)` : Plot the given life tables as percentages relative to the reference table Both functionalities are also combined into the S3 plot function for the -valuationTable class, so you can usually just call plot on the valuation tables. -If the `reference` argument is given, `plotValuationTableComparisons` is used, -otherwise `plotValuationTables` is called. +mortalityTable class, so you can usually just call plot on the mortality tables. +If the `reference` argument is given, `plotMortalityTableComparisons` is used, +otherwise `plotMortalityTables` is called. ```{r} # Log-linear plot comparing some Austrian census tables plot(mort.AT.census.1951.male, mort.AT.census.1991.male, @@ -144,7 +145,7 @@ To obtain death probabilities from all the different types of tables, there are observation year ```{r message=FALSE} -valuationTables.load("Austria_Annuities") +mortalityTables.load("Austria_Annuities") # Get the cohort death probabilities for Austrian Annuitants born in 1977: qx.coh1977 = deathProbabilities(AVOe2005R.male, YOB=1977) @@ -156,11 +157,11 @@ These functions return the death probabilities as a simple, numeric R vector. There are two similar functions that return the death probabilities as a period life table object that can be used with all other functions provided by this package: -* `getCohortTable`: Get a `valuationTable` object describing the death probabilities for people born in the given year -* `getPeriodTable`: Get a `valuationTable` object describing the death probabilities observed in the given year +* `getCohortTable`: Get a `mortalityTable` object describing the death probabilities for people born in the given year +* `getPeriodTable`: Get a `mortalityTable` object describing the death probabilities observed in the given year ```{r} -# Get the cohort death probabilities for Austrian Annuitants born in 1977 as a valuationTable.period object: +# Get the cohort death probabilities for Austrian Annuitants born in 1977 as a mortalityTable.period object: table.coh1977 = getCohortTable(AVOe2005R.male, YOB=1977) # Get the period death probabilities for Austrian Annuitants observed in the year 2020: @@ -207,7 +208,7 @@ refer to different persons, being of the corresponding ages in the observation year. All that is needed to create a period life table are the death probabilities and the corresponding ages: ```{r} -lt = valuationTable.period(name="Sample period lifetable", ages=1:99, deathProbs=exp(-(99:1)/10)) +lt = mortalityTable.period(name="Sample period lifetable", ages=1:99, deathProbs=exp(-(99:1)/10)) plot(lt, title="Simple log-linear period mortality table") deathProbabilities(lt) @@ -230,7 +231,7 @@ A cohort life table with trend projection needs the following parameters: * ```{r} -atPlus2 = valuationTable.trendProjection( +atPlus2 = mortalityTable.trendProjection( name = "Austrian Census Males 2011, 2% yearly trend", baseYear = 2011, deathProbs = deathProbabilities(mort.AT.census.2011.male), @@ -251,11 +252,11 @@ over time it will assume the value `dampeningFunction(ObservationYear-BaseYear) * OriginalTrend`. The dampening function in this case gives the cumulated trend effect from the base year until the observation year. -To implement this trend reduction with the ValuationTables package, simply pass +To implement this trend reduction with the MortalityTables package, simply pass a one-argument function as the `dampingFunction` slot to the class, the argument will be the number of years from the base year (NOT the calendar year!): ```{r} -atPlus2.damp = valuationTable.trendProjection( +atPlus2.damp = mortalityTable.trendProjection( name = "Austrian M '11, 2% yearly, damping until 2111", baseYear = 2011, deathProbs = deathProbabilities(mort.AT.census.2011.male), @@ -280,7 +281,7 @@ The argument in this case is the actual calendar year (not the year since the base year like it was in the one-trend case above!) ```{r} -atPlus2.damp2 = valuationTable.trendProjection( +atPlus2.damp2 = mortalityTable.trendProjection( name = "Austrian M '11, 2% yearly, 1% long-term", baseYear = 2011, deathProbs = deathProbabilities(mort.AT.census.2011.male), @@ -319,7 +320,7 @@ birth year the amount the age is modified. baseTableShift = getCohortTable(atPlus2, YOB=2011); baseTableShift@name = "Base table of the shift (YOB 2011)" -atShifted = valuationTable.ageShift( +atShifted = mortalityTable.ageShift( name = "Approximation with age shift", baseYear = 2011, deathProbs = deathProbabilities(baseTableShift), @@ -383,7 +384,7 @@ plot(AVOe2005R.female, AVOe2005R.female.sec, title="Original and modified table" ### Adding a modification to the raw probabilities Some uses require post-processing of the death probabilities, like adding a lower -bound for the death probabilities. To achive this, all `valuationTable`-derived +bound for the death probabilities. To achive this, all `mortalityTable`-derived classes have a slot `modification` that takes a function that is passed the vector of death probabilities. diff --git a/vignettes/using-the-valuationTables-package.html b/vignettes/using-the-mortalityTables-package.html similarity index 99% rename from vignettes/using-the-valuationTables-package.html rename to vignettes/using-the-mortalityTables-package.html index eb86da42facac0336ff907509bd386af4ab10231..1951f0006561884fd217d52a7fafd65fafbcf0e0 100644 --- a/vignettes/using-the-valuationTables-package.html +++ b/vignettes/using-the-mortalityTables-package.html @@ -14,7 +14,7 @@ <meta name="date" content="2016-09-04" /> -<title>Using the ValuationTables Package</title> +<title>Using the MortalityTables Package</title> @@ -68,7 +68,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf -<h1 class="title toc-ignore">Using the ValuationTables Package</h1> +<h1 class="title toc-ignore">Using the MortalityTables Package</h1> <h4 class="author"><em>Reinhold Kainhofer, <a href="mailto:reinhold@kainhofer.com">reinhold@kainhofer.com</a></em></h4> <h4 class="date"><em>2016-09-04</em></h4> @@ -76,7 +76,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf <div id="TOC"> <ul> <li><a href="#types-of-life-tables">Types of Life Tables</a></li> -<li><a href="#loading-the-valuationtables-package">Loading the ValuationTables package</a></li> +<li><a href="#loading-the-mortalitytables-package">Loading the MortalityTables package</a></li> <li><a href="#provided-data-sets">Provided Data Sets</a></li> <li><a href="#working-with-life-table-objects">Working with life table objects</a><ul> <li><a href="#plotting-life-tables">Plotting life tables</a></li> @@ -96,26 +96,26 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf </ul> </div> -<p>The ValuationTables package provides the <code>valuationTable</code> base class and some derived classes to handle different types of valuation life tables, mainly used for life insurance. Additionally it provides a plot function to compare multiple life tables either directly using the absolute mortalities in log-linear plots or using relative mortalities as percentages of a given reference table.</p> +<p>The MortalityTables package provides the <code>mortalityTable</code> base class and some derived classes to handle different types of mortality tables (also called life tables), mainly used for life insurance. Additionally it provides a plot function to compare multiple life tables either directly using the absolute mortalities in log-linear plots or using relative mortalities as percentages of a given reference table.</p> <div id="types-of-life-tables" class="section level2"> <h2>Types of Life Tables</h2> -<p>Provided types of valuation tables are:</p> +<p>Provided types of mortality tables are:</p> <ul> <li><dl> <dt>Base class</dt> -<dd>Class <code>valuationTable</code> +<dd>Class <code>mortalityTable</code> </dd> </dl></li> <li><dl> <dt>Period life table</dt> -<dd>Class <code>valuationTable.period (ages, deathProbs, ..., baseYear=2000)</code> +<dd>Class <code>mortalityTable.period (ages, deathProbs, ..., baseYear=2000)</code> </dd> <dd>Death probabilities observed / predicted for one observation year; No dependency on the bith year is assumed. </dd> </dl></li> <li><dl> <dt>Cohort life table using age-specific trends</dt> -<dd>Class <code>valuationTable.trendProjection</code> +<dd>Class <code>mortalityTable.trendProjection</code> </dd> <dd>Death probabilities of a given base year are projected into the future using age-specific trends <span class="math inline">\(\lambda_x\)</span>. The death probability of an <span class="math inline">\(x\)</span>-year old in year <code>baseYear + n</code> is calculated as: <span class="math display">\[q_x^{(baseYear+n)} = q_x^{(baseYear)} \cdot e^{-n\cdot\lambda_x}\]</span> </dd> @@ -124,36 +124,36 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf </dl></li> <li><dl> <dt>Cohort life table approximation using age shift</dt> -<dd>Class <code>valuationTable.ageShift</code> +<dd>Class <code>mortalityTable.ageShift</code> </dd> -<dd>Death probabilities for cohort <span class="math inline">\(YOB\)</span> are obtained by using death probabilities for cohort <span class="math inline">\(X\)</span> and modifying the technical age with a birth-year dependent shift: <span class="math display">\[q_x^{YOB} = q_{x+shift(YOB)}^{(base)}\]</span> <!-- * Observed life table --> <!-- : Class `valuationTable.observed` --> <!-- : Death probabilities observed during several years. The probabilities are --> <!-- stored as a matrix with observation year and age as dimensions. --> +<dd>Death probabilities for cohort <span class="math inline">\(YOB\)</span> are obtained by using death probabilities for cohort <span class="math inline">\(X\)</span> and modifying the technical age with a birth-year dependent shift: <span class="math display">\[q_x^{YOB} = q_{x+shift(YOB)}^{(base)}\]</span> <!-- * Observed life table --> <!-- : Class `mortalityTable.observed` --> <!-- : Death probabilities observed during several years. The probabilities are --> <!-- stored as a matrix with observation year and age as dimensions. --> </dd> </dl></li> <li><dl> <dt>Mixed life table</dt> -<dd>Class <code>valuationTable.mixed</code> +<dd>Class <code>mortalityTable.mixed</code> </dd> <dd>Arithmetic mean of two life tables with given weights. This approach is often used to generate unisex life tables by mixing male and female mortalities with given weights (e.g. 70:30 or 40:60) </dd> </dl></li> <li><dl> <dt>Cohort life table using age-specific improvement factors</dt> -<dd>Class <code>valuationTable.improvementFactors</code> +<dd>Class <code>mortalityTable.improvementFactors</code> </dd> <dd>Project base life table using age-specific improvement factors. </dd> </dl></li> </ul> </div> -<div id="loading-the-valuationtables-package" class="section level2"> -<h2>Loading the ValuationTables package</h2> -<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">library</span>(<span class="st">"ValuationTables"</span>)</code></pre></div> +<div id="loading-the-mortalitytables-package" class="section level2"> +<h2>Loading the MortalityTables package</h2> +<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">library</span>(<span class="st">"MortalityTables"</span>)</code></pre></div> </div> <div id="provided-data-sets" class="section level2"> <h2>Provided Data Sets</h2> -<p>The package provides several real-life life tables published by census bureaus and actuarial associations around the world. You can use the function <code>valuationTables.list</code> to list all available datasets (if no argument is given) or all datasets that match the given pattern (wildcard character is *). You can then use <code>valuationTables.load</code> to load either one single data set or all datasets that match the pattern (if <code>wildcard=TRUE</code> is given).</p> +<p>The package provides several real-life life tables published by census bureaus and actuarial associations around the world. You can use the function <code>mortalityTables.list</code> to list all available datasets (if no argument is given) or all datasets that match the given pattern (wildcard character is *). You can then use <code>mortalityTables.load</code> to load either one single data set or all datasets that match the pattern (if <code>wildcard=TRUE</code> is given).</p> <div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># list all available data sets</span> -<span class="kw">valuationTables.list</span>() +<span class="kw">mortalityTables.list</span>() <span class="co">#> [1] "Austria_Annuities" "Austria_Annuities_AVOe1996R"</span> <span class="co">#> [3] "Austria_Annuities_AVOe2005R" "Austria_Annuities_EROMF" </span> <span class="co">#> [5] "Austria_Annuities_RR67" "Austria_Census" </span> @@ -165,27 +165,27 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf <span class="co">#> [17] "USA_Annuities_2012IAM" "USA_Annuities_Annuity2000"</span> <span class="co"># list all datasets for Austria</span> -<span class="kw">valuationTables.list</span>(<span class="st">"Austria_*"</span>) +<span class="kw">mortalityTables.list</span>(<span class="st">"Austria_*"</span>) <span class="co">#> [1] "Austria_Annuities" "Austria_Annuities_AVOe1996R"</span> <span class="co">#> [3] "Austria_Annuities_AVOe2005R" "Austria_Annuities_EROMF" </span> <span class="co">#> [5] "Austria_Annuities_RR67" "Austria_Census"</span> <span class="co"># Load the German annuity table DAV 2004-R</span> -<span class="kw">valuationTables.load</span>(<span class="st">"Germany_Annuities_DAV2004R"</span>) -<span class="co">#> Loading valuation life table data set 'Germany_Annuities_DAV2004R'</span> +<span class="kw">mortalityTables.load</span>(<span class="st">"Germany_Annuities_DAV2004R"</span>) +<span class="co">#> Loading mortality table data set 'Germany_Annuities_DAV2004R'</span> <span class="co"># Load all Austrian data sets</span> -<span class="kw">valuationTables.load</span>(<span class="st">"Austria_*"</span>, <span class="dt">wildcard=</span><span class="ot">TRUE</span>) -<span class="co">#> Loading valuation life table data set 'Austria_Annuities'</span> -<span class="co">#> Loading valuation life table data set 'Austria_Annuities_AVOe1996R'</span> -<span class="co">#> Loading valuation life table data set 'Austria_Annuities_AVOe2005R'</span> -<span class="co">#> Loading valuation life table data set 'Austria_Annuities_EROMF'</span> -<span class="co">#> Loading valuation life table data set 'Austria_Annuities_RR67'</span> -<span class="co">#> Loading valuation life table data set 'Austria_Annuities_AVOe1996R'</span> -<span class="co">#> Loading valuation life table data set 'Austria_Annuities_AVOe2005R'</span> -<span class="co">#> Loading valuation life table data set 'Austria_Annuities_EROMF'</span> -<span class="co">#> Loading valuation life table data set 'Austria_Annuities_RR67'</span> -<span class="co">#> Loading valuation life table data set 'Austria_Census'</span></code></pre></div> +<span class="kw">mortalityTables.load</span>(<span class="st">"Austria_*"</span>, <span class="dt">wildcard=</span><span class="ot">TRUE</span>) +<span class="co">#> Loading mortality table data set 'Austria_Annuities'</span> +<span class="co">#> Loading mortality table data set 'Austria_Annuities_AVOe1996R'</span> +<span class="co">#> Loading mortality table data set 'Austria_Annuities_AVOe2005R'</span> +<span class="co">#> Loading mortality table data set 'Austria_Annuities_EROMF'</span> +<span class="co">#> Loading mortality table data set 'Austria_Annuities_RR67'</span> +<span class="co">#> Loading mortality table data set 'Austria_Annuities_AVOe1996R'</span> +<span class="co">#> Loading mortality table data set 'Austria_Annuities_AVOe2005R'</span> +<span class="co">#> Loading mortality table data set 'Austria_Annuities_EROMF'</span> +<span class="co">#> Loading mortality table data set 'Austria_Annuities_RR67'</span> +<span class="co">#> Loading mortality table data set 'Austria_Census'</span></code></pre></div> <p>In the next few sections we will always use some of the provided life tables for demonstration purposes.</p> </div> <div id="working-with-life-table-objects" class="section level2"> @@ -195,17 +195,17 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf <p>The package provides two functions to plot lifetables:</p> <ul> <li><dl> -<dt><code>plotValuationTables(table1, table2, ...)</code></dt> +<dt><code>plotMortalityTables(table1, table2, ...)</code></dt> <dd>A log-linear plot comparing all given life tables. </dd> </dl></li> <li><dl> -<dt><code>plotValuationTableComparisons(table1, table2, ..., reference=reftable)</code></dt> +<dt><code>plotMortalityTableComparisons(table1, table2, ..., reference=reftable)</code></dt> <dd>Plot the given life tables as percentages relative to the reference table </dd> </dl></li> </ul> -<p>Both functionalities are also combined into the S3 plot function for the valuationTable class, so you can usually just call plot on the valuation tables. If the <code>reference</code> argument is given, <code>plotValuationTableComparisons</code> is used, otherwise <code>plotValuationTables</code> is called.</p> +<p>Both functionalities are also combined into the S3 plot function for the mortalityTable class, so you can usually just call plot on the mortality tables. If the <code>reference</code> argument is given, <code>plotMortalityTableComparisons</code> is used, otherwise <code>plotMortalityTables</code> is called.</p> <div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># Log-linear plot comparing some Austrian census tables</span> <span class="kw">plot</span>(mort.AT.census<span class="fl">.1951</span>.male, mort.AT.census<span class="fl">.1991</span>.male, mort.AT.census<span class="fl">.2001</span>.male, mort.AT.census<span class="fl">.2011</span>.male, @@ -237,7 +237,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf <li><code>deathProbabilities</code>: Returns the (cohort) death probabilities of the life table given the birth year</li> <li><code>periodDeathProbabilities</code>: Returns the (period) death probabilities of the life table for a given observation year</li> </ul> -<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">valuationTables.load</span>(<span class="st">"Austria_Annuities"</span>) +<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">mortalityTables.load</span>(<span class="st">"Austria_Annuities"</span>) <span class="co"># Get the cohort death probabilities for Austrian Annuitants born in 1977:</span> qx.coh1977 =<span class="st"> </span><span class="kw">deathProbabilities</span>(AVOe2005R.male, <span class="dt">YOB=</span><span class="dv">1977</span>) @@ -246,10 +246,10 @@ qx.per2020 =<span class="st"> </span><span class="kw">periodDeathProbabilities</ <p>These functions return the death probabilities as a simple, numeric R vector.</p> <p>There are two similar functions that return the death probabilities as a period life table object that can be used with all other functions provided by this package:</p> <ul> -<li><code>getCohortTable</code>: Get a <code>valuationTable</code> object describing the death probabilities for people born in the given year</li> -<li><code>getPeriodTable</code>: Get a <code>valuationTable</code> object describing the death probabilities observed in the given year</li> +<li><code>getCohortTable</code>: Get a <code>mortalityTable</code> object describing the death probabilities for people born in the given year</li> +<li><code>getPeriodTable</code>: Get a <code>mortalityTable</code> object describing the death probabilities observed in the given year</li> </ul> -<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># Get the cohort death probabilities for Austrian Annuitants born in 1977 as a valuationTable.period object:</span> +<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># Get the cohort death probabilities for Austrian Annuitants born in 1977 as a mortalityTable.period object:</span> table.coh1977 =<span class="st"> </span><span class="kw">getCohortTable</span>(AVOe2005R.male, <span class="dt">YOB=</span><span class="dv">1977</span>) <span class="co"># Get the period death probabilities for Austrian Annuitants observed in the year 2020:</span> @@ -307,7 +307,7 @@ table.per2020 =<span class="st"> </span><span class="kw">getPeriodTable</span>(A <div id="period-life-tables" class="section level3"> <h3>Period life tables</h3> <p>Period death probabilities are the simplest type of life table, giving the probabilities of death observed during the corresponding year (the “period”). The death probabilities of different ages refer to different persons, being of the corresponding ages in the observation year. All that is needed to create a period life table are the death probabilities and the corresponding ages:</p> -<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">lt =<span class="st"> </span><span class="kw">valuationTable.period</span>(<span class="dt">name=</span><span class="st">"Sample period lifetable"</span>, <span class="dt">ages=</span><span class="dv">1</span>:<span class="dv">99</span>, <span class="dt">deathProbs=</span><span class="kw">exp</span>(-(<span class="dv">99</span>:<span class="dv">1</span>)/<span class="dv">10</span>)) +<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">lt =<span class="st"> </span><span class="kw">mortalityTable.period</span>(<span class="dt">name=</span><span class="st">"Sample period lifetable"</span>, <span class="dt">ages=</span><span class="dv">1</span>:<span class="dv">99</span>, <span class="dt">deathProbs=</span><span class="kw">exp</span>(-(<span class="dv">99</span>:<span class="dv">1</span>)/<span class="dv">10</span>)) <span class="kw">plot</span>(lt, <span class="dt">title=</span><span class="st">"Simple log-linear period mortality table"</span>)</code></pre></div> <p><img src="data:image/png;base64,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" alt /><!-- --></p> <div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw">deathProbabilities</span>(lt) @@ -344,7 +344,7 @@ table.per2020 =<span class="st"> </span><span class="kw">getPeriodTable</span>(A <li>The base year (numeric)</li> <li></li> </ul> -<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">atPlus2 =<span class="st"> </span><span class="kw">valuationTable.trendProjection</span>( +<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">atPlus2 =<span class="st"> </span><span class="kw">mortalityTable.trendProjection</span>( <span class="dt">name =</span> <span class="st">"Austrian Census Males 2011, 2% yearly trend"</span>, <span class="dt">baseYear =</span> <span class="dv">2011</span>, <span class="dt">deathProbs =</span> <span class="kw">deathProbabilities</span>(mort.AT.census<span class="fl">.2011</span>.male), @@ -352,8 +352,8 @@ table.per2020 =<span class="st"> </span><span class="kw">getPeriodTable</span>(A <span class="dt">trend =</span> <span class="kw">rep</span>(<span class="fl">0.02</span>, <span class="kw">length</span>(<span class="kw">ages</span>(mort.AT.census<span class="fl">.2011</span>.male))) )</code></pre></div> <p>Some life tables do not assume a constant age-specific trend over time, but rather assume that the currently observed high mortality improvements are just a temporary effect, so the current trend is in effect only for some time and then reduces to some kind of long-term trend.</p> -<p>There are two conceptual approaches: One is to use a trend dampening function that is simply applied to the starting trend. So, while the initial trend might be 3%, i.e. the projection will use <code>(ObservationYear-BaseYear) * OriginalYear</code>, over time it will assume the value <code>dampeningFunction(ObservationYear-BaseYear) * OriginalTrend</code>. The dampening function in this case gives the cumulated trend effect from the base year until the observation year. To implement this trend reduction with the ValuationTables package, simply pass a one-argument function as the <code>dampingFunction</code> slot to the class, the argument will be the number of years from the base year (NOT the calendar year!):</p> -<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">atPlus2.damp =<span class="st"> </span><span class="kw">valuationTable.trendProjection</span>( +<p>There are two conceptual approaches: One is to use a trend dampening function that is simply applied to the starting trend. So, while the initial trend might be 3%, i.e. the projection will use <code>(ObservationYear-BaseYear) * OriginalYear</code>, over time it will assume the value <code>dampeningFunction(ObservationYear-BaseYear) * OriginalTrend</code>. The dampening function in this case gives the cumulated trend effect from the base year until the observation year. To implement this trend reduction with the MortalityTables package, simply pass a one-argument function as the <code>dampingFunction</code> slot to the class, the argument will be the number of years from the base year (NOT the calendar year!):</p> +<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">atPlus2.damp =<span class="st"> </span><span class="kw">mortalityTable.trendProjection</span>( <span class="dt">name =</span> <span class="st">"Austrian M '11, 2% yearly, damping until 2111"</span>, <span class="dt">baseYear =</span> <span class="dv">2011</span>, <span class="dt">deathProbs =</span> <span class="kw">deathProbabilities</span>(mort.AT.census<span class="fl">.2011</span>.male), @@ -369,7 +369,7 @@ table.per2020 =<span class="st"> </span><span class="kw">getPeriodTable</span>(A <p><img src="data:image/png;base64,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" alt /><!-- --></p> <p>The other approach is to assume that instead of the initial trend, after some time a second trend (slot trend2) takes over. In this case, the <code>dampingFunction</code> slot is again a one-argument function that now gives the weight of the first trend, while <code>1-dampingFunction(year)</code> will give the weight of the second trend. As the weights will be applied for the whole period from the base- to the observation year, the weights need to be cumulated and normalized.</p> <p>The argument in this case is the actual calendar year (not the year since the base year like it was in the one-trend case above!)</p> -<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">atPlus2.damp2 =<span class="st"> </span><span class="kw">valuationTable.trendProjection</span>( +<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">atPlus2.damp2 =<span class="st"> </span><span class="kw">mortalityTable.trendProjection</span>( <span class="dt">name =</span> <span class="st">"Austrian M '11, 2% yearly, 1% long-term"</span>, <span class="dt">baseYear =</span> <span class="dv">2011</span>, <span class="dt">deathProbs =</span> <span class="kw">deathProbabilities</span>(mort.AT.census<span class="fl">.2011</span>.male), @@ -398,7 +398,7 @@ table.per2020 =<span class="st"> </span><span class="kw">getPeriodTable</span>(A <div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">baseTableShift =<span class="st"> </span><span class="kw">getCohortTable</span>(atPlus2, <span class="dt">YOB=</span><span class="dv">2011</span>); baseTableShift@name =<span class="st"> "Base table of the shift (YOB 2011)"</span> -atShifted =<span class="st"> </span><span class="kw">valuationTable.ageShift</span>( +atShifted =<span class="st"> </span><span class="kw">mortalityTable.ageShift</span>( <span class="dt">name =</span> <span class="st">"Approximation with age shift"</span>, <span class="dt">baseYear =</span> <span class="dv">2011</span>, <span class="dt">deathProbs =</span> <span class="kw">deathProbabilities</span>(baseTableShift), @@ -448,7 +448,7 @@ AVOe2005R.female.sec@name =<span class="st"> "Table with 10% loading"< </div> <div id="adding-a-modification-to-the-raw-probabilities" class="section level3"> <h3>Adding a modification to the raw probabilities</h3> -<p>Some uses require post-processing of the death probabilities, like adding a lower bound for the death probabilities. To achive this, all <code>valuationTable</code>-derived classes have a slot <code>modification</code> that takes a function that is passed the vector of death probabilities.</p> +<p>Some uses require post-processing of the death probabilities, like adding a lower bound for the death probabilities. To achive this, all <code>mortalityTable</code>-derived classes have a slot <code>modification</code> that takes a function that is passed the vector of death probabilities.</p> <div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">AVOe2005R.female.mod =<span class="st"> </span><span class="kw">setModification</span>(AVOe2005R.female, <span class="dt">modification=</span>function (qx) <span class="kw">pmax</span>(<span class="fl">0.03</span>, qx)); <span class="co"># Make sure the modified table has a new name, otherwise plots might break</span> AVOe2005R.female.mod@name =<span class="st"> "Modified table (lower bound of 3%)"</span>