R Markdown

title: “Guia de Estudio - Mishel Calapaqui” author: “Mishel Calapaqui” date: ” 2025-10-02`” output: pdf_document: toc: true number_sections: true html_document: toc: true toc_float: true theme: united dfprint: kable

CLASE 1


rm(list = ls())

utilizar siempre minusculas, sin tildes, ni con caracteres especiales


  # <- simbolo para asignacion 

teclado en idioma original (ingles)

creacion de objetos 

ejecutar codigo (alt+enter)

nombre de variables: escalar 

(.) separa los decimales 
(,) separa los objetos

NUMEROS

 numero en R son tratados como objetos numericos con dobele presicion
en R cuando se escribe (4) R lo guarda como NUMERICO O NUMERIC, o sea en un NUMERO REAL CON DOBLEPRESICON

Ejemplo x <- 4 typeof(x)

Si quieres que R lo guarde especificamente como entero (integer), de debe poner la letra L despues del numero y <- 4L typeof(y)


En R existe el valor especial (Inf) que representa (infinito) se utiliza el signo (/)
10/0

-10/0

El valor de NaN representa un valor no definido (not a number) 0/0 Inf - Inf*

#Se puede acceder a los atributos de un objeto con la función 
attributes()

Variables

escalar1 <- 3
escalar2 <- 4

operaciones


escalar1 + escalar2
escalar3 <- escalar1 + escalar2
escalar4 <- escalar3 * escalar2
escalar5 <- escalar4 / escalar1
escalar5
summary(escalar5)
table(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

vectores


(Casi) todo en R es un objeto
• El objeto más básico en R es un vector
• Vector: Colección ordenada elementos del mismo tipo.
vect1 <- c(2,1.5,4) #este es un vector numerico 
vect2 <- c("Juan", "Pedro", "Sara") #este es un vector de caracteres 
vect3 <- c(5,6,2)
prd1 <- vect1 * escalar4
prd1

ubicacion



se utiliza esto para saber donde esta cada uno de los vectores 
vect1 [2]
vect2 [3]
objeto1 <- vect3 [1]
objeto2 <- vect2 [2:3]
objeto3 <- vect2 [1:2]
objeto4 <- vect2 [c(1,3)]
objeto4_f2 <- vect2 [-2] #este es un codigo mas corto en el que solo se elimina un vector y los otros salen en la consola 

matrices

vector1 <- c(1,2,3)
vector2 <- c(4,5,6)
vector3 <- c(7,8,9)
matrizA <- cbind(vector1, vector2, vector3)
matrizA #la matriz esta en el orden de 1, 4, 7,......
matrizB <- rbind(vector1, vector2, vect3)
matrizB #la matriz esta en el orden de 1, 2, 3,......
matrizA [,] #codigo corto en que se puede saber com oesta la matriz de A
vectorA <- matrizA [1,2:3]
vectorA

vectorB <- matrizA [3,]
vectorB

vectorC <- matrizB [1:3,2]
vectorC

vectorD <- matrizB [-2,1]
vectorD

base de datos (dataframe)


base1 <- as.data.frame(matrizA)
base2 <- as.data.frame(matrizB)
base1$vector1

cambiar de nombre las variables

nombre_vectores <- c('variable1', 'variable2', 'variable3')
names(base1) <- nombre_vectores

filtros

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

vehiculos con mas de cuatro cilindros


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

base1_f2 <- base[base%cyl>4]
install.packages('dplyr')
library(dplyr)
base_f3 <- base %>%
  filter(cyl>4)
library(wooldridge)
segundo filtro
#vehiculo con 4 cilindros o mas 
base1 <- subset(base,base$cyl >= 4)

tercer filtro 
##vehiculo con menos de 4 cilindros o mas de 6 cilindros 

base3_f1 <- subset(base,base$cyl<4 | base$cyl>6 )
base3 <- base[base$cyl<4 | base$cyl>6,]
base3_f3 <- base %>%
  filter(cyl<4 | cyl>6)

####vehiculos con un numero de cilindors entre 4 y 6 
### (4:6)
base4_f1 <- subset(base, base$cyl>4 & base$cyl<6)
base4_f2 <- base[base$cyl>4 & base$cyl<6,]
base4_f3 <- base %>%
  filter(cyl>4 & cyl<6)

##
base3 <- base[base$cyl<4 | base$cyl>6,]
#promedio mean()
mean(base3$wt)
[1] 3.999214
###

base3_f1 <- subset(base,base$hp<100 | base$hp>200)
base3 <- base[base$hp<100 | base$hp>200,]
base4_f3 <- base %>%
  filter(hp>100 & hp<200)
base3 <- base[base$hp<100 | base$hp>200,]
mean(base3$mpg)

[1] 20.9625

intalar el paquete rmarkdown

install.packages('rmarkdown')
library(rmarkdown)

creacion de objetos

##escalares

Es la represtancion mas siemple de un numero real (R^1$)
escalar1<-3
escalar2 <- 4

creacion de objetos

Antes de la ejecucion de codigo necesitamos cargar las librerias ```

``` r
library (dplyr)
sumary(carst)ds
library(readxl)

CLASE 2


UTILIZACION DE R MARKDOWN

R Markdown se utiliza para crear documentos que combinan texto, código R, resultados de análisis, imágenes y gráficos en un solo archivo reproducible. Su principal utilidad es generar informes dinámicos, artículos, presentaciones, sitios web o incluso libros que se pueden exportar a formatos como HTML, PDF y Word. Permite documentar el trabajo, compartir resultados con públicos técnicos y no técnicos, y facilita la colaboración al hacer el análisis y el código totalmente reproducibles. 

CLASE 3

rm(list =ls())

librerias

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

cargar base de datos

library(readxl)
 base <- read_excel("insumos1/pib_can_anual.xlsx")

Cambiar de nombre a variables

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

Reemplazar los NA con 0

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

Ver cuantas observaciones tengo por variable

table(base$prov)

AZUAY          BOLÍVAR            CAÑAR           CARCHI 
            150               70               70               60 
     CHIMBORAZO         COTOPAXI           EL ORO       ESMERALDAS 
            100               70              140               71 
      GALÁPAGOS           GUAYAS         IMBABURA             LOJA 
             30              250               60              160 
       LOS RÍOS           MANABÍ  MORONA SANTIAGO             NAPO 
            130              220              120               50 
       ORELLANA          PASTAZA        PICHINCHA      SANTA ELENA 
             40               40               80               30 
  SANTO DOMINGO        SUCUMBÍOS       TUNGURAHUA ZAMORA CHINCHIPE 
             19               70               90               90 

Nos quedamos con una provincia


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

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

Quedarme solo con las variables necesarias

names(base_manabi)
1] "year"                                     
[2] "prov"                                     
[3] "dpa_prov"                                 
[4] "canton"                                   
[5] "dpa_can"                                  
[6] "agricultura"                              
[7] "Explotacion de minas y canteras"          
[8] "Manufactura\n\n"                          
[9] "Suministro de electricidad y de agua"     
[10] "Construccion\n\n"                         
[11] "comercio\n\n"                             
[12] "Alojamiento y servicios de comida"        
[13] "Transporte, informacion y comunicaciones" 
[14] "Actividades financieras\n"                
[15] "Actividades profesionales e inmobiliarias"
[16] "Administracion publica \n"                
[17] "Enseñanza\n\n"                            
[18] "Salud\n\n"                                
[19] "Otros servicios\n\n"                      
[20] "...20"       

base_manabi1 <- base_manabi   %>% 
  select(year,prov,dpa_prov,canton,dpa_can,agricultura,"Explotacion de minas y canteras")
  
  

VIsta resumen de una variables

summary(base_manabi1$agricultura)

#Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
   80.46   4888.18  11260.08  29351.06  38616.46 234997.81 
 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 las bases por periodo

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_post_agg <- base_manabi_post %>% 
  group_by(canton) %>% 
  summarise(total_agricultura_post=sum(agricultura)) 
  
*CLASE 4*
rm(list= ls())
library(readr)
base<- read_csv("insumos1/base_final - base_final.csv")
base_final_base_final <- read_csv("insumos1/base_final - base_final.csv")
View(base_final_base_final)

librerias


library(dplyr)

desde 1980 hasta 2024


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

creamos una variable nueva


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*YD +u
options(scipen = 999)

* B2 :En el incremento en 1$ el ingreso disponible en promedio el consumo aumenta*

El resultado queda en 0,68 centavos manteniendo lo demas constante

*creamos variables logaritmicas*

Residuals:
      Min        1Q    Median        3Q       Max 
-0.113225 -0.021156  0.005125  0.031844  0.124035 

Coefficients:
                      Estimate Std. Error t value
(Intercept)            6.70498    0.45862   14.62
ln_ingreso_disponible  0.72715    0.01852   39.26
                                 Pr(>|t|)    
(Intercept)           <0.0000000000000002 ***
ln_ingreso_disponible <0.0000000000000002 ***

CLASE 5

rm(list = ls())

base <- read.csv('insumos/datos_ecuador.xlsx')
base <- datos_ecuador <- read_excel("C:/Users/MEGAPC/OneDrive/Downloads/Curso en R/insumos/datos_ecuador.xlsx")

Modelo : desempleo = B1 + B2 *PIB + u*
#como influye el pib en el desempleo 
names(base)
modelo_desempleo <- lm(TasaDesempleo_Porcentaje ~ PIB_MillonesUSD, data = base) #primera forma
modelo_desempleo2 <- lm(base$TasaDesempleo_Porcentaje ~ base$PIB_MillonesUSD) #segunda forma

options(scipen = 999)

summary(modelo_desempleo)
summary(modelo_desempleo2)

modelo : IED = B1 + B2 RP + u*

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

Cremos el riesgo pais resagado

library(dplyr)

base <- base %>%
  mutate(ied_rezagado1 = lag(IED_MillonesUSD, n= 1)
rp_rezagado1 = lag("RiesgoPais", n=1)

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)

CLASE 6

rm(list = ls())

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

cargamos datos

library(haven)
personas <- read_dta("insumos1/1_BDD_ENS2018_f1_personas.dta")
View(X1_BDD_ENS2018_f1_personas)

identificamos la variable

table(personas$dcronica_2)
 0    1 
5591 2210

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

[1] 28.3297

trabajando con muestras oficiales

dm<- personas %>% 
  as_survey_design(ids=upm,   #unidad primaria de muestreo
                   strata=estrato,  #estrato
                   weights = fexp)  # factor de expansion
options(survey.lonely.psu = 'certainty') # forzando a que el muestreo sea igual

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

ENEMU II TRIMESTRE 2025


rm(list = ls())
library(dplyr)
library(srvyr)
library(rio)

cargamos la base de datos


library(readr)
df<- read.csv2('insumos1/enemdu_persona_2025_II_trimestre.csv')
df2 <- read.csv('insumos1/enemdu_persona_2025_II_trimestre.csv',sep = ';')

Declaracion del diseño muestral

dm <- df %>% 
  as_survey_design(ids=upm,   #unidad primaria de muestreo
                   strata=estrato, #estrato
                   weights = fexp) #f
#### Replicar indicadores
#installed.packages('haven')
library(haven)
#installed.packages('tidyverse')
library(tidyverse)


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

TASA DE EMPLEO ADECUADO

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

TASA DE SUBEMPLEO


tasa_subempleo_nac<- dm %>% 
  filter(p03>=15) %>% 
  summarise(
    tasa_subempleo_nac= survey_ratio(
      numerator=( condact == 2,condact == 3)
      denominator=(condact %in% 1:8),
      vartype = c('se','ci')
    ) 
  ) %>% 
  mutate(tasa_subempleo_nac = round((tasa_subempleo_nac*100),digits = 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),digits = 1))