###Clase 1 y 2 - Introducción a R####
#“rm(list = ls())” <- Código para limpiar nuestro espacio de trabajo.
#Para anadir comentarios a nuestro trabajo siempre usamos “#”, pero siempre usamos minusculas, sin tildes, ni mucho menos caracteres especiales, este comentario es un proprio ejemplo.
##Para crear escalares y operaciones básicas: ##ESCALAR escalar1 <- 1 escalar2 <- 2 #Operaciones #SUMA escalar1 + escalar2 escalar3 <- escalar1 + escalar2 escalar3<-escalar1+escalar2
#MULTIPLICACIÓN escalar4 <- escalar3 * escalar2
#DIVISIÓN escalar5 <- escalar4/escalar1 escalar5
#Estos sirven para almacenar un solo número y hacer cálculos (+, *, /)
##VECTORES <- Puede almacenar elementos del mismo tipo en secuencia (númericos o caracteres) vect1 <- c(2,1.5,4) #vector numerico vect2 <- c(“Gustavo”,“Andy”,“Stefy”) vect3 <- c(5,6,2)
##Combinados: prd1 <- vect1 *escalar4 ##Podemos ubicarlos por su posición: vect1[2] ##2do elemento -> 1.5 vect2[3] ##3er elemento -> Stefy ##Exclusión: vect2[-2] ##todos menos “Andy” vect2[2:3] ##Andy y Stefy
##MATRICES <-Son filas o columnas-todo es del mismo tipo vector1 <- c(1,2,3) vector2 <- c(4,5,6) vector3 <- c(7,8,9) matrizA <- cbind(vector1,vector2,vector3) #columna matrizB <- rbind(vector1,vector2,vector3) #fila
##DATA FRAME <- Es una tabla que combina columnas base1 <-
as.data.frame(matrizA) base1$vector1 #Tomamos con $ names(base1) <-
nombre_vectores #Podemos cambiar los nombres ##MÉTODOS #subset
#base1 <- subset(base,base$cyl > 4)
#matricial
#base1_f2 <- base[base$cyl>4,]
#dplyr library(dplyr)
#primero instalamos libreria base1_f3 <- base %>%
filter(cyl>4)
###Clase 3-R Markdown### #R Markdown es un texto donde podemos ver tablas, gráficos o ecuaciones. Podemos exportar en PDF, HTML ##Creación de documentos R Markdown.RMD ###Nos sirve para generar reportes o guias en diferentes formatos (HTML, PDF, Word).
Texto en formato Markdown para títulos, listas, tablas, etc. Resultados automáticos (gráficos, tablas, cálculos). #Crear un documento R Markdown File → New File → R Markdown. Escribe un título (ej: Guia de estudio). Escribe un autor que realiza la tarea. Elige el formato de salida inicial (ejemplo: HTML). Haz clic en OK. Automáticamente se creará un archivo con extensión .Rmd. #Estructura del archivo .Rmd ##Encabezado (al inicio, entre —)
##Texto en Markdown sintaxis simple: Título 1 (#) Título 2 (##) negrita, cursiva Listas: - item1, - item2 Tablas:
| Nombre | Edad |
|--------|------|
| Andy | 15 |
| Gus | 20 |
##Bloques de código (chunks) Para insertar código en R: {r} summary(cars) plot(cars) (Todo lo que esté dentro de estos bloques se ejecuta y muestra resultados tablas, gráficos) ## Ejecutar el documento Haz clic en el botón Knit (tejer) en la barra superior de RStudio. Elige el formato de salida (HTML, Word, PDF). Ejecutará el código y se generará el reporte.
install.packages(“rmarkdown”)
###Clase 4###
#PRIMER PASO: Cargamos la base_final.csv que encontramos en classroom #Tambien instalamos la libreria “library(dplyr)”.
#SEGUNDO PASO: Filtramos desde 1980 hasta 2024 #–> base <- base %>% –>filter(anio>=1980)
#TERCER PASO: Consideramos la función de consumo: C+B1+B2*Yd+u C= Consumo / YD=Ingreso disponible / u=término de error aleatorio #En clase lo planteamos: modelo <- lm(consumo ~ ingreso_disponible,data=base) summary(modelo) #NOTA IMPORTANTE#:B2 mide el aumento de consumo cuando YD crece en una unidad. #Es decir, si B2=0.65 por cada $1 adicional de YD, el C aumenta 0.65
#CUARTO PASO:Ahora en logaritmo representariamos asi: In(C)=B1+B2*In(YD)+u #En clase lo planteamos: base <- base %>% mutate(ln_consumo = log(consumo), ln_ingreso_disponible = log(ingreso_disponible)) modelo2 <- lm(ln_consumo ~ ln_ingreso_disponible, data = base) summary(modelo2) #NOTA IMPORTANTE#:La ventaja de usar logaritmo es que B2 ahora es #elasticidad del consumo respecto a YD #Es decir, si B2=0.8 aumenta un 1% en YD, entonces aumenta 0.8% en C.
#QUINTO PASO:En los intervalos de confianza usamos los códigos: confint(modelo) confint(modelo2) #Básicamente estos nos sirven para evaluar la precisión de las estimaciones
###En esta clase nos enfocamos en macroeconomía, pues tratamos temas como #la relación entre YD y C. COnsidero que, lo interesante es crear variables con la #base y aprender ha como plantear un modelo econometrico y un modelo lagarítmico, #y asi mismo, como los intervalos de confianza nos ayudan a validar resultados.
###Clase 5-Desempleo y el PIB### #Su módelo seria: B1 + B2*PIB +u #En R lo planteariamos: modelo_desempleo <- lm(TasaDesempleo_Porcentaje ~ PIB_MillonesUSD, data=base) #NOTA IMPORTANTE#:“B2<0” es a mayor PIB es menor desempleo #“B2>0” es a mayor PIB es mayor desempleo
#Inversión extranjera directa IED y Riesgo país #Su módelo seria: IED = B1 + B2* RP +u #En R lo planteariamos: model_ied <- lm(IED_MillonesUSD ~ RiesgoPais, data=base) #NOTA IMPORTANTE#:“B2<0”:aumento en riesgo país reducira IED
#Riesgo pais Rezagado #Planteamos rezagos de Riesgo país e IED #En R: base <- base %>% mutate(ied_rezagado1= lag(IED_MillonesUSD,n=1), rp_rezagado1 = lag(RiesgoPais,n=1), #Riesgo país anterior rp_rezagado2 = lag(RiesgoPais,n=2)) #Riesgo país de hace dos años #Corriendo: names(base) -model_ied_lag1 <- lm(IED_MillonesUSD ~ rp_rezagado1, data=base) summary(model_ied_lag1)
-model_ied_lag2 <- lm(IED_MillonesUSD ~ rp_rezagado2, data=base) summary(model_ied_lag2)
#NOTA IMPORTANTE#:Si usamos los rezagos nos ayudan a observar como una variable no reacciona # en el instante.
###Es interesante como en econometria podemos comprobar un sin fin de datos dentro de una base, #observamos como el PIB cuan mayor sea, reducira el desempleo. Tambien, el riesgo país #como involucra negativamente a IED, si este mayor riesgo, no es confiable invertir.
#Clase 6 ##Análisis de encuestas con srvyr
Aprender a: Cargar librerías y bases de datos. Variables de encuestas. Diseño muestral (estratos, UPMS, factores de expansión). Indicadores laborales como desempleo, empleo adecuado, subempleo y empleo no remunerado usando srvyr. ##Limpiamos el espacio de trabajo y cargamos librerias necesarias rm(list = ls()) # Limpia todos los objetos de la sesión # Librerías library(dplyr) # Manejo y transformación de datos library(srvyr) # Análisis de encuestas con diseño muestral library(rio) # Importación de diferentes formatos de datos library(import) # Otra alternativa para importar datos #Nota: Si alguna librería no está instalada, se usa: install.packages(“nombre_paquete”) #Cargar base de datos Ejemplo con una encuesta en formato Stata (.dta): personas <- import(‘insumos/1_BDD_ENS2018_f1_personas.dta’) #Explorar variables Valores de una variable: table(personas$dcronica_2) Esto muestra la distribución de respuestas en la variable dcronica_2. Ejemplo: calcular una proporción manualmente: dci <- 2210/(5591+2210) dci100 #Diseño muestral Cuando se trabaja con encuestas, no se pueden calcular proporciones simples. Es necesario declarar el diseño muestral con UPMS, estratos y factores de expansión: dm <- personas %>% as_survey_design( ids = upm, # Unidad primaria de muestreo strata = estrato, # Estratos de la muestra weights = fexp # Factor de expansión ) # Opción para tratar options(survey.lonely.psu = ‘certainty’) #Cálculo de indicadores (ejemplo nacional de enfermedad crónica)} #Ejemplo aplicado: ENEMDU 2025-II Trimestre #Indicadores laborales Tasa de Desempleo tasa_desempleo_nac <- dm %>% filter(p03 >= 15) %>% summarise( tasa_desempleo = survey_ratio( numerator = (condact == 7 | condact == 8), denominator = (condact %in% 1:8), vartype = c(‘se’,‘ci’) ) ) %>% #mutate(tasa_desempleo = round(tasa_desempleo100, 1))
#Tasa de Empleo Adecuado tasa_empleo_adec <- dm %>% filter(p03 >= 15) %>% summarise( tasa_empleo_adecuado = survey_ratio( numerator = (condact == 1), denominator = (condact %in% 1:8), vartype = c(‘se’,‘ci’) ) ) %>% #mutate(tasa_empleo_adecuado = round(tasa_empleo_adecuado*100, 1))
#Tasa de Subempleo tasa_subempleo_nac <- dm %>% filter(p03 >= 15) %>% summarise( tasa_subempleo = survey_ratio( numerator = (condact == 2 | condact == 3), denominator = (condact %in% 1:8), vartype = c(‘se’,‘ci’) ) ) %>% #mutate(tasa_subempleo = round(tasa_subempleo*100, 1))
#Tasa de Empleo No Remunerado tasa_empleo_norem <- dm %>% filter(p03 >= 15) %>% summarise( tasa_empleo_norem = survey_ratio( numerator = (condact == 5), denominator = (condact %in% 1:8), vartype = c(‘se’,‘ci’) ) ) %>% mutate(tasa_empleo_norem = round(tasa_empleo_norem*100, 1)) #Conclusiones srvyr permite manejar encuestas complejas respetando el diseño muestral. Se pueden replicar indicadores oficiales (INEC) directamente. El flujo de trabajo es: limpieza → diseño → indicadores.
install.packages(“tinytex”) tinytex::install_tinytex()