diff --git a/.gitignore b/.gitignore index 807ea251739a053faee6d72fe9dc3ae80d80cc15..f681c2b69d80bfe19973abf84b6ea48353e155e5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .Rproj.user .Rhistory .RData +.~lock.*# diff --git a/R/InsuranceTarif.R b/R/InsuranceTarif.R index 3079f3c1833b43e3300c13978ba0ceb3bc896f24..7f2c77b03bf366d2e035a51b19455386cfcff0c4 100644 --- a/R/InsuranceTarif.R +++ b/R/InsuranceTarif.R @@ -1,63 +1,147 @@ -library("lifecontingencies"); - - -# (virtual) base class for valuation tables, contains only the name / ID -InsuranceTarif=setRefClass( - "InsuranceContract", - slots=c( - name="character", - tarif="character", - desc="character", - YOB="numeric", - YOB2="numeric", - age="numeric", - age2="numeric", - contractLength="numeric", - mortalityTable="valuationTable", - mortalityTable2="valuationTable", - - interest="numeric", - - # cashflows="data.frame", - # deathPayments="list", - # survivalPayments="list", - # costCashflows="data.frame", - cashflows="data.frame", - - probabilities="data.frame", +library(R6); +library("lifecontingencies") + + +# base class for Insurance Tarifs (holding contrat-independent values and +# providing methods to calculate cash flows, premiums, etc.). Objects of this +# class do NOT contain contract-specific values like age, death probabilities, +# premiums, reserves, etc. +InsuranceTarif = R6Class( + "InsuranceTarif", + public = list( + name = "Insurance Contract Type", + tarif = "Generic Tarif", + desc = "Description of the contract", + states = c("Lebend", "Tot"), + mortalityTable = NA, + interest=0, + + initialize = function (name=NA, mortalityTable=NA, interest=NA,...) { + if (!missing(name)) self$name = name; + if (!missing(mortalityTable)) self$mortalityTable = mortalityTable; + if (!missing(interest)) self$interest = interest; + cat(paste0("Initializing Insurance Tarif ", self$name, "...\n")) + }, + getTransitionProbabilities = function (age, ..., YOB=2000) { + ages = ages(self$mortalityTable, YOB=YOB); + q = deathProbabilities(self$mortalityTable, YOB=YOB); + if (age>0) { + ages = ages[-age:-1]; + q = q[-age:-1]; + } + p = 1-q; + len = length(p); + df=data.frame(p, q, rep(0,len), rep(1,len), row.names=ages) + df + }, + getCashFlowsState = function (age, ..., policyPeriod=inf, deferral=0, maxAge=150) { + cf = list() + # TODO + }, + getCashFlowsTransition = function (age, ..., policyPeriod=inf, deferral=0, maxAge=150) { + # TODO + } + ) +); + +TestTarif = InsuranceTarif$new(name="Testtarif", mortalityTable=AVOe2005R.male) +str(TestTarif) +TestTarif$getTransitionProbabilities(YOB=1980, age=30) + + +InsuranceContract = R6Class( + "InsuranceContract", + public = list( + tarif = NA, + YOB = NA, + age = NA, + policyPeriod = inf, + deferral = 0, - unterjährigkeit="numeric", - unterjährigkeitsapproximation="numeric", - cache.uj="list" + transitionProbabilities = NA, + cashFlowsState = NA, + cashFlowsTransition = NA, + # cashFlowsState = list(c(0), c(0)), + # cashFlowsTransition = list(matrix(c(0,1,0,1), 2, 2, byrow=TRUE)), + initialize = function (tarif, age, policyPeriod=inf, ..., deferral=0, YOB=1975) { + if (!missing(tarif)) self$tarif = tarif; + if (!missing(age)) self$age = age; + if (!missing(YOB)) self$YOB = YOB; + if (!missing(deferral)) self$deferral = deferral; + if (!missing(policyPeriod)) self$policyPeriod = policyPeriod; + self$determineTransitionProbabilities(); + self$determineCashFlows(); + }, - ), - prototype=list( - name="Insurance Contract Type", - tarif="Tariff", - desc="Description of the contract", - YOB=1977, - # YOB2=1977, - age=35, - # age2=35, - contractLength=Inf, - mortalityTable=AVOe2005R.unisex, - # mortalityTable2=AVOe2005R.unisex, + determineTransitionProbabilities = function() { + self$transitionProbabilities = self$tarif$getTransitionProbabilities(self$age, self$YOB); + }, - interest=0, + determineCashFlows = function() { + self$cashFlowsState = self$tarif$getCashFlowsState(age=self$age, YOB=self$YOB, policyPeriod=self$policyPeriod, deferral=self$deferral, maxAge=self$age+length(self$transitionProbabilities)); + self$cashFlowsTransition = self$tarif$getCashFlowsState(age=self$age, YOB=self$YOB, policyPeriod=self$policyPeriod, deferral=self$deferral, maxAge=self$age+length(self$transitionProbabilities)); + + } - deathPayments=list(), - survivalPayments=list(), - costCashflows=data.frame(), - cashflows=data.frame(), - probabilities=data.frame(), - unterjährigkeit=1, - unterjährigkeitsapproximation=1 + + ) ); +setGeneric("setYOB", function(scale, ...) standardGeneric("setYOB")); +setMethod("setYOB", "InsuranceScale", + function (scale, ..., YOB=1975) { + scale@YOB=YOB; + scale + } +) + +setGeneric("getTransitionProbabilities", function(scale, ...) standardGeneric("getTransitionProbabilities")); +setMethod("getTransitionProbabilities", "InsuranceScale", + function (scale, ...) { + q = deathProbabilities(scale@mortalityTable, scale@YOB); + p = 1-q; + len = length(p); + df=data.frame(p, q, rep(0,len), rep(1,len), row.names=ages(scale@mortalityTable, scale@YOB)) + } +) + + +setGeneric("calculateTransitionProbabilities", function(scale, ...) standardGeneric("calculateTransitionProbabilities")); +setMethod("calculateTransitionProbabilities", "InsuranceScale", + function (scale, ...) { + scale@transitionProbabilities = getTransitionProbabilities(scale, ...); + scale + } +) + +TestTarif = InsuranceScale(name="Testtarif", YOB=1980, age=30) +#TestTarif = setYOB(TestTarif, YOB=1980) + +getTransitionProbabilities(TestTarif) + +t=AVOe2005R.unisex +t@ages +t@deathProbs +qqq +qqq["1",] + +mort=deathProbabilities(AVOe2005R.male, YOB=1977); mort + +mort=deathProbabilities(AVOe2005R.unisex, YOB=1977); mort +q=mort +p=1-mort; p +len=length(p); len +qqq=data.frame(q=t@deathProbs, row.names=t@ages); qqq + +df=data.frame("A-A"=p, "A-t"=q, "t-A"=rep(0, len), "t-t"=rep(1, len), row.names=t@ages) +df + + + # createCostStructure=function(age=35,contractLength=inf, # alphaVS, # alphaBP, diff --git a/R/S4classes.R b/R/S4classes.R index 69ff3b12720942e538a66171a9869f198c6fd1c0..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/R/S4classes.R +++ b/R/S4classes.R @@ -1,188 +0,0 @@ -library("lifecontingencies"); -library(ggplot2); - -# (virtual) base class for valuation tables, contains only the name / ID -valuationTable=setClass( - "valuationTable", - slots=list(name="character", baseYear="numeric"), - prototype=list(name="Actuarial Valuation Table", baseYear=2000), - contains="VIRTUAL" -); - - -# A period life table, giving death probabilities for each age, up to -# maximum age omega. Optionally apply selection factors to the probabilities -valuationTable.period=setClass( - "valuationTable.period", - slots=list(ages="numeric", deathProbs="numeric"), - prototype=list(ages=eval(0:120), deathProbs=rep(1,120)), - contains="valuationTable" -); - -# A cohort life table, obtained by age-shifting from a given base table (PODs -# for a base YOB) -valuationTable.ageShift=setClass( - "valuationTable.ageShift", - slots=list(ageShifts="data.frame"), - prototype=list(ageShifts=data.frame(YOB=c(), shifts=c())), - contains="valuationTable.period" -); - -# A cohort life 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) instead of tau+x) -# If trend2 is given, the G(tau+x) gives the weight of the first trend, 1-G(tau+x) the weight of the second trend -valuationTable.trendProjection=setClass( - "valuationTable.trendProjection", - slots=list(baseYear="numeric", trend="numeric", dampingFunction="function", trend2="numeric"), - prototype=list(baseYear=1980, trend=rep(0,120), dampingFunction=identity, trend2=0), - contains="valuationTable.period" -); - -# A cohort life table, obtained by an improvment factor projection -# from a given base table (PODs for a given observation year). -valuationTable.improvementFactors=setClass( - "valuationTable.improvementFactors", - slots=list(baseYear="numeric", improvement="numeric"), - prototype=list(baseYear=2012, improvement=rep(0,120)), - contains="valuationTable.period" -); - -# A cohort life table described by actual observations (data frame of PODs -# per year and age) -valuationTable.observed=setClass( - "valuationTable.observed", - slots=list(data="data.frame"), - prototype=list(data=data.frame()), - contains="valuationTable" -); - -# 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) -valuationTable.joined=setClass( - "valuationTable.joined", - slots=list( - table1="valuationTable", yearRange1="numeric", - table2="valuationTable", yearRange2="numeric"), - contains="valuationTable" -); -# A cohort life table obtained by mixing two life tables with the given weights -valuationTable.mixed=setClass( - "valuationTable.mixed", - slots=c(table1="valuationTable", table2="valuationTable", weight1="numeric", weight2="numeric"), - prototype=list(weight1=1/2, weight2=1/2), - contains="valuationTable" -); - - - -setGeneric("getOmega", function(object) standardGeneric("getOmega")); -setMethod("getOmega", "valuationTable.period", - function (object) { - max(object@ages,na.rm=TRUE); - }) - -setGeneric("deathProbabilities", function(object, ..., YOB=1975) standardGeneric("deathProbabilities")); -setMethod("deathProbabilities", "valuationTable.period", - function(object, ..., YOB=1975) { - object@deathProbs; - }) -setMethod("deathProbabilities","valuationTable.ageShift", - function (object, ..., YOB=1975) { - qx=object@deathProbs; - shift.index=match(YOB, object@shifts, 0); - if (shift.index) {} -# TODO - qx - }) -setMethod("deathProbabilities","valuationTable.trendProjection", - function (object, ..., YOB=1975) { - qx=object@deathProbs; - if (is.null(object@trend2) || length(object@trend2)<=1) { - ages=0:(length(qx)-1); - damping=sapply(ages, function (age) { object@dampingFunction(YOB+age-object@baseYear) }); -# print(data.frame(age=0:(length(qx)-1), trend=object@trend, exponent=-object@trend*damping, damping=damping, baseqx=qx, qx=exp(-object@trend*damping)*qx)[66:90,]); - exp(-object@trend*damping)*qx; - } else { - # dampingFunction interpolates between the two trends: - weights=sapply(YOB+0:(length(qx)-1), object@dampingFunction); - qx*exp(-(object@trend*(1-weights) + object@trend2*(weights))*(YOB+0:(length(qx)-1)-object@baseYear)) - } - }) -# data.frame(x=0:121, qx=deathProbabilities(AVOe2005R.unisex, YOB=1948)); -setMethod("deathProbabilities","valuationTable.improvementFactors", - function (object, ..., YOB=1975) { - qx=object@deathProbs; - (1-object@improvement)^(YOB+0:(length(qx)-1)-object@baseYear)*qx - }) -setMethod("deathProbabilities","valuationTable.mixed", - function (object, ..., YOB=1975) { - qx1=deathProbabilities(object@table1, ..., YOB); - qx2=deathProbabilities(object@table2, ..., YOB); - (object@weight1*qx1 + object@weight2*qx2)/(object@weight1 + object@weight2) - }) - -setGeneric("lifeTable", function(object, ...) standardGeneric("lifeTable")); -setMethod("lifeTable","valuationTable", - function (object, ...) { - qx=deathProbabilities(object, ...); - if (qx[[length(qx)]]!=1) { qx=c(qx, 1, 1); } - probs2lifetable(qx, type="qx") - }) - - -setGeneric("baseYear", function(object, ...) standardGeneric("baseYear")); -setMethod("baseYear","valuationTable", - function (object, ...) { - object@baseYear - }) -setMethod("baseYear","valuationTable.mixed", - function (object, ...) { - baseYear(object@table1) - }) - -setGeneric("baseTable", function(object, ...) standardGeneric("baseTable")); -setMethod("baseTable","valuationTable", - function (object, ...) { - c() - }) -setMethod("baseTable","valuationTable.period", - function (object, ...) { - object@deathProbs - }) - - -makeQxDataFrame = function(...) { - data=list(...); - names(data) = lapply(data, function(t) t@name); - data = lapply(data, function(t) cbind(x=t@ages, y=t@deathProbs)) - - list.names = names(data) - lns <- sapply(data, nrow) - data <- as.data.frame(do.call("rbind", data)) - data$group <- rep(list.names, lns) - data -} - -plotValuationTables = function(..., title = "") { - data = makeQxDataFrame(...); - - pl = ggplot(data, aes(x = x, y = y, colour = data$group)) + - theme_bw() + - theme( - plot.title = element_text(size=18, face="bold"), - legend.title = element_text(size=14, face="bold.italic") - ) + - geom_line() + - scale_y_log10(#breaks = trans_breaks('log10', function(x) 10^x), - #labels = trans_format('log10', math_format(10^.x)), - #minor_breaks = log(c(sapply(x, function(x) seq(0, x, x/10))), 10) - ) + - xlab("Alter") + ylab("q_x") + labs(colour="Sterbetafel"); - if (title != "") { - pl = pl + ggtitle("Österreichische Volkssterbetafeln Männer seit 1870"); - } - pl -} diff --git a/R/ValuationTables.R b/R/ValuationTables.R index 5dd2ca94d4edf808304d355d36f9ec7fcc681001..3615bb98a720bd3ef8a970ead671fb0b4339d357 100644 --- a/R/ValuationTables.R +++ b/R/ValuationTables.R @@ -1,10 +1,11 @@ library("lifecontingencies"); +library(ggplot2); # (virtual) base class for valuation tables, contains only the name / ID valuationTable=setClass( "valuationTable", - slots=list(name="character"), - prototype=list(name="Actuarial Valuation Table"), + slots=list(name="character", baseYear="numeric"), + prototype=list(name="Actuarial Valuation Table", baseYear=2000), contains="VIRTUAL" ); @@ -67,6 +68,13 @@ valuationTable.joined=setClass( table2="valuationTable", yearRange2="numeric"), contains="valuationTable" ); +# A cohort life table obtained by mixing two life tables with the given weights +valuationTable.mixed=setClass( + "valuationTable.mixed", + slots=c(table1="valuationTable", table2="valuationTable", weight1="numeric", weight2="numeric"), + prototype=list(weight1=1/2, weight2=1/2), + contains="valuationTable" +); @@ -76,6 +84,13 @@ setMethod("getOmega", "valuationTable.period", max(object@ages,na.rm=TRUE); }) +setGeneric("ages", function(object, ...) standardGeneric("ages")); +setMethod("ages", "valuationTable.period", + function (object, ...) { + object@ages; + }) + + setGeneric("deathProbabilities", function(object, ..., YOB=1975) standardGeneric("deathProbabilities")); setMethod("deathProbabilities", "valuationTable.period", function(object, ..., YOB=1975) { @@ -86,27 +101,83 @@ setMethod("deathProbabilities","valuationTable.ageShift", qx=object@deathProbs; shift.index=match(YOB, object@shifts, 0); if (shift.index) {} - # shift= + # TODO qx }) setMethod("deathProbabilities","valuationTable.trendProjection", function (object, ..., YOB=1975) { +cat("deathProbabilities for valuationTable.trendProjection, YOB=", YOB, "\n") qx=object@deathProbs; - if (length(object@trend2)<=1) { - exp(-object@trend*object@dampingFunction(YOB+0:(length(qx)-1)-object@baseYear))*qx - #exp(-object@trend*object@dampingFunction(YOB+0:(length(qx)-1)-object@baseYear)) - #qx + if (is.null(object@trend2) || length(object@trend2)<=1) { + ages=0:(length(qx)-1); + damping=sapply(ages, function (age) { object@dampingFunction(YOB+age-object@baseYear) }); + # print(data.frame(age=0:(length(qx)-1), trend=object@trend, exponent=-object@trend*damping, damping=damping, baseqx=qx, qx=exp(-object@trend*damping)*qx)[66:90,]); + exp(-object@trend*damping)*qx; } else { # dampingFunction interpolates between the two trends: weights=sapply(YOB+0:(length(qx)-1), object@dampingFunction); qx*exp(-(object@trend*(1-weights) + object@trend2*(weights))*(YOB+0:(length(qx)-1)-object@baseYear)) } }) +# data.frame(x=0:121, qx=deathProbabilities(AVOe2005R.unisex, YOB=1948)); setMethod("deathProbabilities","valuationTable.improvementFactors", function (object, ..., YOB=1975) { qx=object@deathProbs; (1-object@improvement)^(YOB+0:(length(qx)-1)-object@baseYear)*qx }) +setMethod("deathProbabilities","valuationTable.mixed", + function (object, ..., YOB=1975) { + qx1=deathProbabilities(object@table1, ..., YOB); + qx2=deathProbabilities(object@table2, ..., YOB); + (object@weight1*qx1 + object@weight2*qx2)/(object@weight1 + object@weight2) + }) + + +setGeneric("periodDeathProbabilities", function(object, ...) standardGeneric("periodDeathProbabilities")); +setMethod("periodDeathProbabilities", "valuationTable.period", + function(object, ...) { + object@deathProbs; + }) +setMethod("periodDeathProbabilities","valuationTable.ageShift", + function (object, ..., Period=1975) { + # TODO + qx=object@deathProbs; + shift.index=match(YOB, object@shifts, 0); + if (shift.index) {} + # TODO + qx + }) +setMethod("periodDeathProbabilities","valuationTable.trendProjection", + function (object, ..., Period=1975) { + qx=object@deathProbs; + if (is.null(object@trend2) || length(object@trend2)<=1) { + ages=0:(length(qx)-1); + damping=object@dampingFunction(Period-object@baseYear); + # print(data.frame(age=0:(length(qx)-1), trend=object@trend, exponent=-object@trend*damping, damping=damping, baseqx=qx, qx=exp(-object@trend*damping)*qx)[66:90,]); + exp(-object@trend*damping)*qx; + } else { + # TODO + # dampingFunction interpolates between the two trends: + weights=sapply(YOB+0:(length(qx)-1), object@dampingFunction); + qx*exp(-(object@trend*(1-weights) + object@trend2*(weights))*(YOB+0:(length(qx)-1)-object@baseYear)) + } + }) +# data.frame(x=0:121, qx=deathProbabilities(AVOe2005R.unisex, YOB=1948)); +setMethod("periodDeathProbabilities","valuationTable.improvementFactors", + function (object, ..., Period=1975) { + qx=object@deathProbs; + (1-object@improvement)^(Period-object@baseYear)*qx + }) +setMethod("periodDeathProbabilities","valuationTable.mixed", + function (object, ..., Period=1975) { + qx1=periodDeathProbabilities(object@table1, ..., Period=Period); + qx2=periodDeathProbabilities(object@table2, ..., Period=Period); + (object@weight1*qx1 + object@weight2*qx2)/(object@weight1 + object@weight2) + }) + + + + setGeneric("lifeTable", function(object, ...) standardGeneric("lifeTable")); setMethod("lifeTable","valuationTable", function (object, ...) { @@ -116,3 +187,107 @@ setMethod("lifeTable","valuationTable", }) +setGeneric("baseYear", function(object, ...) standardGeneric("baseYear")); +setMethod("baseYear","valuationTable", + function (object, ...) { + object@baseYear + }) +setMethod("baseYear","valuationTable.mixed", + function (object, ...) { + baseYear(object@table1) + }) + +setGeneric("baseTable", function(object, ...) standardGeneric("baseTable")); +setMethod("baseTable","valuationTable", + function (object, ...) { + c() + }) +setMethod("baseTable","valuationTable.period", + function (object, ...) { + object@deathProbs + }) + + +setGeneric("getPeriodTable", function(object, Period, ...) standardGeneric("getPeriodTable")); +setMethod("getPeriodTable","valuationTable", + function (object, Period, ...) { + valuationTable.period( + name = paste(object@name, ", Period ", Period), + baseYear = Period, + ages = ages(object), + deathProbs = periodDeathProbabilities(object, Period=Period) + ) + }) + +setGeneric("getCohortTable", function(object, Period, ...) standardGeneric("getCohortTable")); +setMethod("getCohortTable","valuationTable", + function (object, YOB, ...) { + valuationTable.period( + name = paste(object@name, ", YOB ", YOB), + baseYear = YOB, + ages=ages(object), + deathProbs=deathProbabilities(object, YOB=YOB) + ); + }) + + + +makeQxDataFrame = function(..., YOB=1972, Period=NA) { + data=list(...); + names(data) = lapply(data, function(t) t@name); + if (missing(Period)) { + cat("Year of birth: ", YOB, "\n"); + data = lapply(data, function(t) cbind(x=t@ages, y=deathProbabilities(t, YOB=YOB))) + } else { + cat("Period: ", Period,"\n"); + data = lapply(data, function(t) cbind(x=t@ages, y=periodDeathProbabilities(t, Period=Period))) + } + + list.names = names(data) + lns <- sapply(data, nrow) + data <- as.data.frame(do.call("rbind", data)) + data$group <- rep(list.names, lns) + data +} + +plotValuationTables = function(..., title = "", legend.position=c(0.9,0.1), legend.key.width = unit(25, "mm")) { + data = makeQxDataFrame(...); + + pl = ggplot(data, aes(x = x, y = y, colour = data$group)) + + theme_bw() + + theme( + plot.title = element_text(size=18, face="bold"), + legend.title = element_text(size=14, face="bold.italic"), + # legend in bottom right corner of the plot + legend.justification=c(1,0), legend.position=legend.position, + # No box around legend entries + legend.key = element_blank(), + legend.key.width = legend.key.width, + legend.background = element_rect(colour="gray50", linetype="solid") + ) + + geom_line() + + scale_y_log10( + name=expression(paste("Sterbewahrscheinlichkeit ", q[x])), + breaks = scales::trans_breaks('log10', function(x) 10^x), + labels = scales::trans_format('log10', scales::math_format(10^.x)) + #minor_breaks = log(c(sapply(x, function(x) seq(0, x, x/10))), 10) + ) + + scale_x_continuous( + name="Alter", + #breaks = function (limits) scales::trans_breaks('', function(x) 10^x), + breaks = function (limits) seq(max(min(limits),0),max(limits),5), + minor_breaks = function (limits) seq(max(round(min(limits)),0),round(max(limits)),1), + #labels = scales::trans_format('log10', scales::math_format(10^.x)) + + ) + + annotation_logticks(sides="lr") + + xlab("Alter") + labs(colour="Sterbetafel"); + if (title != "") { + pl = pl + ggtitle(title); + } + pl# + coord_flip() +} +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") + +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") diff --git a/R/ValuationTables_Austria_Annuities.R b/R/ValuationTables_Austria_Annuities.R index 3b6f19296b42d29f2959af0e810100811cf94bbd..c4385c7af8351fd3d888ecf593e214a44177f685 100644 --- a/R/ValuationTables_Austria_Annuities.R +++ b/R/ValuationTables_Austria_Annuities.R @@ -218,3 +218,6 @@ AVOe2005R.unisex.group.av=AVOe2005R_gen.av("AVÖ 2005R unisex group (age-shifted ############################################################################### + +t=AVOe2005R.male; +deathProbabilities(t, YOB=2001) diff --git a/R/ValuationTables_Austria_Census.R b/R/ValuationTables_Austria_Census.R index 7096d1a5d26a23bbfc190703014197651afc0a36..31e2a655fe7045ee1eac046a13e0a3f62699ecb8 100644 --- a/R/ValuationTables_Austria_Census.R +++ b/R/ValuationTables_Austria_Census.R @@ -109,3 +109,31 @@ ggplot(mort.AT.census.ALL.maleA, aes(x = x, y = y, colour = mort.AT.census.ALL.m plotValuationTables(mort.AT.census.1869.male, mort.AT.census.1869.female, mort.AT.census.2011.male, mort.AT.census.2011.female, title="Vergleich österreichische Sterbetafeln") + +plotValuationTables( + #mort.AT.census.1869.male, + ##mort.AT.census.1880.male, + #mort.AT.census.1890.male, + #mort.AT.census.1900.male, + #mort.AT.census.1910.male, + #mort.AT.census.1931.male, + #mort.AT.census.1951.male, + #mort.AT.census.1961.male, + #mort.AT.census.1971.male, + #mort.AT.census.1981.male, + #mort.AT.census.1991.male, + #mort.AT.census.2001.male, + #mort.AT.census.2011.male, + mort.AT.census.1869.female, + mort.AT.census.1880.female, + mort.AT.census.1890.female, + mort.AT.census.1900.female, + mort.AT.census.1910.female, + mort.AT.census.1931.female, + mort.AT.census.1951.female, + mort.AT.census.1961.female, + mort.AT.census.1971.female, + mort.AT.census.1981.female, + mort.AT.census.1991.female, + mort.AT.census.2001.female, + mort.AT.census.2011.female, title="Vergleich österreichische Sterbetafeln", legend.position=c(1,0)) \ No newline at end of file diff --git a/R/ValuationTables_Germany_Annuities.R b/R/ValuationTables_Germany_Annuities.R index 13c2cf014002a3efd87415596b79935d75cf91b0..d5f94d8edf4b5f732b6e10e6a2ad33b3a45ba031 100644 --- a/R/ValuationTables_Germany_Annuities.R +++ b/R/ValuationTables_Germany_Annuities.R @@ -86,6 +86,6 @@ DAV2004R.male=valuationTable.trendProjection( DAV2004R.female=valuationTable.trendProjection( name="DAV 2004R female", ages=DAV2004R.exakt.data$age, baseYear=2000, - deathProbs=DAV2004R.exakt.data$qy2000, + deathProbs=DAV2004R.exakt.data $qy2000, trend=DAV2004R.exakt.data$trendF ); diff --git a/ValuationTables.RData b/ValuationTables.RData new file mode 100644 index 0000000000000000000000000000000000000000..d31a25b2ec1d0efcb239727afb25ffa43101ca2b Binary files /dev/null and b/ValuationTables.RData differ