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

Pension Table AVÖ 1999P implemented (Excel data file needed)

parent 447a5e01
No related branches found
No related tags found
No related merge requests found
#' @import MortalityTables #' @import MortalityTables
NULL NULL
stopifnot(require(methods), require(utils), require(MortalityTables)) # MortalityTable classes; new; Excel reader stopifnot(require(methods), require(utils), require(MortalityTables), require(readxl)) # MortalityTable classes; new; Excel reader
# TODO:
# *) Arbeitsmarkteffekt
############################################################################### #
# Pension Table AVÖ 2018-P ----
############################################################################### #
if (is.null(getOption("MortalityTables.AVOe1999P"))) {
message("The pension table AVÖ 1999P requires the Excel file 'Austria_Pensions_AVOe1999P.xlsx'. Please set its path with options(\"MortalityTables.AVOe1999P\" = \"/path/to/Austria_Pensions_AVOe1999P.xlsx\").")
} else {
############################################################################### ###############################################################################
# AVÖ 1999P exact (Male, Female) # AVÖ 1999P exact (Male, Female)
############################################################################### ###############################################################################
AVOe1999P.generate = function(tab, name="P", collar = "Angestellte") {
AVOe1999P.generate = function(file, name="P", collar = "Angestellte") {
table99 = function(name, data, agevar = "x", probvar, trendvar = NULL, dim = list(), ..., baseyear = 1982) { table99 = function(name, data, agevar = "x", probvar, trendvar = NULL, dim = list(), ..., baseyear = 1982) {
if (is.null(trendvar)) { if (is.null(trendvar)) {
mortalityTable.period( mortalityTable.period(
...@@ -26,18 +36,16 @@ AVOe1999P.generate = function(file, name="P", collar = "Angestellte") { ...@@ -26,18 +36,16 @@ AVOe1999P.generate = function(file, name="P", collar = "Angestellte") {
paste("AVÖ 1999-", name, ", ", desc, sep = "") paste("AVÖ 1999-", name, ", ", desc, sep = "")
} }
data = utils::read.csv( data = read_excel(
system.file("extdata", file, package = "MortalityTablesPrivate"), getOption("MortalityTables.AVOe1999P"), sheet = tab,
skip = 4, skip = 4,
header = FALSE, col_names = c(
col.names = c( "x",
"x", "qaax", "qix", "qpx", "qgx", "qwy", "ix", "hx", "yx",
"qaax", "qix", "qpx", "qgx", "qwy", "ix", "hx", "yx", "SPACER1",
"SPACER", "qaay", "qiy", "qpy", "qgy", "qwx", "iy", "hy", "xy",
"qaay", "qiy", "qpy", "qgy", "qwx", "iy", "hy", "xy", "SPACER2", "lambdax", "lambday")
"SPACER", "lambdax", "lambday") )
);
male = pensionTable( male = pensionTable(
name = name99p(name, "Männer"), name = name99p(name, "Männer"),
...@@ -50,8 +58,8 @@ AVOe1999P.generate = function(file, name="P", collar = "Angestellte") { ...@@ -50,8 +58,8 @@ AVOe1999P.generate = function(file, name="P", collar = "Angestellte") {
dim = list(sex = "m", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")), dim = list(sex = "m", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")),
qix = table99(name99p(name, "qix, disabled males"), data, "x", "qix", "lambdax", qix = table99(name99p(name, "qix, disabled males"), data, "x", "qix", "lambdax",
dim = list(sex = "m", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")), dim = list(sex = "m", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")),
rx = mortalityTable.zeroes(name = "No reactivation", ages = data[["x"]]), rx = mortalityTable.zeroes(name = "No reactivation", ages = data$x),
apx = mortalityTable.once(transitionAge = 65 - 1, name = "Pensionsalter 65", ages = data[["x"]]), apx = mortalityTable.once(transitionAge = 65 - 1, name = "Pensionsalter 65", ages = data$x),
qpx = table99(name99p(name, "qpx, retired males"), data, "x", "qpx", "lambdax", qpx = table99(name99p(name, "qpx, retired males"), data, "x", "qpx", "lambdax",
dim = list(sex = "m", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")), dim = list(sex = "m", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")),
hx = table99(name99p(name, "hx, marriage probability"), data, "x", "hx", hx = table99(name99p(name, "hx, marriage probability"), data, "x", "hx",
...@@ -79,8 +87,8 @@ AVOe1999P.generate = function(file, name="P", collar = "Angestellte") { ...@@ -79,8 +87,8 @@ AVOe1999P.generate = function(file, name="P", collar = "Angestellte") {
dim = list(sex = "w", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")), dim = list(sex = "w", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")),
qix = table99(name99p(name, "qiy, disabled females"), data, "x", "qix", "lambday", qix = table99(name99p(name, "qiy, disabled females"), data, "x", "qix", "lambday",
dim = list(sex = "w", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")), dim = list(sex = "w", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")),
rx = mortalityTable.zeroes(name = "No reactivation", ages = data[["x"]]), rx = mortalityTable.zeroes(name = "No reactivation", ages = data$x),
apx = mortalityTable.once(transitionAge = 60 - 1, name = "Pensionsalter 60", ages = data[["x"]]), apx = mortalityTable.once(transitionAge = 60 - 1, name = "Pensionsalter 60", ages = data$x),
qpx = table99(name99p(name, "qpy, retired females"), data, "x", "qpx", "lambday", qpx = table99(name99p(name, "qpy, retired females"), data, "x", "qpx", "lambday",
dim = list(sex = "w", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")), dim = list(sex = "w", collar = collar, type = "Pensionstafel Österreich", data = "official", year = "AVÖ 1999-P", risk = "Tod")),
hx = table99(name99p(name, "hy, marriage probability"), data, "x", "hy", hx = table99(name99p(name, "hy, marriage probability"), data, "x", "hy",
...@@ -100,44 +108,33 @@ AVOe1999P.generate = function(file, name="P", collar = "Angestellte") { ...@@ -100,44 +108,33 @@ AVOe1999P.generate = function(file, name="P", collar = "Angestellte") {
list(male = male, female = female) list(male = male, female = female)
} }
AVOe1999P.tmp = AVOe1999P.generate("Austria_Pensions_AVOe1999P_Angestellte.csv", "P", collar = "Angestellte")
AVOe1999P.male = AVOe1999P.tmp$male
AVOe1999P.female = AVOe1999P.tmp$female
AVOe1999P.tmp = AVOe1999P.generate("Austria_Pensions_AVOe1999P_ArbeiterAngestellte.csv", "P Arb./Ang.", collar = "Mischbestand")
AVOe1999P.male.ArbAng = AVOe1999P.tmp$male
AVOe1999P.female.ArbAng = AVOe1999P.tmp$female
AVOe1999P.tmp = AVOe1999P.generate("Austria_Pensions_AVOe1999P_Angestellte.csv", "PK", collar = "Angestellte")
AVOe1999P.male.PK = AVOe1999P.tmp$male
AVOe1999P.female.PK = AVOe1999P.tmp$female
AVOe1999P.tmp = AVOe1999P.generate("Austria_Pensions_AVOe1999P_ArbeiterAngestellte.csv", "PK Arb./Ang.", collar = "Mischbestand")
AVOe1999P.male.ArbAng.PK = AVOe1999P.tmp$male
AVOe1999P.female.ArbAng.PK = AVOe1999P.tmp$female
############################################################################## # ############################################################################## #
# Die Tafel als Array ---- # Die Tafel als Array ----
############################################################################## # ############################################################################## #
AVOe1999P = array( AVOe1999P = array(
data = c(mortalityTable.NA), data = c(mortalityTable.NA),
dim = c(2, 2, 1, 2), dim = c(2, 2),
dimnames = list(Geschlecht = c("m", "w"), Bestand = c("Angestellte", "Mischbestand"), Invalidisierung = c("IP"), Typ = c("P", "PK")) dimnames = list(Geschlecht = c("m", "w"), Bestand = c("Angestellte", "Mischbestand"))
)
AVOe1999PK = array(
data = c(mortalityTable.NA),
dim = c(2, 2),
dimnames = list(Geschlecht = c("m", "w"), Bestand = c("Angestellte", "Mischbestand"))
) )
AVOe1999P[, "Angestellte"] = AVOe1999P.generate(tab = "Angestellte", "P", collar = "Angestellte")
AVOe1999P[, "Mischbestand"] = AVOe1999P.generate(tab = "Arbeiter+Angestellte", "P Arb./Ang.", collar = "Mischbestand")
AVOe1999PK[, "Angestellte"] = AVOe1999P.generate(tab = "Angestellte PK", "PK", collar = "Angestellte")
AVOe1999PK[, "Mischbestand"] = AVOe1999P.generate(tab = "Arbeiter+Angestellte PK", "P< Arb./Ang.", collar = "Mischbestand")
AVOe1999P[["m", "Angestellte", "IP", "P"]] = AVOe1999P.male
AVOe1999P[["w", "Angestellte", "IP", "P"]] = AVOe1999P.female
AVOe1999P[["m", "Mischbestand", "IP", "P"]] = AVOe1999P.male.ArbAng
AVOe1999P[["w", "Mischbestand", "IP", "P"]] = AVOe1999P.female.ArbAng
AVOe1999P[["m", "Angestellte", "IP", "PK"]] = AVOe1999P.male.PK
AVOe1999P[["w", "Angestellte", "IP", "PK"]] = AVOe1999P.female.PK
AVOe1999P[["m", "Mischbestand", "IP", "PK"]] = AVOe1999P.male.ArbAng.PK
AVOe1999P[["w", "Mischbestand", "IP", "PK"]] = AVOe1999P.female.ArbAng.PK
AVOe1999P.male = AVOe1999P[["m", "Angestellte"]]
AVOe1999P.female = AVOe1999P[["w", "Angestellte"]]
AVOe1999P.male.Misch = AVOe1999P[["m", "Mischbestand"]]
AVOe1999P.female.Misch = AVOe1999P[["w", "Mischbestand"]]
rm(AVOe1999P.generate)
rm(AVOe1999P.generate, AVOe1999P.tmp) }
...@@ -399,6 +399,7 @@ Verlag: Verband der wissenschaftlichen Gesellschaften Österreichs, Wien, 1989 ...@@ -399,6 +399,7 @@ Verlag: Verband der wissenschaftlichen Gesellschaften Österreichs, Wien, 1989
```{r AVOe1999P, results="hide"} ```{r AVOe1999P, results="hide"}
pensionTables.load("Austria_AVOe1999P") pensionTables.load("Austria_AVOe1999P")
AVOe1999P AVOe1999P
AVOe1999PK
``` ```
...@@ -435,7 +436,7 @@ AVOe2018P ...@@ -435,7 +436,7 @@ AVOe2018P
```{r AT.pensionTables.Comparison} ```{r AT.pensionTables.Comparison}
plotMortalityTables( plotMortalityTables(
EttlPagler.male %>% pT.getSubTable("qx"), EttlPagler.male %>% pT.getSubTable("qx"),
AVOe1999P["m",,"IP", "P"] %>% pT.getSubTable("qx"), AVOe1999P["m",] %>% pT.getSubTable("qx"),
AVOe2008P["m",,"IP", "P"] %>% pT.getSubTable("qx"), AVOe2008P["m",,"IP", "P"] %>% pT.getSubTable("qx"),
AVOe2018P["m",,"IPRG"] %>% pT.getSubTable("qx"), AVOe2018P["m",,"IPRG"] %>% pT.getSubTable("qx"),
legend.position = c(0.01, 0.99), legend.justification = c(0,1), legend.position = c(0.01, 0.99), legend.justification = c(0,1),
...@@ -444,7 +445,7 @@ plotMortalityTables( ...@@ -444,7 +445,7 @@ plotMortalityTables(
plotMortalityTables( plotMortalityTables(
EttlPagler.male %>% pT.getSubTable("hx"), EttlPagler.male %>% pT.getSubTable("hx"),
AVOe1999P["m",,"IP", "P"] %>% pT.getSubTable("hx"), AVOe1999P["m",] %>% pT.getSubTable("hx"),
AVOe2008P["m",,"IP", "P"] %>% pT.getSubTable("hx"), AVOe2008P["m",,"IP", "P"] %>% pT.getSubTable("hx"),
AVOe2018P["m",,"IPRG"] %>% pT.getSubTable("hx"), AVOe2018P["m",,"IPRG"] %>% pT.getSubTable("hx"),
# legend.position = c(0.01, 0.99), legend.justification = c(0,1), # legend.position = c(0.01, 0.99), legend.justification = c(0,1),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment