25 lines
1.7 KiB
R
25 lines
1.7 KiB
R
library(tidyverse)
|
|
library(fixest)
|
|
####SPLIT OUT THE DATA MANAGEMENT PULL IN ARIMA
|
|
################################Create the data need to model the age-sex specific death rates
|
|
RAW_DATA_LOC <- "Data/Cleaned_Data/Mortality_Data/RDS/"
|
|
REG_DATA <- readRDS(paste0(RAW_DATA_LOC,"Single_Sex_Age_US_Mortality_Rate_Data_Wide.Rds"))
|
|
if(!exists("SAVE_DATA_LOC")){SAVE_DATA_LOC<- "Data/Intermediate_Inputs/Mortality_Regression_Data/"}
|
|
dir.create(SAVE_DATA_LOC, recursive = TRUE, showWarnings = FALSE)
|
|
|
|
|
|
|
|
#####################Model all ages and sex
|
|
MOD <- feols(Age_.[0:85]~US_Adj_Death_Rate+Sex*Year,REG_DATA, data.save = TRUE)
|
|
###Simulate each age-sex death rate over time with the models
|
|
#########When project far into the future some death rate values become negative. Make bounds to limit the forecast to a reasonable range. In this case I select half of the historic minimum, or double the historic maximum as upper an lower bounds in the study period.
|
|
#BOUNDS <- readRDS("Data/Cleaned_Data/Mortality_Data/RDS/Single_Sex_Age_US_Mortality_Rate_Data_Long.Rds") %>% group_by(Age) %>% summarize(MAX_RATE=2*max(Mortality_Rate),MIN_RATE=min(Mortality_Rate)/2)
|
|
BOUNDS <- readRDS("Data/Cleaned_Data/Mortality_Data/RDS/Single_Sex_Age_US_Mortality_Rate_Data_Long.Rds") %>% group_by(Sex,Age) %>% summarize(MAX_RATE=2*max(Mortality_Rate),MIN_RATE=min(Mortality_Rate)/2) %>% arrange(Sex,Age)
|
|
|
|
MAX_BOUND <- BOUNDS %>% pull(MAX_RATE)
|
|
MIN_BOUND <- BOUNDS %>% pull(MIN_RATE)
|
|
saveRDS(MOD,paste0(SAVE_DATA_LOC,"Single_Sex_Age_Time_Series_Regression.Rds"))
|
|
saveRDS(MAX_BOUND,paste0(SAVE_DATA_LOC,"Single_Sex_Age_Max_Values_for_Bounding_Predictions.Rds"))
|
|
saveRDS(MIN_BOUND,paste0(SAVE_DATA_LOC,"Single_Sex_Age_Min_Values_for_Bounding_Predictions.Rds"))
|
|
|