#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)
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
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 )
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()