Clase 1

Introduccion

Se presenta una explicación sobre la creación de objetos como escalares, vectores, matrices a los cuales se habrán dado valores concretos convirtiéndolos en datos, como tambien se explica la manipulación de las variables con operaciones matemáticas simples.

Codigo
### Limpiar la memoria

rm(list = ls())

# Escalar 

escalar <- 3

escalar2 <- 4

# Operaciones

Suma

escalar + escalar2

## Resta

escalar3 <- escalar - escalar2

## Multiplicacion

escalar4 <- escalar3 * escalar2

## Division

escalar5 <- escalar4 / escalar
  

Visualizar objetos

Para visualizaciones de datos del objeto en cuestion se debe usar el Summary

escalar5
summary(escalar5)
table(escalar5)

Vectores

En R un vector es un objeto de elementos de un mismo tipo, pueden ser numericos (num) o de caracteristica (character)

vectores1 <- c(2,1.5,4)   #Vector Num

vectores2 <- c("sara","pedro","juan")  #Vector chr

vector3 <- c(5,6,2)

prod1 <- vectores1 * escalar4

# Ubicacion

vectores1[2]
vectores2[3]
obejcto1 <- vectores2[1]
objecto2 <- vectores2[2:3]
objecto3 <- vectores2[1:2]
objecto4 <- vectores2 [c(1,3)]
objecto5 <- vectores2 [-2]

# Vectores

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

# Matriz

matriza <- cbind(vector1,vector2,vector3)
matrizb <- rbind(vector1,vector2,vector3)

Clase 2

En este capitulo presentan una guía de como usar Markdawn

  ##limpiar la memoria
  rm(list = ls())
  install.packages("rmarkdown")
library(rmarkdown) 

Introduccion a markdawn

El entorno R Markdown es un marco de creación de código abierto que permite la elaboración de documentos dinámicos y reproducibles al entrelazar texto narrativo, código ejecutable y las visualizaciones de datos resultantes en un único archivo.

Composición de un Archivo.Rmd: Los Tres Componentes Centrales

El archivo .Rmd que RStudio genera no es una página en blanco; es una plantilla útil que ilustra la estructura fundamental de cualquier documento R Markdown. Esta estructura se compone de tres tipos de contenido distintos

El Encabezado YAML

Ubicado en la parte superior del archivo, delimitado por líneas de tres guiones (---). Esta sección funciona como el panel de control del documento, donde se definen metadatos como el título, el autor y, lo más importante, el formato de salida y sus opciones.

Texto en Markdown

El cuerpo principal del documento, donde se escribe la narrativa. Este texto utiliza la sintaxis de Markdown para aplicar formato, como encabezados, negritas, listas y enlaces. Es la parte del documento destinada a ser leída por humanos.

Trozos de Código R (Code Chunks)

Bloques de código R incrustados, delimitados por tres acentos graves (`) y {r}. Aquí es donde reside la parte analítica del documento. knitr ejecutará este código y su salida (tablas, gráficos, etc.) se insertará en el documento final.

Escritura en R Markdown

Markdown es un lenguaje de marcado ligero diseñado para ser fácil de escribir y leer en su forma de texto plano.

Encabezados:

Se utilizan almohadillas (#) para crear encabezados de sección. El número de almohadillas corresponde al nivel del encabezado, desde # (nivel 1) hasta ###### (nivel 6).  

Título Principal (Nivel 1) (#)

Sección Principal (Nivel 2) (##)

Subsección (Nivel 3) (##)

  • Énfasis:

Cursiva: *texto en cursiva* o texto en cursiva.

Negrita: **texto en negrita** o texto en negrita.

Tachado: texto tachado.~~texto tachado~~

Superíndice: textosuperíndice.

Subíndice: H2O produce H2O.

  • Listas:

No ordenadas: Se pueden usar asteriscos (*), guiones (-) o signos de más (+).

  • Primer elemento

  • Segundo elemento

– Subelemento anidado

  • Ordenadas:

Se usan números seguidos de un punto. La numeración se ajusta automáticamente, por lo que se puede usar 1. para cada elemento.  

  1. Primer paso

  2. Segundo paso

  3. Tercer paso

Citas en Bloque y Reglas Horizontales:

Citas: Se usa el símbolo de mayor que (>) al principio de una línea.  

“La reproducibilidad es la piedra angular de la ciencia.”

  • Tablas:

Se puede crear tablas simples utilizando tuberías (|) y guiones. Para tablas más complejas generadas a partir de datos, es mejor usar funciones de R como

Cuando se presiona el botón Knit se generará un documento que incluye una conexión entre el código y una presentación formal literaria.

Se puede generar código como el siguiente:

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

Gráficos

Ejemplo:

plot(pressure)

Expresiones Matemáticas

R Markdown soporta ecuaciones con formato LaTeX.

  • En línea: Se encierran entre signos de dólar simples: $E = mc^2$ produce \(E = mc^2\)

  • En bloque (display): Se encierran entre signos de dólar dobles: \[\sum_{i=1}^{n} x_i\] produce

Creación de Trozos de Código

Existen tres formas sencillas de insertar un nuevo trozo de código en RStudio :

  • Atajo de teclado: Ctrl + Alt + I (en Windows/Linux) o Cmd + Option + I (en macOS).

  • Botón de la barra de herramientas: El botón “Insert” en la parte superior del editor de scripts tiene una opción para insertar un trozo de R.

  • Manualmente: Escribir los delimitadores {r} y .

Opciones Esenciales de los Trozos de Código

Las opciones de los trozos de código, colocadas dentro de las llaves ({}), proporcionan un control preciso sobre cómo se ejecuta el código y cómo se presenta su salida. Dominar estas opciones es clave para pasar de un cuaderno de análisis personal a un informe profesional pulido dirigido a una audiencia específica.

Un análisis en bruto contiene código, salidas, mensajes, advertencias y gráficos. Sin embargo, diferentes audiencias tienen diferentes necesidades. Un colaborador puede querer ver todo el proceso, mientras que un ejecutivo solo querrá ver las conclusiones y los gráficos finales. Las opciones de los trozos de código son el mecanismo que permite a un único archivo fuente .Rmd generar informes distintos y personalizados para cada uno de estos públicos.

echo=FALSE: Oculta el código fuente pero muestra su salida (gráficos, tablas). Esencial para informes dirigidos a audiencias no técnicas.

eval=FALSE: Muestra el código pero no lo ejecuta. Útil para tutoriales o para mostrar código de ejemplo.

include=FALSE: Ejecuta el código pero no incluye ni el código ni su salida en el documento final. Perfecto para trozos de configuración inicial, como la carga de paquetes o datos, que no necesitan ser visibles.

message=FALSE y warning=FALSE: Suprimen los mensajes (por ejemplo, los que aparecen al cargar paquetes) y las advertencias, respectivamente. Esto es crucial para crear un informe final limpio y sin distracciones.

error=TRUE: Permite que el documento se compile (“teja”) incluso si el código en ese trozo produce un error. El error se mostrará en el documento final. Es útil para depurar o para enseñar, mostrando deliberadamente un error.

Clase 3

Cargar base

Para cargar base se puede hacer mediante el código y la asignación de nombre a una base de datos preestablecida, para lo cual se necesita tener instalado el paquete readxl y dplyr con sus respectivas librerías readxl y dplyr, o como también se puede cargar directo de desde Import Dataset.

Codigo

 install.packages("readxl")
  library(readxl) 
  library(dplyr)
  
  #cargar base de datos 
  
  ## Cargada mediente el codigo
  
  
  ## cargada men¿diante Import Dataset
  
  library(readxl)
  
base <- read_excel("C:/Users/DAVID/Documents/calculo/PRUEBA PARCIAL/Proyecto david cruz/insumos/pib_can_anual.xlsx")

  ### cambiar nombres de variables 
  
names(base)[6] <-'agricultura'

## Reemplazar los NA con 0 
base[is.na(base)] <- 0

## Ver cuantas observaciones tengo por variable
table(base$prov)
# Nos quedamos con una provincia

library(dplyr)
base_santo <- base %>% 
    filter(dpa_prov == "23")
    
library(dplyr)
base_manabi <- base %>% 
  filter( dpa_prov== "13")

### Quedarme solo con las variables necesarias
names(base_manabi)

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)

# 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

##limpiar la memoria
  rm(list = ls())
  
  ##Cargar base 
  
library(readxl)
base_final <- read_excel("C:/Users/DAVID/Documents/calculo/PRUEBA PARCIAL/Proyecto david cruz/insumos/base_final.xlsx")
View(base_final)

  ###librerias
  
  library(dplyr)
  
  #desde 1980 hasta 2024 
  
  base<- 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
  modelo <-lm(consumo~ ingreso_disponible,data=base)
  
  
  ###modelo econometrico 
  
  ## c =B1+B2*YD +u
  
  opctions=99
  
  modelo <-lm(consumo ~ ingreso_disponible,data=base)
  
  summary(modelo)
  
  ##intervalos de confianza 
  
  ## creamos varibales logaritmicas 
  
  #creamos variables logaritmicas
  base <- base  %>% 
    mutate(ln_consumo = log(consumo),
           ln_ingreso_disponible = log(ingreso_disponible))
  modelo2 <- lm (ln_consumo ~ ln_ingreso_disponible,data = base)
  summary (modelo2)
  confint(modelo)
  confint(modelo2)

  

Clase 5

  rm(list=ls())
  library(readxl)
base <- read_excel("C:/Users/DAVID/Documents/calculo/PRUEBA PARCIAL/Proyecto david cruz/insumos/datos_ecuador.xlsx")
View(datos_ecuador)
  
  # 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; inversion extrangera directa b1+b2*rp+u
  
  names(base)
  modelo_ied <- lm(IED_MillonesUSD ~ RiesgoPais, data = base)
  summary(modelo_ied)  
  
### creamos el riesgo pais rezagado
  
  library(dplyr)
  base<-base %>% 
    mutate(ied_rezagado1=lag(IED_MillonesUSD, n=1),
           rp_rezagado1=lag(RiesgoPais, n=2),
           rp_rezagado2=lag(RiesgoPais, n=2))
  
  
  #modelorezagado#
  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())
#Librerias
library(dplyr)
#install.packages('srvyr')
library(srvyr)
#install.packages('rio')
library(rio)
#install.packages('import')
library(import)

#Cargamos la base de datos
library(haven)
library(readxl)
personas <- read_dta("C:/Users/DAVID/Documents/calculo/PRUEBA PARCIAL/Proyecto david cruz/insumos/1_BDD_ENS2018_f1_personas.dta")

###identificamos la variable 
table(personas$dcronica_2)

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


##### Trabajando con muiestras 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 las observaciones sean unicas e individuales


library(readxl)
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))


# ENEMDU II TRIMESTRE 2025
rm(list = ls())
library(dplyr)
library(srvyr)
library(rio)
#installed.packages('haven')
library(haven)

library(readxl)
df <- read.csv2("C:/Users/DAVID/Documents/calculo/PRUEBA PARCIAL/Proyecto david cruz/insumos/enemdu_persona_2025_II_trimestre.csv")

### Declaracion del disenio muestral
dm <- df %>% 
  as_survey_design(ids=upm,   #unidad primaria de muestreo
                   strata=estrato, #estrato
                   weights = fexp) #f



#### Replicar indicadores

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


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




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


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