R Markdown

title: “Guía de estudio - Soledad Quishpe” author: “Soledad Quishpe” date: “2025-10-02” output: pdf_document: toc: true number_sections: true html_document: toc: true toc_float: true number_sections: true theme: united dfprint: kable

Creación de objetos

Antes de la ejecución de codigo necesitamos cargar las librerias

library("dplyr")
summary(cars)
library("readxl")

Escalares

Es la representación mas simple de un número real(\(R^n\))

escalar1 <-3
escalar2 <-4

escalar1 <-3 escalar2 <-4

Operaciones

El motor de programación R puede servir como calculadora.\(\beta_2\)

escalar1 + escalar2
## [1] 7
escalar3 <- escalar1 + escalar2
escalar4 <- escalar3 * escalar2
escalar5 <- escalar4 / escalar1

Visualizar Objetos.- Para vizualizar los objetos solo corremos el siguiente script

escalar5
## [1] 9.333333
summary(escalar5)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   9.333   9.333   9.333   9.333   9.333   9.333
table(escalar5)
## escalar5
## 9.33333333333333 
##                1

Vectores.- Es una estructura de datos sencilla, es la coleccion de uno o mas datos del mismo tipo.

vect1 <- c(2,1.5,4)
vect2 <- c("Juan","Pedro","Sara")
prd1 <- vect1 * escalar1

Ubicación

vect1[2]
## [1] 1.5
vect2[3]
## [1] "Sara"
objeto1 <- vect2[1]
objeto2 <- vect2[2:3]
objeto3 <- vect2[1:2]
objeto4 <- vect2[c(1,3)]
objeto4_f2 <- vect2[-2]

Matrices

vector1 <- c(1,2,3)
vector2 <- c(4,5,6)
vector3 <- c(7,8,9)
matrizA <- cbind(vector1, vector2, vector3)
matrizB <- rbind(vector1, vector2, vector3)
matrizB
##         [,1] [,2] [,3]
## vector1    1    2    3
## vector2    4    5    6
## vector3    7    8    9
matrizA
##      vector1 vector2 vector3
## [1,]       1       4       7
## [2,]       2       5       8
## [3,]       3       6       9
vectorA <- matrizA[1, 2:3]
vectorB <- matrizA[3,]
vectorC <- matrizB[1:3,2]
vectorD <- matrizB[c(1,3), 1]
vectorD <- matrizB[-2,1]

Base de datos (data frame)

base <- as. data. frame(matrizA) base2 <- as. data. frame(matrizB)

Ingresar objetos

base1$vector1

Cambiar de nombre de variable

nombre_vectores <- c(“variable1”, “variabe2”, “variable3”) names(base1) <- nombre_vectores

Cargar base de datos interna

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

Ejercicio Practico.

mtcars
##                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
## Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
## Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
## Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
## Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
## Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
## Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
## Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
## Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
## Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
## Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
## Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
## Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
## Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
## Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
## Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
## Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
## Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
## AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
## Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
## Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
## Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
## Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
## Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
## Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
## Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
## Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
## Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2

#Filtros ##Vehículos de mas de 4 cilind.- Existen dos formas para el análisis.

Forma1

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

Forma2

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

Forma3(dplyr)

install.packages("Rtools ")
install.packages("dplyr")
library("dplyr")

base1_f3 base %>%
  filter(cyl>4)
library("wooldridge")

Segundo filtro

base2 <- subset(base,base$cyl >= 4)

Tercer filtro

Vehiculos con menos de 4 o mas de 6 cilindos

base1_f3 <- base %>% filter(cyl>4)

Vehicuos con numero de cilindros entre 4 y 6

base4_f1 <-subset(base,base$cyl>4 & base$cyl<6)

Promedio

mean(base4_f1$mpg)
## [1] NaN

MARKDOWN.- esta herramienta nos permite trabajar tanto la teoría como la practica, como la construccion y presentación formal de los resultados de nuestros análisis estadisticos.

#install.packages(“rmarkdown”) library(rmarkdown)

install.packages("rmarkdown")
library(rmarkdown)

Cambio de nombre de variables

names(base)[6] <- "Agricultura"

Para reemplazar los NA con 0

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

Ver cuantas observaciones por variable

table(base$prov)
## < table of extent 0 >
table(base$year)
## < table of extent 0 >

Elejimos una sola provincia

base_santo <- base %>%  
  filter(dpa_prov =="23")  
base_manabi <- base %>%  
 filter(dpa_prov =="13")
 base_manabi1 <- base_manabi %>% 
   select(year,prov,canton,dpa_can,Agricultura,'Explotacion de minas y canteras')

Vista resumen de una variable

 summary(base_manabi1$Agricultura)

###Valor limite 29351.06 ###Eliminar ultima variable

 base_manabi1 <- base_manabi1[,-7]

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”))

Dividamos la base de datos

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

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

##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_pre_agg <- base_manabi_post %>% group_by(canton) %>% summarise(total_Agricultura_post= sum(Agricultura))

Carga base de datos fromatos EXcel, Csv y otros.

Empezamos siempre borrando y limpiando todas las ventanas.

rm(list = ls())
install.packages("readxl")
library(readxl)
library(dplyr)
base_datos <- read_excel("insumos/pib_can_anual_xlsx")
base_datos

##Si existe un documento en csv antes descargar libreria para archivo csv

base <- read.csv('base_final.cvs 2.csv')

Regresion lineal

Filtramos los datos

desde 1980 hasta 2024

base <- base_final %>% 
  filter(anio>=1980)

Creamos una nueva variable

Primera forma

ingreso_disponible <- base$pib-base$impuestos
 
base$ingreso_disponible <- base$pib-base$impuestos

Segunda forma

base <- base %>% 
  mutate(ingreso_disponible2=pib-impuestos)

Modelo econometrico

C= B1 + B2 + U

  • Primero modificar notación cientifica.

options(scipen = 999)

  • Luego codigo para el modelo.

modelo <- lm(consumo ~ ingreso_disponible, data = base) summary(modelo)

Intervalos de confianza

confint(modelo$coefficients, level = 0,95)

Creamos variables logaritmicas

base<- base %>% 
  mutate(ln_consumo = log(consumo),
         ln_ingreso_dispponible = log(ingreso_disponible))

modelo2 <- lm(ln_consumo ~ ln_ingreso_dispponible, data = base)

confint(modelo)
confint(modelo2)

Base de datos CSV.

install.packages("csv")

library(readxl)
library(dplyr)
library(csv)
base <- read.csv ("insumos/datos_ecuador1.csv")

Modelo: desempleo = B1 + B2*PIB + U

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

Modelo: iED = B1 + B2* RP +U

names(base)
modelo_ied <- lm(IED_MillonesUSD ~ RiesgoPais, data =base)

Creamos el riesgo pais Rezagado

base <- (ied_rezagado = log(IED_MillonesUSD, n=1))
mutate_(ied_rezagado1= log(IED_Millones))

Modelo rezagado

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)

Base Enendu

-Ahora trabajaremos con una base Enendu en la que realizaremos varios análisis e identificaremos variables, este tipo de bases son elaboradas por el INEC.

Empezamos installando paquetes y librerias.

library(dplyr)
library(srvyr)
library(rio)
install.packages("import")
library(import)

Cargar la base de datos.

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

Identificamos la variable.

table(personas$dcronica_2)
dci <- 2210/(5591+2210)
dci*100

Trabajar con Muestras Oficiales.

dm <- personas %>% as_survey_design(ids = upm, #unidad primaria de muestreo strata = estrato, #estrato weights = fexp) #factorde expansion

Para forzar a que las observaciones sean unicas.

options(survey.lonely.psu = 'certainty')

Tabla Nacional.

prev_nac_dci2 <- dm %>% summarise(survey_mean(dcronica_2, vartype = c(‘se’,‘cv’),na.rm = T), 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))#tpara true y F para false

Enendu segundo trimestre 2025.

rm(list = ls())
library(dplyr)
library(srvyr)
library(rio)
library(import)
library(csv)
df <- read.csv2('insumos/enemdu_persona_2025_II_trimestre.csv') 

Replicar los indicadores

##installed.packages(‘tidyverse’)

installed.packages("haven")    
library(haven)
install.packages("tidyverse")
library(tidyverse)

Declaración del diseño muestral

dm <- df %>% as_survey_design(ids = upm, strata=estrato, weights=fexp)

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

print(tasa_desempleo_nac) tasa_desempleo_nac\(tasa_desempleo <- round((tasa_desempleo_nac\)tasa_desempleo*100), digits =1 )

Tasa empleo adecuado

tasa_desempleo <- 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))

Subempleo

tasa_subempleo <- 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))

Tasa de empleo no remunrado

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