95 lines
4.1 KiB
R
95 lines
4.1 KiB
R
library(tidyverse)
|
|
library(fixest)
|
|
source("Scripts/Functions.r")
|
|
#source("Scripts/Load_Wyoming_Web_Data.r")
|
|
DATA_TO_GATHER <- list()
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c("WYPOP","WY_POP",TRUE)
|
|
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c("WYNQGSP","WY_GDP",TRUE)
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c("MEHOINUSWYA646N","WY_MED_INCOME",TRUE)
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c("BUSAPPWNSAWY","WY_BUISNESS_APPLICATIONS",FALSE)
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c('ACTLISCOUWY','WY_HOUSES_FOR_SALE',FALSE)
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c('WYRVAC','WY_RENTAL_VACANCY_RATE',FALSE)
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c('WYBPPRIVSA','WY_PRIVATE_HOUSING',FALSE)
|
|
#New Private Housing Units Authorized by Building Permits for Wyoming
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c('B03002006E056023','LN_FIVE_YEAR_POP',FALSE)
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c('GDPALL56023','LN_GDP',TRUE)
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c('WYLINC3POP','LN_POP',FALSE)
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c('LAUCN560230000000005','LN_EMPLOYMENT',FALSE)
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c('BPPRIV056023','LN_PRIVE_HOUSING',FALSE)
|
|
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c('ENU5602320510','LN_NUM_ESTABLISHMENTS',FALSE)
|
|
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c('GDPALL56041','UINTA_GDP',TRUE)
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c('WYUINT1POP','UINTA_POP',FALSE)
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c('WYSUBL5POP','SUBLETTE_POP',FALSE)
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c('WYSWEE7POP','SWEETWATER_POP',FALSE)
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c('WYTETO9POP','TETON_POP',FALSE)
|
|
##Idaho Counties
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c('IDBEAR7POP','BEAR_LAKE_POP',FALSE)
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c('IDCARI9POP','CARIBOU_POP',FALSE)
|
|
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c('IDBONN0POP','BONNEVILLE_POP',FALSE)
|
|
###US Population
|
|
DATA_TO_GATHER[[length(DATA_TO_GATHER)+1]] <- c('POPTOTUSA647NWDB','US_POP',FALSE)
|
|
|
|
|
|
|
|
|
|
for(x in 1:length(DATA_TO_GATHER)){
|
|
CURRENT <- DATA_TO_GATHER[[x]]
|
|
|
|
if(CURRENT[3]){C_DATA <- CPI_ADJUST(FRED_GET(CURRENT[1],CURRENT[2]))}else{C_DATA <- FRED_GET(CURRENT[1],CURRENT[2])}
|
|
if(x==1){RES <- C_DATA}else{RES <- RES %>% full_join(C_DATA)}
|
|
rm(CURRENT,C_DATA)
|
|
}
|
|
DATA <- RES %>% mutate(US_POP=US_POP-WY_POP,WY_POP=WY_POP-LN_POP-UINTA_POP-SUBLETTE_POP-SWEETWATER_POP-TETON_POP)
|
|
colnames(DATA)
|
|
feols(log(LN_POP) ~log(US_POP)+log(UINTA_POP)+log(WY_POP)+log(SUBLETTE_POP)+log(SWEETWATER_POP)+log(TETON_POP)+log(BEAR_LAKE_POP)+log(CARIBOU_POP)+log(BONNEVILLE_POP)+YEAR,data=DATA)
|
|
TS_DATA_ORIG <- DATA %>% select(YEAR,LN_POP,US_POP,WY_POP,UINTA_POP,SUBLETTE_POP,SWEETWATER_POP,TETON_POP,BEAR_LAKE_POP,CARIBOU_POP,BONNEVILLE_POP) %>% filter(!is.na(LN_POP)) %>% arrange(YEAR) %>% select(-YEAR)
|
|
|
|
TS_DATA <- diff(log(ts(TS_DATA_ORIG,start=c(1970),end=c(2024),frequency=1)))
|
|
library("forecast")
|
|
library("vars")
|
|
VARselect(TS_DATA,lag.max=4,type="const")
|
|
VAR1 <- VAR(TS_DATA,p=3,type="const",season=NULL,exog=NULL)
|
|
plot(irf(VAR1,response="LN_POP"))
|
|
plot(forecast(VAR1,))
|
|
RES <- (predict(VAR1, n.ahead = 20, ci = 0.95))
|
|
names(RES )
|
|
names(RES$fcst)
|
|
RES$fcst$LN_POP %>% as_tibble
|
|
CURRENT_POP <- max(DATA$LN_POP,na.rm=TRUE)
|
|
0.0157*CURRENT_POP*1000
|
|
0.083*CURRENT_POP*1000
|
|
-0.0489*CURRENT_POP*1000
|
|
|
|
|
|
|
|
|
|
# View the forecasted values and confidence intervals
|
|
print(forecast_results)
|
|
|
|
# You can also plot the forecasts
|
|
plot(forecast_results)
|
|
|
|
|
|
?forecast
|
|
?forecast
|
|
install.packages("sparsegl")
|
|
plot(VAR1)
|
|
|
|
|
|
|
|
#Check a VAR it looks like lags on changes to Private industry could affect other variables
|
|
#Idea check a SVAR placing limits on which shocks are first
|
|
feols((LINC_POP)~(WY_POP)+log(LINC_PRIV_IND)+Year,data=DF)
|
|
feols(log(1000*LINC_POP)~log(LINC_GDP)+log(LINC_PRIV_IND)+log(LINC_LABOR_FORCE)+log(LINC_PRIV_IND)+Year,DF)
|
|
DF
|
|
ggplot(data=DF) +geom_point(aes(x=Year,y=WY_POP),color="red")+geom_point(aes(x=Year,y=30*LINC_POP),color="blue")+geom_point(aes(x=Year,y=LINC_GDP/1700),color="black")+geom_point(aes(x=Year,y=LINC_PRIV_IND/1),color="green")+geom_point(aes(x=Year,y=LINC_LABOR_FORCE/20),color="orange")
|
|
|
|
|
|
|
|
|
|
|