Skip to content
Snippets Groups Projects
Commit ab7900b6 authored by Reinhold Kainhofer's avatar Reinhold Kainhofer
Browse files

Some further improvments

parent 647cde39
Branches
Tags
No related merge requests found
Package: ValuationTables Package: ValuationTables
Type: Package Type: Package
Title: What the package does (short line) Title: A framework for cohort life tables and general life insurance contracts
Version: 1.0 Version: 1.0
Date: 2013-05-03 Date: 2016-04-01
Author: Who wrote it Author: Reinhold Kainhofer <reinhold@kainhofer.com>
Maintainer: Who to complain to <yourfault@somewhere.net> Maintainer: Reinhold Kainhofer <reinhold@kainhofer.com>
Description: More about what it does (maybe more than one line) Description: Yet to be written
License: What license is it under? License: Not yet finally decided, probably GPL v3+ or LGPL or something similar
library("lifecontingencies");
# (virtual) base class for valuation tables, contains only the name / ID
InsuranceContract=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",
unterjährigkeit="numeric",
unterjährigkeitsapproximation="numeric",
cache.uj="list"
),
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,
interest=0,
deathPayments=list(),
survivalPayments=list(),
costCashflows=data.frame(),
cashflows=data.frame(),
probabilities=data.frame(),
unterjährigkeit=1,
unterjährigkeitsapproximation=1
)
);
# createCostStructure=function(age=35,contractLength=inf,
# alphaVS,
# alphaBP,
#
#
# CostStructure=setClass(
# "CostStructure",
#
# )
calcUnterjährigkeit = function(m=1,i=0, order=0) {
alpha=1;
beta=(m-1)/(2*m);
if (order>=1) { beta = beta + (m^2-1)/(6*m^2)*i; }
if (order == 1.5) { beta = beta + (1-m^2)/(12*m^2)*i^2; }
if (order >= 2) { beta = beta + (1-m^2)/(24*m^2)*i^2;
alpha= alpha+ (m^2-1)/(12*m^2)*i^2; }
list(alpha=alpha, beta=beta);
}
setGeneric("createContractCashflows", function(object) standardGeneric("createContractCashflows"))
setGeneric("calculate", function(object) standardGeneric("calculate"));
setMethod("calculate", "InsuranceContract",
function (object) {
# 0) Prepare helper values
# 0a: Unterjährigkeit
m = object@unterjährigkeit;
object@cache.uj=calcUnterjährigkeit(m=m, i=object@interest, order=object@unterjährigkeitsapproximation);
# 1) Generate mortality table
if (!is.null(object@contractLength) && is.finite(object@contractLength)) {
ages = (object@age):(object@contractLength);
} else {
ages = (object@age):150;
}
qx = deathProbabilities(object@mortalityTable, YOB=object@YOB)[ages+1];
pxn = cumprod(1-qx);
object@probabilities = data.frame(ages=ages,qx=qx, pxn=pxn)
if (!is.null(object@YOB2)) {
ages2 = ages - object@age + object@age2;
qx2 = deathProbabilities(object@mortalityTable2, YOB=object@YOB2)[ages2+1];
pxn2 = cumprod(1-qx2);
pxyn = pxn * pxn2;
object@probabilities = data.frame(object@probabilities, ages2=ages2, q2=qx2, pxn2=pxn2, pxyn=pxyn);
}
# 2) Properly set up the payment and cost cash flow data frames
# 3) Calculate all NPVs of the payment and the cost cash flows (recursively)
# 3a: life-long annuities for person 2 (and person 1+2), in case the death benefit is a life-long widow's annuity
# 4) Set up the coefficients of the NPVs for the premium calculation
# 5) Calculate the gross premium
# 6) Calculate the net premium and the Zillmer premium
# 7) Calculate all reserves (benefits and costs)
# 8) Calculate Spar- und Risikoprämie from the net premium and the reserves
# 9) Calculate VS after Prämienfreistellung
# 9a: Calculate all reserves after Prämienfreistellung
# 10) Calculate the Bilanz reserves
# 11) Calculate the Rückkaufswert
# max(object@ages,na.rm=TRUE);
object
})
beispielvertrag = InsuranceContract(
name="Beispielvertrag", tarif="Beispieltarif",
desc="Beispiel zum Testen des Codes",
YOB=1948, YOB2=1948+65-62,
age=65, age2=62,
# contractLength=30,
mortalityTable=AVOe2005R.unisex, mortalityTable2=AVOe2005R.unisex,
interest=0.0125,
unterjährigkeit=12, unterjährigkeitsapproximation=1.5,
# deathPayments=list(),
# survivalPayments=list(),
# costCashflows=data.frame(),
# cashflows=data.frame()
);
beispielvertrag=calculate(beispielvertrag)
beispielvertrag
# data.frame(x=0:121, qx=deathProbabilities(AVOe2005R.unisex, YOB=1948))
\ No newline at end of file
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",
unterjährigkeit="numeric",
unterjährigkeitsapproximation="numeric",
cache.uj="list"
),
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,
interest=0,
deathPayments=list(),
survivalPayments=list(),
costCashflows=data.frame(),
cashflows=data.frame(),
probabilities=data.frame(),
unterjährigkeit=1,
unterjährigkeitsapproximation=1
)
);
# createCostStructure=function(age=35,contractLength=inf,
# alphaVS,
# alphaBP,
#
#
# CostStructure=setClass(
# "CostStructure",
#
# )
calcUnterjährigkeit = function(m=1,i=0, order=0) {
alpha=1;
beta=(m-1)/(2*m);
if (order>=1) { beta = beta + (m^2-1)/(6*m^2)*i; }
if (order == 1.5) { beta = beta + (1-m^2)/(12*m^2)*i^2; }
if (order >= 2) { beta = beta + (1-m^2)/(24*m^2)*i^2;
alpha= alpha+ (m^2-1)/(12*m^2)*i^2; }
list(alpha=alpha, beta=beta);
}
setGeneric("createContractCashflows", function(object) standardGeneric("createContractCashflows"))
setGeneric("calculate", function(object) standardGeneric("calculate"));
setMethod("calculate", "InsuranceContract",
function (object) {
# 0) Prepare helper values
# 0a: Unterjährigkeit
m = object@unterjährigkeit;
object@cache.uj=calcUnterjährigkeit(m=m, i=object@interest, order=object@unterjährigkeitsapproximation);
# 1) Generate mortality table
if (!is.null(object@contractLength) && is.finite(object@contractLength)) {
ages = (object@age):(object@contractLength);
} else {
ages = (object@age):150;
}
qx = deathProbabilities(object@mortalityTable, YOB=object@YOB)[ages+1];
pxn = cumprod(1-qx);
object@probabilities = data.frame(ages=ages,qx=qx, pxn=pxn)
if (!is.null(object@YOB2)) {
ages2 = ages - object@age + object@age2;
qx2 = deathProbabilities(object@mortalityTable2, YOB=object@YOB2)[ages2+1];
pxn2 = cumprod(1-qx2);
pxyn = pxn * pxn2;
object@probabilities = data.frame(object@probabilities, ages2=ages2, q2=qx2, pxn2=pxn2, pxyn=pxyn);
}
# 2) Properly set up the payment and cost cash flow data frames
# 3) Calculate all NPVs of the payment and the cost cash flows (recursively)
# 3a: life-long annuities for person 2 (and person 1+2), in case the death benefit is a life-long widow's annuity
# 4) Set up the coefficients of the NPVs for the premium calculation
# 5) Calculate the gross premium
# 6) Calculate the net premium and the Zillmer premium
# 7) Calculate all reserves (benefits and costs)
# 8) Calculate Spar- und Risikoprämie from the net premium and the reserves
# 9) Calculate VS after Prämienfreistellung
# 9a: Calculate all reserves after Prämienfreistellung
# 10) Calculate the Bilanz reserves
# 11) Calculate the Rückkaufswert
# max(object@ages,na.rm=TRUE);
object
})
beispielvertrag = InsuranceContract(
name="Beispielvertrag", tarif="Beispieltarif",
desc="Beispiel zum Testen des Codes",
YOB=1948, YOB2=1948+65-62,
age=65, age2=62,
# contractLength=30,
mortalityTable=AVOe2005R.unisex, mortalityTable2=AVOe2005R.unisex,
interest=0.0125,
unterjährigkeit=12, unterjährigkeitsapproximation=1.5,
# deathPayments=list(),
# survivalPayments=list(),
# costCashflows=data.frame(),
# cashflows=data.frame()
);
beispielvertrag=calculate(beispielvertrag)
beispielvertrag
# data.frame(x=0:121, qx=deathProbabilities(AVOe2005R.unisex, YOB=1948))
\ No newline at end of file
library("lifecontingencies"); library("lifecontingencies");
library(ggplot2);
# (virtual) base class for valuation tables, contains only the name / ID # (virtual) base class for valuation tables, contains only the name / ID
valuationTable=setClass( valuationTable=setClass(
"valuationTable", "valuationTable",
slots=list(name="character"), slots=list(name="character", baseYear="numeric"),
prototype=list(name="Actuarial Valuation Table"), prototype=list(name="Actuarial Valuation Table", baseYear=2000),
contains="VIRTUAL" contains="VIRTUAL"
); );
...@@ -67,6 +68,13 @@ valuationTable.joined=setClass( ...@@ -67,6 +68,13 @@ valuationTable.joined=setClass(
table2="valuationTable", yearRange2="numeric"), table2="valuationTable", yearRange2="numeric"),
contains="valuationTable" 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"
);
...@@ -84,30 +92,38 @@ setMethod("deathProbabilities", "valuationTable.period", ...@@ -84,30 +92,38 @@ setMethod("deathProbabilities", "valuationTable.period",
setMethod("deathProbabilities","valuationTable.ageShift", setMethod("deathProbabilities","valuationTable.ageShift",
function (object, ..., YOB=1975) { function (object, ..., YOB=1975) {
qx=object@deathProbs; qx=object@deathProbs;
shift.index=match(YOB, object@shifts, YOB); shift.index=match(YOB, object@shifts, 0);
if (shift.index) {} if (shift.index) {}
# shift= # TODO
qx qx
}) })
setMethod("deathProbabilities","valuationTable.trendProjection", setMethod("deathProbabilities","valuationTable.trendProjection",
function (object, ..., YOB=1975) { function (object, ..., YOB=1975) {
qx=object@deathProbs; qx=object@deathProbs;
if (length(object@trend2)<=1) { if (is.null(object@trend2) || length(object@trend2)<=1) {
#print("length(object@trend2)==0"); ages=0:(length(qx)-1);
exp(-object@trend*object@dampingFunction(YOB+0:(length(qx)-1)-object@baseYear))*qx 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 { } else {
#print("length(object@trend2)!=0");
#print(length(object@trend2));
# dampingFunction interpolates between the two trends: # dampingFunction interpolates between the two trends:
weights=sapply(YOB+0:(length(qx)-1), object@dampingFunction); 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)) 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", setMethod("deathProbabilities","valuationTable.improvementFactors",
function (object, ..., YOB=1975) { function (object, ..., YOB=1975) {
qx=object@deathProbs; qx=object@deathProbs;
(1-object@improvement)^(YOB+0:(length(qx)-1)-object@baseYear)*qx (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")); setGeneric("lifeTable", function(object, ...) standardGeneric("lifeTable"));
setMethod("lifeTable","valuationTable", setMethod("lifeTable","valuationTable",
function (object, ...) { function (object, ...) {
...@@ -117,3 +133,56 @@ setMethod("lifeTable","valuationTable", ...@@ -117,3 +133,56 @@ 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
})
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
}
File added
File added
File moved
File moved
File moved
File moved
No preview for this file type
library("lifecontingencies");
# (virtual) base class for valuation tables, contains only the name / ID
valuationTable=setClass(
"valuationTable",
slots=list(name="character"),
prototype=list(name="Actuarial Valuation Table"),
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"
);
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) {}
# shift=
qx
})
setMethod("deathProbabilities","valuationTable.trendProjection",
function (object, ..., YOB=1975) {
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
} 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))
}
})
setMethod("deathProbabilities","valuationTable.improvementFactors",
function (object, ..., YOB=1975) {
qx=object@deathProbs;
(1-object@improvement)^(YOB+0:(length(qx)-1)-object@baseYear)*qx
})
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")
})
frame_files = lapply(sys.frames(), function(x) x$ofile) # frame_files = lapply(sys.frames(), function(x) x$ofile)
frame_files = Filter(Negate(is.null), frame_files) # frame_files = Filter(Negate(is.null), frame_files)
PATH <- dirname(frame_files[[length(frame_files)]]) # PATH <- dirname(frame_files[[length(frame_files)]])
rm(frame_files) # rm(frame_files)
setwd(dirname(PATH)) # setwd(dirname(PATH))
library("gdata") library("gdata")
...@@ -30,7 +30,7 @@ rr67=valuationTable.period( ...@@ -30,7 +30,7 @@ rr67=valuationTable.period(
eromf.data=read.xls( eromf.data=read.xls(
"Tafeln/AVOe_R.xls", "Tafeln/AVOe_R.xls",
sheet="EROM-F Basistafeln", skip=2, #row.names=1, sheet="EROM-F Basistafeln", skip=2, #row.names=1,
col.names=c("age", "EROM85", "EROF85", "EROMG1950", "EROFG1950") col.names=c("age", "EROM85", "EROF85", "EROMG1950", "EROFG1950","","","")
); );
...@@ -44,12 +44,14 @@ erom85.female=valuationTable.period( ...@@ -44,12 +44,14 @@ erom85.female=valuationTable.period(
EROM.G1950.male=valuationTable.period( EROM.G1950.male=valuationTable.period(
name="EROM G 1950 Basistafel, male", name="EROM G 1950 Basistafel, male",
ages=eromf.data$age, ages=eromf.data$age,
deathProbs=eromf.data$EROMG1950 deathProbs=eromf.data$EROMG1950,
baseYear=1950
); );
EROF.G1950.female=valuationTable.period( EROF.G1950.female=valuationTable.period(
name="EROF G 1950 Basistafel, female", name="EROF G 1950 Basistafel, female",
ages=eromf.data$age, ages=eromf.data$age,
deathProbs=eromf.data$EROFG1950 deathProbs=eromf.data$EROFG1950,
baseYear=1950
); );
eromf.data.av=read.xls( eromf.data.av=read.xls(
...@@ -62,13 +64,15 @@ EROM.G1950.male.av=valuationTable.ageShift( ...@@ -62,13 +64,15 @@ EROM.G1950.male.av=valuationTable.ageShift(
name="EROM G 1950 mit Altersverschiebung, male", name="EROM G 1950 mit Altersverschiebung, male",
ages=eromf.data$age, ages=eromf.data$age,
deathProbs=eromf.data$EROMG1950, deathProbs=eromf.data$EROMG1950,
ageShifts=eromf.data.av[1] ageShifts=eromf.data.av[1],
baseYear=1950
); );
EROF.G1950.female.av=valuationTable.ageShift( EROF.G1950.female.av=valuationTable.ageShift(
name="EROF G 1950 mit Altersverschiebung, female", name="EROF G 1950 mit Altersverschiebung, female",
ages=eromf.data$age, ages=eromf.data$age,
deathProbs=eromf.data$EROFG1950, deathProbs=eromf.data$EROFG1950,
ageShifts=eromf.data.av[2] ageShifts=eromf.data.av[2],
baseYear=1950
); );
...@@ -76,16 +80,16 @@ EROF.G1950.female.av=valuationTable.ageShift( ...@@ -76,16 +80,16 @@ EROF.G1950.female.av=valuationTable.ageShift(
# AVÖ 1996R exact (Male, Female), 1st-order only # AVÖ 1996R exact (Male, Female), 1st-order only
############################################################################### ###############################################################################
avoe1996r.exakt.data=read.xls( AVOe1996R.exakt.data=read.xls(
"Tafeln/AVOe_R.xls", "Tafeln/AVOe_R.xls",
sheet="AVOe 1996R exakt", skip=2, #row.names=1, sheet="AVOe 1996R exakt", skip=2, #row.names=1,
col.names=c("age", col.names=c("age",
"q1991M", "trendM.long", "trendM.short", "factorMG", "factorM", "q1991M", "trendM.long", "trendM.short", "factorMG", "factorM",
"", "",
"q1991F", "trendF.long", "trendF.short", "factorFG", "factorF", "q1991F", "trendF.long", "trendF.short", "factorFG", "factorF",
rep("",12)) rep("",16))
); );
avoe1996r.trend.switching=function(year) { AVOe1996R.trend.switching=function(year) {
if (year<=1971) { if (year<=1971) {
15/(1991-year) 15/(1991-year)
} else if (1971<year && year<1981) { } else if (1971<year && year<1981) {
...@@ -101,35 +105,35 @@ avoe1996r.trend.switching=function(year) { ...@@ -101,35 +105,35 @@ avoe1996r.trend.switching=function(year) {
AVÖ1996R.male=valuationTable.trendProjection( AVÖ1996R.male=valuationTable.trendProjection(
name="AVÖ 1996R male", name="AVÖ 1996R male",
ages=avoe1996r.exakt.data$age, baseYear=1991, ages=AVOe1996R.exakt.data$age, baseYear=1991,
deathProbs=avoe1996r.exakt.data$q1991M*avoe1996r.exakt.data$factorM, deathProbs=AVOe1996R.exakt.data$q1991M*AVOe1996R.exakt.data$factorM,
trend=avoe1996r.exakt.data$trendM.long, trend=AVOe1996R.exakt.data$trendM.long,
trend2=avoe1996r.exakt.data$trendM.short, trend2=AVOe1996R.exakt.data$trendM.short,
dampingFunction=avoe1996r.trend.switching dampingFunction=AVOe1996R.trend.switching
); );
AVÖ1996R.female=valuationTable.trendProjection( AVÖ1996R.female=valuationTable.trendProjection(
name="AVÖ 1996R female", name="AVÖ 1996R female",
ages=avoe1996r.exakt.data$age, baseYear=1991, ages=AVOe1996R.exakt.data$age, baseYear=1991,
deathProbs=avoe1996r.exakt.data$q1991F*avoe1996r.exakt.data$factorF, deathProbs=AVOe1996R.exakt.data$q1991F*AVOe1996R.exakt.data$factorF,
trend=avoe1996r.exakt.data$trendF.long, trend=AVOe1996R.exakt.data$trendF.long,
trend2=avoe1996r.exakt.data$trendF.short, trend2=AVOe1996R.exakt.data$trendF.short,
dampingFunction=avoe1996r.trend.switching dampingFunction=AVOe1996R.trend.switching
); );
AVÖ1996R.male.group=valuationTable.trendProjection( AVÖ1996R.male.group=valuationTable.trendProjection(
name="AVÖ 1996R male, group", name="AVÖ 1996R male, group",
ages=avoe1996r.exakt.data$age, baseYear=1991, ages=AVOe1996R.exakt.data$age, baseYear=1991,
deathProbs=avoe1996r.exakt.data$q1991M*avoe1996r.exakt.data$factorMG, deathProbs=AVOe1996R.exakt.data$q1991M*AVOe1996R.exakt.data$factorMG,
trend=avoe1996r.exakt.data$trendM.long, trend=AVOe1996R.exakt.data$trendM.long,
trend2=avoe1996r.exakt.data$trendM.short, trend2=AVOe1996R.exakt.data$trendM.short,
dampingFunction=avoe1996r.trend.switching dampingFunction=AVOe1996R.trend.switching
); );
AVÖ1996R.female.group=valuationTable.trendProjection( AVÖ1996R.female.group=valuationTable.trendProjection(
name="AVÖ 1996R female, group", name="AVÖ 1996R female, group",
ages=avoe1996r.exakt.data$age, baseYear=1991, ages=AVOe1996R.exakt.data$age, baseYear=1991,
deathProbs=avoe1996r.exakt.data$q1991F*avoe1996r.exakt.data$factorFG, deathProbs=AVOe1996R.exakt.data$q1991F*AVOe1996R.exakt.data$factorFG,
trend=avoe1996r.exakt.data$trendF.long, trend=AVOe1996R.exakt.data$trendF.long,
trend2=avoe1996r.exakt.data$trendF.short, trend2=AVOe1996R.exakt.data$trendF.short,
dampingFunction=avoe1996r.trend.switching dampingFunction=AVOe1996R.trend.switching
); );
...@@ -139,9 +143,9 @@ AVÖ1996R.female.group=valuationTable.trendProjection( ...@@ -139,9 +143,9 @@ AVÖ1996R.female.group=valuationTable.trendProjection(
# gender-specific tables also have 2nd-order tables, unisex only 1st-order table # gender-specific tables also have 2nd-order tables, unisex only 1st-order table
############################################################################### ###############################################################################
avoe2005r.exakt.data=read.xls( AVOe2005R.exakt.data=read.xls(
"Tafeln/AVOe_R.xls", "Tafeln/AVOe_R.xls",
sheet="AVOe 2005R", skip=1, #row.names=1, sheet="AVOe 2005R", skip=3, #row.names=1,
header=FALSE, header=FALSE,
col.names=c("age", col.names=c("age",
"q2001M","q2001MG", "trendM", "q2001M","q2001MG", "trendM",
...@@ -150,65 +154,66 @@ avoe2005r.exakt.data=read.xls( ...@@ -150,65 +154,66 @@ avoe2005r.exakt.data=read.xls(
"q2001M.2Ord", "2001MG.2Ord", "trendM.2Ord", "q2001M.2Ord", "2001MG.2Ord", "trendM.2Ord",
"q2001F.2Ord", "q2001FG.2Ord", "trendF.2Ord", "q2001F.2Ord", "q2001FG.2Ord", "trendF.2Ord",
"", "",
"q2001U", "q2001UG", "trendU") "q2001U", "q2001UG", "trendU",
rep("", 10))
); );
avoe2005r.trend.damping=function(t) { AVOe2005R.trend.damping=function(t) {
100*atan(t/100) 100*atan(t/100)
} }
avoe2005r_gen=function(nm, probs, trend) { AVOe2005R_gen=function(nm, probs, trend) {
with( with(
avoe2005r.exakt.data, AVOe2005R.exakt.data,
valuationTable.trendProjection( valuationTable.trendProjection(
name=nm, name=nm,
ages=age, baseYear=2001, ages=age, baseYear=2001,
deathProbs=avoe2005r.exakt.data[[probs]], trend=avoe2005r.exakt.data[[trend]], deathProbs=AVOe2005R.exakt.data[[probs]], trend=AVOe2005R.exakt.data[[trend]],
dampingFunction=avoe2005r.trend.damping dampingFunction=AVOe2005R.trend.damping
) )
) )
} }
avoe2005r.male =avoe2005r_gen("AVÖ 2005R male (exact), loaded", "q2001M", "trendM"); AVOe2005R.male =AVOe2005R_gen("AVÖ 2005R male (exact), loaded", "q2001M", "trendM");
avoe2005r.female=avoe2005r_gen("AVÖ 2005R female (exact), loaded", "q2001F", "trendF"); AVOe2005R.female=AVOe2005R_gen("AVÖ 2005R female (exact), loaded", "q2001F", "trendF");
avoe2005r.unisex=avoe2005r_gen("AVÖ 2005R unisex (exact), loaded", "q2001U", "trendU"); AVOe2005R.unisex=AVOe2005R_gen("AVÖ 2005R unisex (exact), loaded", "q2001U", "trendU");
avoe2005r.male.unloaded =avoe2005r_gen("AVÖ 2005R male (exact), unloaded", "q2001M.2Ord", "trendM.2Ord"); AVOe2005R.male.unloaded =AVOe2005R_gen("AVÖ 2005R male (exact), unloaded", "q2001M.2Ord", "trendM.2Ord");
avoe2005r.female.unloaded=avoe2005r_gen("AVÖ 2005R female (exact), unloaded", "q2001F.2Ord", "trendF.2Ord"); AVOe2005R.female.unloaded=AVOe2005R_gen("AVÖ 2005R female (exact), unloaded", "q2001F.2Ord", "trendF.2Ord");
avoe2005r.male.group =avoe2005r_gen("AVÖ 2005R male group (exact), loaded", "q2001MG", "trendM"); AVOe2005R.male.group =AVOe2005R_gen("AVÖ 2005R male group (exact), loaded", "q2001MG", "trendM");
avoe2005r.female.group=avoe2005r_gen("AVÖ 2005R female group (exact), loaded", "q2001FG", "trendF"); AVOe2005R.female.group=AVOe2005R_gen("AVÖ 2005R female group (exact), loaded", "q2001FG", "trendF");
avoe2005r.unisex.group=avoe2005r_gen("AVÖ 2005R unisex group (exact), loaded", "q2001UG", "trendU"); AVOe2005R.unisex.group=AVOe2005R_gen("AVÖ 2005R unisex group (exact), loaded", "q2001UG", "trendU");
############################################################################### ###############################################################################
#AVÖ 2005R with age-shifting (Male, Female, unisex), 1st-order only #AVÖ 2005R with age-shifting (Male, Female, unisex), 1st-order only
############################################################################### ###############################################################################
avoe2005r.av.base=read.xls( AVOe2005R.av.base=read.xls(
"Tafeln/AVOe_R.xls", "Tafeln/AVOe_R.xls",
sheet="AVOe 2005R AV Basistafel", skip=1, # row.names=1, sheet="AVOe 2005R AV Basistafel", skip=1, # row.names=1,
col.names=c("age", "q1965M", "q1965MG", "q1965F", "q1965FG", "q1972U", "q1972UG") col.names=c("age", "q1965M", "q1965MG", "q1965F", "q1965FG", "q1972U", "q1972UG")
); );
avoe2005r.av.verschiebung=read.xls( AVOe2005R.av.verschiebung=read.xls(
"Tafeln/AVOe_R.xls", "Tafeln/AVOe_R.xls",
sheet="AVOe 2005R AV Verschiebung",skip=2,row.names=1, sheet="AVOe 2005R AV Verschiebung",skip=2,row.names=1,
col.names=c("YOB", "shiftM", "shiftMG", "shiftF", "shiftFG", "shiftU", "shiftUG") col.names=c("YOB", "shiftM", "shiftMG", "shiftF", "shiftFG", "shiftU", "shiftUG")
) )
avoe2005r_gen.av=function(nm, probs, shft) { AVOe2005R_gen.av=function(nm, probs, shft) {
valuationTable.ageShift( valuationTable.ageShift(
name=nm, name=nm,
ages=avoe2005r.av.base$age, ages=AVOe2005R.av.base$age,
deathProbs=avoe2005r.av.base[[probs]], deathProbs=AVOe2005R.av.base[[probs]],
ageShifts=na.omit(avoe2005r.av.verschiebung[shft]) ageShifts=na.omit(AVOe2005R.av.verschiebung[shft])
) )
} }
avoe2005r.male.av =avoe2005r_gen.av("AVÖ 2005R male (age-shifted), loaded", "q1965M", "shiftM"); AVOe2005R.male.av =AVOe2005R_gen.av("AVÖ 2005R male (age-shifted), loaded", "q1965M", "shiftM");
avoe2005r.female.av=avoe2005r_gen.av("AVÖ 2005R female (age-shifted), loaded", "q1965F", "shiftF"); AVOe2005R.female.av=AVOe2005R_gen.av("AVÖ 2005R female (age-shifted), loaded", "q1965F", "shiftF");
avoe2005r.unisex.av=avoe2005r_gen.av("AVÖ 2005R unisex (age-shifted), loaded", "q1972U", "shiftU"); AVOe2005R.unisex.av=AVOe2005R_gen.av("AVÖ 2005R unisex (age-shifted), loaded", "q1972U", "shiftU");
avoe2005r.male.group.av =avoe2005r_gen.av("AVÖ 2005R male group (age-shifted), loaded", "q1965MG", "shiftMG"); AVOe2005R.male.group.av =AVOe2005R_gen.av("AVÖ 2005R male group (age-shifted), loaded", "q1965MG", "shiftMG");
avoe2005r.female.group.av=avoe2005r_gen.av("AVÖ 2005R female group (age-shifted), loaded", "q1965FG", "shiftFG"); AVOe2005R.female.group.av=AVOe2005R_gen.av("AVÖ 2005R female group (age-shifted), loaded", "q1965FG", "shiftFG");
avoe2005r.unisex.group.av=avoe2005r_gen.av("AVÖ 2005R unisex group (age-shifted), loaded", "q1972UG", "shiftUG"); AVOe2005R.unisex.group.av=AVOe2005R_gen.av("AVÖ 2005R unisex group (age-shifted), loaded", "q1972UG", "shiftUG");
......
# frame_files = lapply(sys.frames(), function(x) x$ofile)
# frame_files = Filter(Negate(is.null), frame_files)
# PATH <- dirname(frame_files[[length(frame_files)]])
# rm(frame_files)
# setwd(dirname(PATH))
library("gdata")
###############################################################################
### Volkszählungen Österreich
###############################################################################
a.vz.dataM=read.xls(
"Tafeln/A_Volkszaehlungen.xls",
sheet="Austria_M",
skip=2,
header=TRUE
)
a.vz.dataF=read.xls(
"Tafeln/A_Volkszaehlungen.xls",
sheet="Austria_F",
skip=2,
header=TRUE
)
censtable = function(data, name, qslot, baseYear=1900) {
qx=data[names(data)==qslot];
ix=complete.cases(qx);
valuationTable.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");
mort.AT.census.1880.male = censtable(a.vz.dataM, name="ÖVSt 1879/82 M", baseYear=1880, qslot="X1879.82");
mort.AT.census.1890.male = censtable(a.vz.dataM, name="ÖVSt 1889/92 M", baseYear=1890, qslot="X1889.92");
mort.AT.census.1900.male = censtable(a.vz.dataM, name="ÖVSt 1899/1902 M", baseYear=1900, qslot="X1899.1902");
mort.AT.census.1910.male = censtable(a.vz.dataM, name="ÖVSt 1909/12 M", baseYear=1910, qslot="X1909.12");
mort.AT.census.1931.male = censtable(a.vz.dataM, name="ÖVSt 1930/33 M", baseYear=1931, qslot="X1930.33");
mort.AT.census.1951.male = censtable(a.vz.dataM, name="ÖVSt 1949/51 M", baseYear=1951, qslot="X1949.51");
mort.AT.census.1961.male = censtable(a.vz.dataM, name="ÖVSt 1959/61 M", baseYear=1961, qslot="X1959.61");
mort.AT.census.1971.male = censtable(a.vz.dataM, name="ÖVSt 1970/72 M", baseYear=1971, qslot="X1970.72");
mort.AT.census.1981.male = censtable(a.vz.dataM, name="ÖVSt 1980/82 M", baseYear=1981, qslot="X1980.82");
mort.AT.census.1991.male = censtable(a.vz.dataM, name="ÖVSt 1990/92 M", baseYear=1991, qslot="X1990.92");
mort.AT.census.2001.male = censtable(a.vz.dataM, name="ÖVSt 2000/02 M", baseYear=2001, qslot="X2000.02");
mort.AT.census.2011.male = censtable(a.vz.dataM, name="ÖVSt 2010/2012 M", baseYear=2011, qslot="X2010.12");
mort.AT.census.1869.female = censtable(a.vz.dataF, name="ÖVSt 1868/71 F", baseYear=1869, qslot="X1868.71");
mort.AT.census.1880.female = censtable(a.vz.dataF, name="ÖVSt 1879/82 F", baseYear=1880, qslot="X1879.82");
mort.AT.census.1890.female = censtable(a.vz.dataF, name="ÖVSt 1889/92 F", baseYear=1890, qslot="X1889.92");
mort.AT.census.1900.female = censtable(a.vz.dataF, name="ÖVSt 1899/1902 F", baseYear=1900, qslot="X1899.1902");
mort.AT.census.1910.female = censtable(a.vz.dataF, name="ÖVSt 1909/12 F", baseYear=1910, qslot="X1909.12");
mort.AT.census.1931.female = censtable(a.vz.dataF, name="ÖVSt 1930/33 F", baseYear=1931, qslot="X1930.33");
mort.AT.census.1951.female = censtable(a.vz.dataF, name="ÖVSt 1949/51 F", baseYear=1951, qslot="X1949.51");
mort.AT.census.1961.female = censtable(a.vz.dataF, name="ÖVSt 1959/61 F", baseYear=1961, qslot="X1959.61");
mort.AT.census.1971.female = censtable(a.vz.dataF, name="ÖVSt 1970/72 F", baseYear=1971, qslot="X1970.72");
mort.AT.census.1981.female = censtable(a.vz.dataF, name="ÖVSt 1980/82 F", baseYear=1981, qslot="X1980.82");
mort.AT.census.1991.female = censtable(a.vz.dataF, name="ÖVSt 1990/92 F", baseYear=1991, qslot="X1990.92");
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.m, table2=mort.AT.census.2001.f)
mort.AT.census.ALL.maleA= makeQxDataFrame(
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.ALL.female=makeQxDataFrame(
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);
rm(a.vz.dataM, a.vz.dataF, censtable)
###############################################################################
ggplot(mort.AT.census.ALL.maleA, aes(x = x, y = y, colour = mort.AT.census.ALL.maleA$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)
) +
ggtitle("Österreichische Volkssterbetafeln Männer seit 1870") + xlab("Alter") + ylab("q_x") + labs(colour="Sterbetafel")
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")
...@@ -19,26 +19,26 @@ dav1994T.data=read.xls( ...@@ -19,26 +19,26 @@ dav1994T.data=read.xls(
"qy2", "qyKI", "qy" "qy2", "qyKI", "qy"
)); ));
dav1994t.male=valuationTable.period( DAV1994T.male=valuationTable.period(
name="DAV 1994T male, loaded", name="DAV 1994T male, loaded",
ages=dav1994T.data$age, deathProbs=dav1994T.data$qx) ages=dav1994T.data$age, deathProbs=dav1994T.data$qx)
dav1994t.male.2Ord=valuationTable.period( DAV1994T.male.2Ord=valuationTable.period(
name="DAV 1994T male, unloaded", name="DAV 1994T male, unloaded",
ages=dav1994T.data$age, deathProbs=dav1994T.data$qx2) ages=dav1994T.data$age, deathProbs=dav1994T.data$qx2)
dav1994t.female=valuationTable.period( DAV1994T.female=valuationTable.period(
name="DAV 1994T female, loaded", name="DAV 1994T female, loaded",
ages=dav1994T.data$age, deathProbs=dav1994T.data$qy) ages=dav1994T.data$age, deathProbs=dav1994T.data$qy)
dav1994t.female.2Ord=valuationTable.period( DAV1994T.female.2Ord=valuationTable.period(
name="DAV 1994T female, unloaded", name="DAV 1994T female, unloaded",
ages=dav1994T.data$age, deathProbs=dav1994T.data$qy2) ages=dav1994T.data$age, deathProbs=dav1994T.data$qy2)
rm(dav1994T.data) rm(DAV1994T.data)
###################################################### ######################################################
## DAV 2008T Aggregat / Smoker / Non-Smoker ## DAV 2008T Aggregat / Smoker / Non-Smoker
###################################################### ######################################################
dav2008T.data=read.xls( DAV2008T.data=read.xls(
"Tafeln/DAV_T.xls", "Tafeln/DAV_T.xls",
sheet=2, skip=2, #row.names=1, sheet=2, skip=2, #row.names=1,
col.names=c("age", "", "", "", col.names=c("age", "", "", "",
...@@ -50,45 +50,45 @@ dav2008T.data=read.xls( ...@@ -50,45 +50,45 @@ dav2008T.data=read.xls(
)); ));
### DAV 2008T Aggregat (smoker+non-smoker combined) ### DAV 2008T Aggregat (smoker+non-smoker combined)
dav2008t.male=valuationTable.period( DAV2008T.male=valuationTable.period(
name="DAV 2008T male, loaded", name="DAV 2008T male, loaded",
ages=dav2008T.data$age, deathProbs=dav2008T.data$qx1) ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qx1)
dav2008t.male.2Ord=valuationTable.period( DAV2008T.male.2Ord=valuationTable.period(
name="DAV 2008T male, unloaded", name="DAV 2008T male, unloaded",
ages=dav2008T.data$age, deathProbs=dav2008T.data$qx2) ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qx2)
dav2008t.female=valuationTable.period( DAV2008T.female=valuationTable.period(
name="DAV 2008T female, loaded", name="DAV 2008T female, loaded",
ages=dav2008T.data$age, deathProbs=dav2008T.data$qy1) ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qy1)
dav2008t.female.2Ord=valuationTable.period( DAV2008T.female.2Ord=valuationTable.period(
name="DAV 2008T female, unloaded", name="DAV 2008T female, unloaded",
ages=dav2008T.data$age, deathProbs=dav2008T.data$qy2) ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qy2)
### DAV 2008T Smoker ### DAV 2008T Smoker
dav2008t.male.smoker=valuationTable.period( DAV2008T.male.smoker=valuationTable.period(
name="DAV 2008T male smoker, loaded", name="DAV 2008T male smoker, loaded",
ages=dav2008T.data$age, deathProbs=dav2008T.data$qx1R) ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qx1R)
dav2008t.male.smoker.2Ord=valuationTable.period( DAV2008T.male.smoker.2Ord=valuationTable.period(
name="DAV 2008T male smoker, unloaded", name="DAV 2008T male smoker, unloaded",
ages=dav2008T.data$age, deathProbs=dav2008T.data$qx2R) ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qx2R)
dav2008t.female.smoker=valuationTable.period( DAV2008T.female.smoker=valuationTable.period(
name="DAV 2008T female smoker, loaded", name="DAV 2008T female smoker, loaded",
ages=dav2008T.data$age, deathProbs=dav2008T.data$qy1R) ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qy1R)
dav2008t.female.smoker.2Ord=valuationTable.period( DAV2008T.female.smoker.2Ord=valuationTable.period(
name="DAV 2008T female smoker, unloaded", name="DAV 2008T female smoker, unloaded",
ages=dav2008T.data$age, deathProbs=dav2008T.data$qy2R) ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qy2R)
### DAV 2008T Non-Smoker ### DAV 2008T Non-Smoker
dav2008t.male.nonsmoker=valuationTable.period( DAV2008T.male.nonsmoker=valuationTable.period(
name="DAV 2008T male non-smoker, loaded", name="DAV 2008T male non-smoker, loaded",
ages=dav2008T.data$age, deathProbs=dav2008T.data$qx1NR) ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qx1NR)
dav2008t.male.nonsmoker.2Ord=valuationTable.period( DAV2008T.male.nonsmoker.2Ord=valuationTable.period(
name="DAV 2008T male non-smoker, unloaded", name="DAV 2008T male non-smoker, unloaded",
ages=dav2008T.data$age, deathProbs=dav2008T.data$qx2NR) ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qx2NR)
dav2008t.female.nonsmoker=valuationTable.period( DAV2008T.female.nonsmoker=valuationTable.period(
name="DAV 2008T female non-smoker, loaded", name="DAV 2008T female non-smoker, loaded",
ages=dav2008T.data$age, deathProbs=dav2008T.data$qy1NR) ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qy1NR)
dav2008t.female.nonsmoker.2Ord=valuationTable.period( DAV2008T.female.nonsmoker.2Ord=valuationTable.period(
name="DAV 2008T female non-smoker, unloaded", name="DAV 2008T female non-smoker, unloaded",
ages=dav2008T.data$age, deathProbs=dav2008T.data$qy2NR) ages=DAV2008T.data$age, deathProbs=DAV2008T.data$qy2NR)
rm(dav2008T.data); rm(DAV2008T.data);
File deleted
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment