1 Introducción a R Markdown

R Markdown es una herramienta que combina texto + códigos + resultados, en donde se puede ejecutar. Es nuy útilen el ámbito academico y profesional, permitiendo presentar trabajosen formato APA en pocos pasos.

1.1 Creación de objetos

1.2 Escalares

“Un escalar es la representación básica de un numero real”. En este espacio, hemos realizado operaciones simples con numeros reales o escalares usando códigos en rstudio.

rm(list=ls())

escalar1 <- 3

escalar2 <- 4

escalar1+escalar2

escalar3 <- escalar1+escalar2

escalar4 <- escalar3*escalar2

escalar5 <- escalar4/escalar1

1.3 Vectores

Un vector es un arreglo ordenado de elementos en el cuál puede guardar cualquier tipo de información, como datos de una población.

1.3.1 Realizamos operaciones con vectores y escalares.

vec1 <- c(1.5,4)
vec2 <- c("juan","pedro","sara")
vec3 <- c(5,6,8)
producto1 <- vec1*escalar1

vec1[1]

## [1] 1.5

vec2[3]

## [1] "sara"

objeto1 <- c(vec1[1])

objeto2 <- c(vec2[2:3])

objeto3 <- c(vec2[1:3])

vector1 <- c(4,5,6)
vector2 <- c(9,3,7)
vector3 <- c(2,4,8)

2 Matrices

Una matriz es un arreglo estructural de datos bidimensional que guarda información de toda índole.

2.1 Creación de matrices a partir de vectores

matA <- cbind(vector1,vector2,vector3)

matB <- rbind(vector1,vector2,vector3)

vecA <- matA[1,2:3]

vecB <- matA[3,]

vecC <- matB[1:3,2]

vecD <- matB[c(1,2),2]

3 Usando la base de datos mtcars

3.1 Cargar base de datos mtcars

rm(list=ls())
base <- mtcars

3.1.1 Filtros de tres formas distintas

Vehículos con más de 4 cilindros

3.1.2 Forma subset

base1_f1 <- subset(base,base$cyl > 4)

3.1.3 Forma matricial

base1_f2 <- base[base$cyl>4,]

3.1.4 Forma dplyr

#install.packages('dplyr')
library(dplyr)
base1_f3 <- base %>%  
  filter(cyl>4)

4 Analisis del PIB caantonal del Ecuador

4.1 Limpiar memoria

rm(list = ls())

4.1.1 Instalar Librerías

##install.packages('readxl')
library(readxl)
library(dplyr)

4.1.2 Cargar bases de datos

base <- read_excel('insumos/pib_can_anual.xlsx')

4.1.3 Cambiar de nombre de variables

names(base)[6] <-'agricultura'

4.1.4 Reemplazamos los NA con 0

base[is.na(base)] <- 0

4.1.5 Ver cuantas observaciones tengo por variable

table(base$prov)

4.2 Filtro por provincia

4.2.1 Nos quedamos con una provincia

base_santo <- base %>% 
  filter(dpa_prov == "23")

base_manabi <- base %>% 
  filter(prov== "MANABÍ")

4.2.2 Filtrar solo con las variables necesarias

names(base_manabi)

base_manabi1 <- base_manabi %>% 
  select(year,prov,dpa_prov,canton,dpa_can,agricultura)

4.2.3 Vista resumen de una variables

summary(base_manabi1$agricultura)

4.2.4 Valor límite 29351.06

4.3 Crear nueva variable dicotoma (mutate)

base_manabi1 <- base_manabi1 %>% 
  mutate(tipo_pib= ifelse(agricultura > 29351,"pib_alto","pib_bajo"))

base_manabi1 <- base_manabi1 %>% 
  mutate(tipo= ifelse(agricultura>29351,1,0))

base_manabi1<- base_manabi1 %>% 
  mutate(periodo= ifelse(year < 2016,"pre", "post"))

4.3.1 Dividimos las bases por periodo

base_manabi_pre <- base_manabi1 %>% 
  filter(periodo=="pre")

base_manabi_post <- base_manabi1 %>% 
  filter(periodo=="post")

4.3.2 Sumar el PIB de agricultura por canton

b_m_pre_agg <- base_manabi_pre %>% 
  group_by(canton) %>% 
  summarise(total_agricultura_pre=sum(agricultura))

b_m_post_agg <- base_manabi_post %>% 
  group_by(canton) %>% 
  summarise(total_agricultura_post=sum(agricultura))

5 Calculo de indicadores

5.1 Limpiar memoria

rm(list=ls())

5.1.1 Instalamos la librería

## Install.packages(readxl)
library(readxl)
library(dplyr)

5.1.2 Cargamos la base de datos correspondiente

base_1 <- read_excel('insumos/base_final.xlsx')
options(scipen=999)

5.1.3 Filtramos datos Desde 1980 hasta 2024

base_1_filtrado <- base_1 %>% 
  filter(anio>= 1980,)

5.2 Creamos nueva variable

5.2.1 Forma 1

base_1_filtrado$ingreso_disponible <- (base_1_filtrado$pib-base_1_filtrado$impuestos)

5.2.2 Forma 2

base_1_filtrado <- base_1_filtrado %>%
  mutate(ingreso_disponible_1=pib-impuestos)

5.3 Modelo Econometrico C = B1 + B2*YD + u

modelo_1 <- lm(consumo~ingreso_disponible, data=base_1_filtrado)
summary(modelo_1)

5.3.1 Intervalos de confianza

confint(modelo_1)

5.3.2 Crear variables logaritmicos

base_1_filtrado <- base_1_filtrado %>% 
  mutate(ln_consumo = log(consumo),
         ln_ingreso_disponible = log(ingreso_disponible))
modelo_2 <- lm(ln_consumo~ln_ingreso_disponible, data=base_1_filtrado)
summary(modelo_2)
confint(modelo_2)

6 Analizamos la relación entre la tasa de empleo respecto del PIB

6.1 Limpiamos la memoria

rm(list=ls())

6.1.1 Instalamos las librerías y cargamos datos

library(readr)
base <- read.csv("insumos/datos_ecuador.csv")

6.1.2 Creamos el siguiente modelo: Desempleo = B1 + B2*PIB + u

modelo_desempleo <- lm(TasaDesempleo_Porcentaje ~ PIB_MillonesUSD, data = base)
summary(modelo_desempleo)

6.1.3 Interpretación de B2

  • Desempleo = 8,372 - 0,00010715*PIB

  • Ante un incremento en mil millones del PIB, disminuye el desempleo en promedio en 0,00010715 puntos porcentuales.

6.1.4 Creamos un nuevo modelo

IED_MillonesUSD = B1 + B2RiesgoPais+ u Inversión extranjera directa en funcion del riesgo país.

modelo_2 <- lm(IED_MillonesUSD ~ RiesgoPais, data = base  )
summary(modelo_2)

6.1.5 Modelo rezagado

Es un modelo que puede tomar valores pasados, tanto las variables dependientes como las independientes.

  • Creamos riesgo pais resagado
library(dplyr)
base <- base %>% 
  mutate (ied_rezagado1 = IED_MillonesUSD, n = 1,rp_rezagado1 = RiesgoPais, n=1)
  • Modelo rezagado
names(base)

modelo_ied_lag1 <- lm(IED_MillonesUSD ~ rp_rezagado1, data = base)
summary(modelo_ied_lag1)

7 Prueba clase 5

7.1 Pregunta 1

rm(list=ls())
base <- read.csv("insumos/datos_ecuador.csv")
base1_filtrado <- base %>% 
  filter(anio>=2015, anio<=2023,)
names(base)

modelo_1 <- lm(TasaDesempleo_Porcentaje ~ PIB_MillonesUSD, data= base1_filtrado )
summary(modelo_1)

7.2 Pregunta 2

base_2_filtrada <- base %>% 
  filter(anio> 2015, anio< 2023)

base_2_filtrada <- base_2_filtrada %>% 
  mutate(ln_PIB_MillonesUSD = log(PIB_MillonesUSD))

modelo_2 <- lm(TasaDesempleo_Porcentaje ~ ln_PIB_MillonesUSD, data = base_2_filtrada )
summary(modelo_2)

8 Manejo de encuestas

8.1 Instalar librerías

rm(list=ls())
library("dplyr")
#install.packages("srvyr")
library("srvyr")
#install.packages("rio")
library("rio")
#install.packages("import")
library("import")

8.1.1 Cargar base de datos

personas <- import("insumos/1_BDD_ENS2018_f1_personas.dta")

table(personas$dcronica_2)

dci <- 2210/(5591+2210)*100
dci

8.1.2 Trabajando con muestras oficiales

dm <- personas %>% 
  as_survey_design(ids = upm,   ## Unidad primaria de muestreo
                   strata=estrato,  ## estrato
                   weights = fexp)  # Factor de expansión 

8.1.3 Forzando a que sean unicos las observaciones

options(survey.lonely.psu = "certainly") 

8.1.4 Calculando la prevalencia nacional de dcronica(desnutrición 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),digits=1))

9 Trabajamos con base de datos de ENEMDU II trimestre 2025

rm(list = ls())

library("dplyr")  
library("srvyr")
library("rio")

df <- read.csv2("insumos/enemdu_persona_2025_II_trimestre.csv")

9.1 Declaración del diseño muestral

dm <- df %>% 
  as_survey_design(ids = upm,   ## Unidad primaria de muestreo
                   strata=estrato,  ## estrato
                   weights = fexp)  # Factor de expansión

9.1.1 Replicamos los indicadores de ENEMDU

library("dplyr")
#install.packages("haven")
library("haven")
#install.packages("tidyverse")
library("tidyverse")

9.1.2 TASA DE DESEMPLEO NACIONAL

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),digits = 1))

9.1.3 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),digits = 1))

9.1.4 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),digits = 1))

9.1.5 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),digits=1))

10 Agradecimientos

Fueron dos semanas enriquecedoras de aprendizaje y conocimientos, fue un gran aporte de parte de los docentes. Por más oportunidades así en el futuro.

Muchas gracias Msc. Pablo Gaibor