Saqué la UF proyectada
options(max.print=5000)
uf_proyectado <- readxl::read_excel("uf_proyectado.xlsx") %>% dplyr::arrange(Período) %>%
dplyr::mutate(Período= as.Date(lubridate::parse_date_time(Período, c("%Y-%m-%d"),exact=T)))
ts_uf_proy<-
ts(data = uf_proyectado$`Valor (Pesos)`,
start = as.numeric(as.Date("2013-01-01")),
end = as.numeric(as.Date(uf_proyectado$Período[length(uf_proyectado$Período)])), frequency = 1,
deltat = 1, ts.eps = getOption("ts.eps"))
fit_tbats <- forecast::tbats(ts_uf_proy)
autoplotly(forecast::forecast(fit_tbats, h=298), ts.colour = "darkred",
predict.colour = "blue", predict.linetype = "dashed")%>%
layout(showlegend = F,
yaxis = list(title = "Gastos"),
xaxis = list(
title="Fecha",
ticktext = as.list(seq(from = as.Date("2013-01-01"),
to = as.Date("2013-01-01")+length(fit_tbats$fitted.values)+298, by = 90)),
tickvals = as.list(seq(from = as.numeric(as.Date("2013-01-01")),
to = as.numeric(as.Date("2013-01-01"))+length(fit_tbats$fitted.values)+298, by = 90)),
tickmode = "array",
tickangle = 90
))
La proyección de la UF al 2023-01-01 sería de: 32866 pesos// Percentil 95% más alto proyectado: 34628.59
Por tanto, el costo del doctorado será de 3,636,002 pesos conforme al percentil 95% más alto de lo que costará la UF al final del año. Mientras que podría llegar a un el costo del doctorado será de 3,450,930 pesos conforme al percentil 95% más alto de lo que costará la UF al final del año, conforme al promedio proyectado.
Lo haré en base a 2 cálculos: el gasto semanal y el gasto mensual en base a mis gastos desde marzo de 2019. La primera proyección la hice añadiendo el precio del arriendo mensual y partiendo en 2 (porque es con tami y yo).
Gastos_casa <- readr::read_csv(enlace_gastos,
col_names = c("Tiempo", "gasto", "fecha", "obs", "monto", "gastador",
"link"),skip=1) %>%
dplyr::mutate(fecha= lubridate::parse_date_time(fecha, c("%d/%m/%Y"),exact=T)) %>%
dplyr::mutate(fecha_month=strftime(fecha, format = "%Y-%m")) %>%
dplyr::mutate(day=as.Date(as.character(lubridate::floor_date(fecha, "day"))))
## Rows: 563 Columns: 7
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (6): Tiempo, gasto, fecha, obs, gastador, link
## dbl (1): monto
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
Gastos_casa_m <-
Gastos_casa %>% dplyr::group_by(fecha_month)%>%
dplyr::summarise(gasto_total=(sum(monto)+500000)/1000,fecha=first(fecha))%>%
data.frame()
fit_tbats_m <- forecast::tbats(Gastos_casa_m$gasto_total[-length(Gastos_casa_m$gasto_total)])
seq_dates<-format(seq(as.Date("2019/03/01"), by = "month", length = dim(Gastos_casa_m)[1]+12), "%m\n'%y")
autplo2t<-
autoplotly(forecast::forecast(fit_tbats_m, h=12), ts.colour = "darkred",
predict.colour = "blue", predict.linetype = "dashed")%>%
layout(showlegend = F,
yaxis = list(title = "Gastos"),
xaxis = list(
title="Fecha",
ticktext = as.list(seq_dates[seq(from = 1, to = (dim(Gastos_casa_m)[1]+12), by = 3)]),
tickvals = as.list(seq(from = 1, to = (dim(Gastos_casa_m)[1]+12), by = 3)),
tickmode = "array"#"array"
))
autplo2t
fr_fit_tbats_m<-forecast::forecast(fit_tbats_m, h=12)
Me voy a gastar esta plata (la proyección 95% más alta): 471.64 miles de pesos
Ahora se comparará con la proyección a nivel semanal
Gastos_casa_ts_w<-
data.frame(date_initial=seq(from = as.Date("2019-03-03"), to = as.Date(substr(Sys.time(),1,10)), by = 1)) %>%
dplyr::left_join(dplyr::mutate(Gastos_casa,date=readr::parse_date(as.character(fecha), "%Y-%m-%d")), by=c("date_initial"="date")) %>%
dplyr::mutate(fecha=strftime(date_initial, format = "%Y-W%V")) %>%
dplyr::group_by(fecha) %>%
#Dejarlo en 1 pesos los vacíos, para que el método de estimación de lambda de Guerrero no se afecte
dplyr::summarise(date=min(date_initial),monto=sum(ifelse(is.na(monto),1,monto))) %>%
dplyr::slice(-((n()-5):n()))
fit_tbats_w <- forecast::tbats(Gastos_casa_ts_w$monto)
capture.output(forecast::forecast(fit_tbats_w, h=52))
## [1] " Point Forecast Lo 80 Hi 80 Lo 95 Hi 95"
## [2] "153 88486.81 22232.95 202129.9 5348.662 282160.8"
## [3] "154 88486.81 22109.97 202521.4 5259.742 282874.0"
## [4] "155 88486.81 21987.69 202912.2 5171.849 283586.1"
## [5] "156 88486.81 21866.11 203302.3 5084.975 284297.2"
## [6] "157 88486.81 21745.23 203691.7 4999.111 285007.2"
## [7] "158 88486.81 21625.02 204080.5 4914.247 285716.2"
## [8] "159 88486.81 21505.50 204468.5 4830.374 286424.1"
## [9] "160 88486.81 21386.64 204855.9 4747.484 287131.0"
## [10] "161 88486.81 21268.46 205242.5 4665.568 287836.9"
## [11] "162 88486.81 21150.93 205628.6 4584.618 288541.8"
## [12] "163 88486.81 21034.07 206013.9 4504.625 289245.7"
## [13] "164 88486.81 20917.85 206398.6 4425.580 289948.5"
## [14] "165 88486.81 20802.28 206782.7 4347.476 290650.4"
## [15] "166 88486.81 20687.36 207166.1 4270.305 291351.4"
## [16] "167 88486.81 20573.06 207548.8 4194.058 292051.3"
## [17] "168 88486.81 20459.40 207931.0 4118.728 292750.3"
## [18] "169 88486.81 20346.36 208312.4 4044.306 293448.3"
## [19] "170 88486.81 20233.95 208693.3 3970.786 294145.4"
## [20] "171 88486.81 20122.15 209073.5 3898.159 294841.6"
## [21] "172 88486.81 20010.96 209453.2 3826.418 295536.8"
## [22] "173 88486.81 19900.37 209832.2 3755.555 296231.1"
## [23] "174 88486.81 19790.39 210210.6 3685.564 296924.4"
## [24] "175 88486.81 19681.00 210588.4 3616.437 297616.9"
## [25] "176 88486.81 19572.21 210965.6 3548.166 298308.4"
## [26] "177 88486.81 19464.00 211342.2 3480.746 298999.1"
## [27] "178 88486.81 19356.38 211718.2 3414.168 299688.9"
## [28] "179 88486.81 19249.33 212093.7 3348.426 300377.8"
## [29] "180 88486.81 19142.86 212468.5 3283.514 301065.8"
## [30] "181 88486.81 19036.96 212842.8 3219.423 301752.9"
## [31] "182 88486.81 18931.62 213216.5 3156.148 302439.2"
## [32] "183 88486.81 18826.85 213589.7 3093.683 303124.6"
## [33] "184 88486.81 18722.63 213962.2 3032.020 303809.2"
## [34] "185 88486.81 18618.97 214334.2 2971.154 304492.9"
## [35] "186 88486.81 18515.85 214705.7 2911.077 305175.8"
## [36] "187 88486.81 18413.28 215076.6 2851.784 305857.8"
## [37] "188 88486.81 18311.25 215447.0 2793.268 306539.1"
## [38] "189 88486.81 18209.76 215816.8 2735.523 307219.5"
## [39] "190 88486.81 18108.80 216186.1 2678.544 307899.1"
## [40] "191 88486.81 18008.38 216554.8 2622.324 308577.8"
## [41] "192 88486.81 17908.47 216923.0 2566.857 309255.8"
## [42] "193 88486.81 17809.09 217290.7 2512.137 309933.0"
## [43] "194 88486.81 17710.23 217657.9 2458.159 310609.4"
## [44] "195 88486.81 17611.88 218024.5 2404.917 311285.0"
## [45] "196 88486.81 17514.04 218390.6 2352.404 311959.8"
## [46] "197 88486.81 17416.71 218756.2 2300.617 312633.9"
## [47] "198 88486.81 17319.89 219121.3 2249.548 313307.1"
## [48] "199 88486.81 17223.56 219485.9 2199.192 313979.7"
## [49] "200 88486.81 17127.73 219850.0 2149.545 314651.4"
## [50] "201 88486.81 17032.40 220213.6 2100.600 315322.4"
## [51] "202 88486.81 16937.55 220576.7 2052.352 315992.7"
## [52] "203 88486.81 16843.19 220939.3 2004.797 316662.2"
## [53] "204 88486.81 16749.32 221301.4 1957.928 317330.9"
Me voy a gastar esta plata (95% proyección más alta e incluyendo gastos por arriendo): 278,920 pesos
peor_escenario_uf_arancel_anual_uch<-(tail(round(as.numeric(unlist(strsplit(capture.output(forecast::forecast(fit_tbats, h=350)),"\\s{1,}"))),2),1)*105)/1000
escenario_promedio_uf_arancel_anual_uch<-(32866*105)/1000
sueldo_acc<-630
arriendo_depto<-350/2
gastos_peor_escenario_1_mens<-tail(round(as.numeric(unlist(strsplit(capture.output(fr_fit_tbats_m),"\\s{1,}")))/2,2),1)
gastos_peor_escenario_2_sem<- round((sum(tail(as.numeric(unlist(strsplit(capture.output(forecast::forecast(fit_tbats_w, h=52)), "\\s{1,}"))),4))+500000)/2,2)/1000
#compuesto
# I= 100*0.015*12
# F=100 + I
# F
Añadiendo un interés compuesto de 6,75% asociado a la inflación, podría llegar a gastar 854.1 pesos de acuerdo al peor escenario (a partir de gastos mensuales). Por otra parte, podría llegar a gastar 957.38 (a partir de gastos semanales).
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
paste0("Incluyendo el sueldo ofrecido y la mitad del arriendo de bueras, pero restando la proyección mensual de gastos, me deja una diferencia de ",(sueldo_acc+ arriendo_depto)-gastos_peor_escenario_1_mens, " miles de pesos a favor")
## [1] "Incluyendo el sueldo ofrecido y la mitad del arriendo de bueras, pero restando la proyección mensual de gastos, me deja una diferencia de 333.36 miles de pesos a favor"
paste0("Incluyendo el sueldo ofrecido y la mitad del arriendo de bueras, pero restando la proyección mensual de gastos, me deja una diferencia de ",(sueldo_acc+ arriendo_depto)-gastos_peor_escenario_2_sem, " miles de pesos a favor")
## [1] "Incluyendo el sueldo ofrecido y la mitad del arriendo de bueras, pero restando la proyección mensual de gastos, me deja una diferencia de 276.33023 miles de pesos a favor"
paste0("Incluyendo el sueldo ofrecido y la mitad del arriendo de bueras, pero restando la proyección mensual de gastos (en base a proyecciones mensuales) y el peor escenario de arancel mensual, me deja una diferencia de ",round((sueldo_acc+ arriendo_depto)-(gastos_peor_escenario_1_mens+(peor_escenario_uf_arancel_anual_uch/12)),2), " miles de pesos a favor")
## [1] "Incluyendo el sueldo ofrecido y la mitad del arriendo de bueras, pero restando la proyección mensual de gastos (en base a proyecciones mensuales) y el peor escenario de arancel mensual, me deja una diferencia de 30.36 miles de pesos a favor"
paste0("Incluyendo el sueldo ofrecido y la mitad del arriendo de bueras, pero restando la proyección mensual de gastos (en base a proyecciones semanales) y el peor escenario de arancel mensual, me deja una diferencia de ",round((sueldo_acc+ arriendo_depto)-(gastos_peor_escenario_2_sem+(peor_escenario_uf_arancel_anual_uch/12)),2), " miles de pesos a favor")
## [1] "Incluyendo el sueldo ofrecido y la mitad del arriendo de bueras, pero restando la proyección mensual de gastos (en base a proyecciones semanales) y el peor escenario de arancel mensual, me deja una diferencia de -26.67 miles de pesos a favor"
paste0("Incluyendo el sueldo ofrecido y la mitad del arriendo de bueras, pero restando la proyección mensual de gastos (en base a proyecciones mensuales) y el escenario promedio de arancel mensual, me deja una diferencia de ",round((sueldo_acc+ arriendo_depto)-(gastos_peor_escenario_1_mens+(escenario_promedio_uf_arancel_anual_uch/12)),2), " miles de pesos a favor")
## [1] "Incluyendo el sueldo ofrecido y la mitad del arriendo de bueras, pero restando la proyección mensual de gastos (en base a proyecciones mensuales) y el escenario promedio de arancel mensual, me deja una diferencia de 45.78 miles de pesos a favor"
paste0("Incluyendo el sueldo ofrecido y la mitad del arriendo de bueras, pero restando la proyección mensual de gastos (en base a proyecciones semanales) y el escenario promedio de arancel mensual, me deja una diferencia de ",round((sueldo_acc+ arriendo_depto)-(gastos_peor_escenario_2_sem+(escenario_promedio_uf_arancel_anual_uch/12)),2), " miles de pesos a favor")
## [1] "Incluyendo el sueldo ofrecido y la mitad del arriendo de bueras, pero restando la proyección mensual de gastos (en base a proyecciones semanales) y el escenario promedio de arancel mensual, me deja una diferencia de -11.25 miles de pesos a favor"
#round((sueldo_acc+ arriendo_depto)-(__________________+(escenario_promedio_uf_arancel_anual_uch/12)),2)
datos_sim1<-data.frame()
set.seed(2123)
sim<-5000
for(i in 1:sim){
j<-runif(sim, gastos_peor_escenario_1_mens, gastos_peor_escenario_2_sem)[i]
x<-runif(sim, escenario_promedio_uf_arancel_anual_uch,peor_escenario_uf_arancel_anual_uch)[i]
datos_sim1<-rbind(datos_sim1,round((sueldo_acc+ arriendo_depto)-(j+(x/12)),2))
}
ggplot(datos_sim1)+
geom_histogram(aes_string(names(datos_sim1)[1]))+
sjPlot::theme_sjplot()+
labs(y="Frecuencia",x="Saldo mensual a favor en miles de pesos", caption=paste0("Nota. 2.5%= ",round(quantile(datos_sim1$X.20.14,.025),2),"; 97.5%= ",round(quantile(datos_sim1$X.20.14,.975),2)))+
ggtitle("Escenarios posibles asumiendo distribuciones uniformes para gastos\ny arancel según UF")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
#round((sueldo_acc+ arriendo_depto)-(__________________+(escenario_promedio_uf_arancel_anual_uch/12)),2)
datos_sim2<-data.frame()
set.seed(2123)
sim<-5000
for(i in 1:sim){
j<-runif(sim, gastos_peor_escenario_1_mens, gastos_peor_escenario_2_sem+gastos_peor_escenario_2_sem*0.067577*12)[i]
x<-runif(sim, escenario_promedio_uf_arancel_anual_uch,peor_escenario_uf_arancel_anual_uch)[i]
datos_sim2<-rbind(datos_sim2,round((sueldo_acc+ arriendo_depto)-(j+(x/12)),2))
}
ggplot(datos_sim2)+
geom_histogram(aes_string(names(datos_sim2)[1]))+
sjPlot::theme_sjplot()+
labs(y="Frecuencia",x="Saldo mensual a favor en miles de pesos", caption=paste0("Nota. 2.5%= ",round(quantile(datos_sim2[,1],.025),2),"; 97.5%= ",round(quantile(datos_sim2[,1],.975),2)))+
ggtitle("Escenarios posibles asumiendo distribuciones uniformes para gastos\ny arancel según UF e incluyendo los peores escenarios con interés compuesto")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Sys.getenv("R_LIBS_USER")
## [1] "C:/Users/andre/Documents/R/win-library/4.1"
rstudioapi::getSourceEditorContext()
## Document Context:
## - id: 'D383D56C'
## - path: 'H:/Mi unidad/PERSONAL ANDRES/UCH_salud_publica/proyeccion_202.Rmd'
## - contents: <249 rows>
## Document Selection:
## - [19, 17] -- [19, 17]: ''
sessionInfo()
## R version 4.1.1 (2021-08-10)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 19042)
##
## Matrix products: default
##
## locale:
## [1] LC_COLLATE=Spanish_Chile.1252 LC_CTYPE=Spanish_Chile.1252
## [3] LC_MONETARY=Spanish_Chile.1252 LC_NUMERIC=C
## [5] LC_TIME=Spanish_Chile.1252
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] sjPlot_2.8.9 autoplotly_0.1.4 dplyr_1.0.7 plotly_4.9.4.1
## [5] xts_0.12.1 zoo_1.8-9 tsibble_1.0.1 forecast_8.15
## [9] ggplot2_3.3.5
##
## loaded via a namespace (and not attached):
## [1] nlme_3.1-152 bit64_4.0.5 lubridate_1.7.10 insight_0.14.5
## [5] httr_1.4.2 backports_1.2.1 tools_4.1.1 bslib_0.3.1
## [9] utf8_1.2.2 R6_2.5.1 sjlabelled_1.1.8 DBI_1.1.1
## [13] lazyeval_0.2.2 colorspace_2.0-2 nnet_7.3-16 withr_2.4.3
## [17] tidyselect_1.1.1 gridExtra_2.3 emmeans_1.6.3 bit_4.0.4
## [21] curl_4.3.2 compiler_4.1.1 cli_3.0.1 performance_0.8.0
## [25] sandwich_3.0-1 labeling_0.4.2 bayestestR_0.11.5 sass_0.4.0
## [29] tseries_0.10-48 scales_1.1.1 lmtest_0.9-38 fracdiff_1.5-1
## [33] mvtnorm_1.1-2 readr_2.0.1 quadprog_1.5-8 stringr_1.4.0
## [37] digest_0.6.27 minqa_1.2.4 rmarkdown_2.10 pkgconfig_2.0.3
## [41] htmltools_0.5.2 lme4_1.1-27.1 highr_0.9 fastmap_1.1.0
## [45] readxl_1.3.1 htmlwidgets_1.5.3 rlang_0.4.11 TTR_0.24.2
## [49] rstudioapi_0.13 quantmod_0.4.18 farver_2.1.0 jquerylib_0.1.4
## [53] generics_0.1.0 jsonlite_1.7.2 vroom_1.5.4 crosstalk_1.2.0
## [57] magrittr_2.0.1 parameters_0.15.0 Matrix_1.3-4 Rcpp_1.0.7
## [61] munsell_0.5.0 fansi_0.5.0 lifecycle_1.0.1 stringi_1.7.4
## [65] multcomp_1.4-17 yaml_2.2.1 MASS_7.3-54 grid_4.1.1
## [69] parallel_4.1.1 sjmisc_2.8.7 crayon_1.4.2 lattice_0.20-44
## [73] ggeffects_1.1.1 splines_4.1.1 hms_1.1.0 sjstats_0.18.1
## [77] knitr_1.33 anytime_0.3.9 pillar_1.6.4 boot_1.3-28
## [81] estimability_1.3 effectsize_0.5 codetools_0.2-18 urca_1.3-0
## [85] glue_1.4.2 evaluate_0.14 modelr_0.1.8 data.table_1.14.0
## [89] tzdb_0.1.2 nloptr_1.2.2.2 vctrs_0.3.8 cellranger_1.1.0
## [93] gtable_0.3.0 purrr_0.3.4 tidyr_1.1.3 assertthat_0.2.1
## [97] datawizard_0.2.1 xfun_0.25 broom_0.7.9 xtable_1.8-4
## [101] coda_0.19-4 survival_3.2-11 viridisLite_0.4.0 timeDate_3043.102
## [105] tibble_3.1.4 TH.data_1.0-10 ellipsis_0.3.2 ggfortify_0.4.12
save.image("__analisis.RData")
unlink("*_cache", recursive = T, force = T, expand = TRUE)
sesion_info <- devtools::session_info()
dplyr::select(
tibble::as_tibble(sesion_info$packages),
c(package, loadedversion, source)
) %>%
DT::datatable(filter = 'top', colnames = c('Row number' =1,'Variable' = 2, 'Percentage'= 3),
caption = htmltools::tags$caption(
style = 'caption-side: top; text-align: left;',
'', htmltools::em('Paquetes estadísticos utilizados')),
options=list(
initComplete = htmlwidgets::JS(
"function(settings, json) {",
"$(this.api().tables().body()).css({'font-size': '80%'});",
"}")))