data-raw/mainDecrementRulesLoadsEtc.r

# Per Yimeng 5/23/2015, we use a consistent naming rule for the column of decrement values:
# - mortality:    qxm
# - termination: qxt
# - disability   : qxd
# - retirement:  qxr (since we use single retirement age for now, the retirement table will be generated by the model based on the specified r.max)
# The variable names without suffix indicate multiple decrement rates (rates taking into account other competing decrements), and suffix ".p" indicates single decrement rates. Later we may have other suffix to indicate mortality for actives, retirees and disabled. For now, I think we can assume the all decrement tables we have already contain multiple decrement rates (just as what we will typically get from AVs when modeling real plans), so we can just use variable names without suffix. Please let me know whether you think this makes sense. Thank you!


#****************************************************************************************************
#                    Load packages ####
#****************************************************************************************************

# packages I always want loaded
library("plyr") # always load BEFORE loading dplyr
library("dplyr")
options(dplyr.print_min = 60) # default is 10
options(dplyr.print_max = 60) # default is 20
library("foreign") # various import and export routines - e.g., for reading Stata files
library("gdata") # for reading spreadsheets
library("knitr")
library("lubridate")
library("ggplot2")
library("magrittr")
library("readr")
library("readxl")
library("stringr")
library("tidyr")

library("XLConnect") # slow but convenient because it reads ranges
library("xlsx")

library("devtools")


# load my packages last
# devtools::install_github("donboyd5/apitools")
# devtools::install_github("donboyd5/bdata")
# devtools::install_github("donboyd5/btools")
# devtools::install_github("donboyd5/pdata")
library("apitools")
library("bdata")
library("btools")
# library("pdata")


#****************************************************************************************************
#                    Globals ####
#****************************************************************************************************

draw <- "./data-raw/"
dmort <- paste0(draw, "mortality/")
dterm <- paste0(draw, "termination/")

ttfn <- "TerminationTables.xlsx"


splong2 <- function(df, fillvar, fitrange=NULL, method = "natural"){
  ## spline smoothing
  # df should have only 2 columns: fillvar, and valvar, where:
  #   valvar is the variable to be interpolated - the y value
  #   fillvar is the variable it corresponds to - the x value
  #   fitrange is the set of NEW x values (fillvar values) for which we will get NEW interpolated y values (valvar)
  valvar <- names(df)[length(names(df))]
  nonfillvar <- setdiff(names(df), c(fillvar, valvar))
  f <- function(x) {
    if(is.null(fitrange)) fitrange <- min(x[, fillvar]):max(x[, fillvar])
    spl <- spline(x[[fillvar]], x[[valvar]], xout=fitrange, method = method) # double brackets ensure we return a vector rather than 1-column dataframe
    dfout <- data.frame(x=spl$x, y=spl$y)
    names(dfout) <- c(fillvar,valvar)
    return(dfout)
  }
  dfl2 <- f(df)
  return(dfl2)
}
donboyd5/decrements documentation built on May 15, 2019, 10:38 a.m.