#Clase Nro1 y Nro2 ##Introduccion a R: Clase objetos, vectores, matrices

#“rm(list = ls())” <- Codigo 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 basicas: ##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 <- mtcars[mtcars$cyl>4,]

#dplyr library(dplyr) #primero instalamos libreria base1_f3 <- base %>% filter(cyl>4)

#Clase Nro3 ##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:

summary(cars)
##      speed           dist       
##  Min.   : 4.0   Min.   :  2.00  
##  1st Qu.:12.0   1st Qu.: 26.00  
##  Median :15.0   Median : 36.00  
##  Mean   :15.4   Mean   : 42.98  
##  3rd Qu.:19.0   3rd Qu.: 56.00  
##  Max.   :25.0   Max.   :120.00
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.

###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) dci*100

#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)} prev_nac_dci2 <- dm %>% summarise( survey_mean(dcronica_2, vartype = c(‘se’,‘cv’), na.rm = TRUE), n_muestra = sum(!is.na(dcronica_2)) ) %>% mutate(dominio = “Nacional”) %>% select(dominio, porcentaje = coef, se = _se, cv = _cv, n_muestra) %>% mutate(porcentaje = round((porcentaje*100), 1))

Aquí:

survey_mean() → estima la media ponderada.

vartype → pide error estándar (se) y coeficiente de variación (cv).

mutate → ajusta variables y redondea resultados.

#Ejemplo aplicado: ENEMDU 2025-II Trimestre df <- read.csv2(‘insumos/enemdu_persona_2025_II_trimestre.csv’) df2 <- read.csv(‘insumos/enemdu_persona_2025_II_trimestre.csv’, sep = ‘;’)

Declaración del diseño muestral:

dm <- df %>% 

as_survey_design( ids = upm, strata = estrato, weights = fexp ) #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_desempleo*100, 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()