1 MANEJO DE DATOS EN R

1.1 INTRODUCCIÓN

El objetivo de este informe es proporcionar y demostrar los avances aprendidos durante el curso presencial de econometria,incluyendo ejercicios, pruebas realizadas durante ello. # CONTENIDO # CREACIÓN DE OBJETOS ## Escalar En primera instancia, se procede a eliminar la memoria del entorno del programa R, con el código rm(list=ls()), considerando que permite comenzar el análisis sin bases o datos almacenados. Antes de la ejecución del código se deben cargar las librerias necesarias, con el fin de proporcionar la funcionalidad de los codigos. en entiende por escalar a la representación más simple de un número real (\(R^n\)) r elevado a la uno. A continuación se presenta el código. Para asignar un número a cada escalar se utilizara el signo mayor acompañado de un guión medio (<-).

rm(list=ls())

library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.3
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(readxl)
## Warning: package 'readxl' was built under R version 4.4.3
escalar1<-3
escalar2<-4

1.1.1 Operaciones

El programa RStudio puede servir como una calculadora, considerando que permite realizar operaciones como suma, resta, divisiones, multiplicaciones etc. Como de observa en el código primero se realizó una suma entre los escalares 1 y 2. Se asigna al escalar3 el resultado de la adición del escalar1 y escalar2 y asi susesivamente con las diversas operaciones demostradas en el código. La función summary() genera un resumen estadístico o descriptivo al resultado de los datos o variables proporcionadas. Se aplica la función table() para elaborar tablas de frecuencia con variables que se obtenga dentro de una base de datos.

escalar1 + escalar2
## [1] 7
escalar3 <- escalar1 + escalar2
escalar3<-escalar1+escalar2

escalar4 <- escalar3 * escalar2
escalar5 <- escalar4/escalar1
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

1.1.1.1 Vectores

Un vector es la estructura homogenia de elementos del mismo tipo, pueden ser numericos, caracteres, colores entre otros, son unidimensionales al organizarse en una fila o columna.

vector1<-c(2,1.5,4)
vector2<-c("juan","pedro","sara")
vector3<-c(5,6,2)
producto1<- vector1*escalar4
producto1
## [1]  56  42 112

1.1.1.2 Filtro a posiciones especificas de algun elemento de un vector

R permite extraer uno o varios elementos,de acuerdo a su posición dentro de un vector mediante índices, además facilita el almacenamiento de algun elemento o a su vez excluirlo con el signo negativo como se puede observar en el objeto 4, o a su vez se puede analizar que en el objeto4 se utiliza la función (c) de concatenar o unir vectores considerando que se requiere la posición 1 y 3 del vector 2. En el objeto1 almacena el primer elemento del vector 3, el objeto2 contiene al segundo y tercer elemento del vector 2. Adicional, los corchetes [] se utilizan para accerder a la ubicación de un elemento dentro de un vector, los rangos [ : ] crea una serie de indices consecutivos.

vector1<-c(2,1.5,4)
vector2<-c("juan","pedro","sara")
vector3<-c(5,6,2)
producto1<- vector1*escalar4
producto1
## [1]  56  42 112
vector1[2]
## [1] 1.5
vector2[3]
## [1] "sara"
objeto1<-vector3[1]
objeto1
## [1] 5
objeto2<-vector2[2:3]
objeto2
## [1] "pedro" "sara"
objeto3<-vector2[1:2]
objeto3
## [1] "juan"  "pedro"
objeto4<-vector2[c(1,3)]
objeto4
## [1] "juan" "sara"
objeto_4<-vector2[-2]
objeto_4
## [1] "juan" "sara"
1.1.1.2.1 Creación de matrices

Se asignan tres vectores de caracteristicas númericas. las matrices son componentes bidimencionales de elementos compuestos por filas y columnas. En base de los vectores creados se adicionan para crear 2 matrices: matA y matB, filtramos como el proceso anterior identificando la posicion de los indices de los vectores y se asigan a un data frame las matrices para facilitar el análisis y manejo de las bases. cbind: columnas rbind: filas

vector_1<-c(1,2,3)
vector_2<-c(4,5,6)
vector_3<-c(7,8,9)
matA<-cbind(vector_1,vector_2,vector_3)
matB<-rbind(vector_1,vector_2,vector_3)
matrizA<-matA[1,2:3]
matrizB<-matA[3,]
matrizC<-matB[1:3,2]
matrizD<-matB[c(1,3),1]
matrizD<-matB[-2,1]
base1<-as.data.frame(matA)
base2<-as.data.frame(matB)
kableExtra:: kable(summary(base1))
vector_1 vector_2 vector_3
Min. :1.0 Min. :4.0 Min. :7.0
1st Qu.:1.5 1st Qu.:4.5 1st Qu.:7.5
Median :2.0 Median :5.0 Median :8.0
Mean :2.0 Mean :5.0 Mean :8.0
3rd Qu.:2.5 3rd Qu.:5.5 3rd Qu.:8.5
Max. :3.0 Max. :6.0 Max. :9.0
kableExtra:: kable(summary(base2))
V1 V2 V3
Min. :1.0 Min. :2.0 Min. :3.0
1st Qu.:2.5 1st Qu.:3.5 1st Qu.:4.5
Median :4.0 Median :5.0 Median :6.0
Mean :4.0 Mean :5.0 Mean :6.0
3rd Qu.:5.5 3rd Qu.:6.5 3rd Qu.:7.5
Max. :7.0 Max. :8.0 Max. :9.0
1.1.1.2.1.1 Cambiar nombre a las variables

Para ingresar a objetos en bases de datos (tomar variables con \() base1\)vector1 A un nuevo nombre de la base asignamos <- c(concatenar las variables), como se muestra en el siguiente codigo.

base1$vector1
## NULL
nombre_vectores <- c("variable1","variable2","variable3")
names(base1) <- nombre_vectores

2 Cargar base de datos internas

Para elaborar un nuevo proceso de datos se elimina la memoria del entorno de r, lo cual permitira el desarrolloso efectivo del nuevo código. Cargar librerias necesarias colocamos doble signo de pregunta para conocer más información sobre el contenido de la base de datos cargada. asi: ??mtcars Se asigna a un nombre los datos como se presentara a continuación:

rm(list=ls())
base<-mtcars
summary(mtcars)
##       mpg             cyl             disp             hp       
##  Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0  
##  1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5  
##  Median :19.20   Median :6.000   Median :196.3   Median :123.0  
##  Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7  
##  3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0  
##  Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0  
##       drat             wt             qsec             vs        
##  Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :0.0000  
##  1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000  
##  Median :3.695   Median :3.325   Median :17.71   Median :0.0000  
##  Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :0.4375  
##  3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000  
##  Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :1.0000  
##        am              gear            carb      
##  Min.   :0.0000   Min.   :3.000   Min.   :1.000  
##  1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000  
##  Median :0.0000   Median :4.000   Median :2.000  
##  Mean   :0.4062   Mean   :3.688   Mean   :2.812  
##  3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :1.0000   Max.   :5.000   Max.   :8.000

2.1 Formas de filtrar en una base de datos

2.1.1 Primera forma:

Utiliza la función subset(), donde extrae un subconjunto de la base de datos, donde se debe detallar mayor, menor, igual o la caracteristica que necesitemos de dicho filtro.

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

2.1.2 Segunda forma:

Ingresamos a la base de datos con el signo de $ y nombre de la variable a filtrar y de igual manera se especifica la acción a filtrar.

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

2.1.3 Tercera Forma:

instalar el paquete dplyr Cargar la libreria dplyr Utliza el símbolo %>% para anidar funciones dentro de otras de manera ordenada y clara. Ademas se utiliza la funcaión filter y detallar la caracteristica a filtrar

install.packages("dplyr")
## Warning: package 'dplyr' is in use and will not be installed
library(dplyr)
base1_forma3<-base %>%
filter(cyl>4)

3 Ejercicios

3.1 Vehiculos con 4 cilindros o más.

3.1.1 Forma 1

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

3.1.2 Forma 2

base2_forma2<-base[base$cyl>=4,]

3.1.3 Forma 3

install.packages("dplyr")
## Warning: package 'dplyr' is in use and will not be installed
library(dplyr)
base2_f3 <- base %>% 
  filter(cyl>=4)

3.2 Vehiculos menor que 4 o mayores de 6, donde | significa “o”

3.2.1 Forma 1

base3<- base[base$cyl<4|base$cyl>6,]

3.2.2 Forma 2

base3_forma1<-subset(base,base$cyl<4|base$cyl>6)

3.2.3 Forma 3

base3_forma3<-base %>%
filter(cyl<4|cyl>6)

3.3 vehiculos de entre 4 y 6, analizada en la base 4, operador lógico es &.

3.3.1 Forma 1

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

3.3.2 Forma 2

base4_f2<- base[base$cyl>4&base$cyl<6,]

3.3.3 Forma 3

base4_f3<-base %>%
  filter(cyl>4&cyl<6)

3.4 Quedese con los vehiculos que tienen menos de 4 o mas de 6 cilindros y calcule la media de la variable wt.

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

4 Prueba

4.0.1 Quédese con los vehiculos que tienen una potencia de entre 100 y 200 Hp, luego indique el promedio de mpg.

base4_f1<-subset(base,base$hp>100&base$hp<200)
mean(base4_f1$mpg)
## [1] 19.21875

4.0.2 Quédese con los vehiculos que tienen una potenciamenor a 100 o mayor a 200 Hp, luego indique el promedio de mpg.

base5_f1<-subset(base,base$hp<100|base$hp>200)
mean(base5_f1$mpg)
## [1] 20.9625

5 Ejercicio con la base de datos : pib_can_anual

5.0.1 Eliminamos la memoria

rm(list=ls())

5.0.2 Cargar Librerias

#install.packages("readxl")
#install.packages("here")
library(readxl)
library(dplyr)

5.0.3 Cargamos Base de datos llamado pib_can_anual

library(here)
## Warning: package 'here' was built under R version 4.4.3
## here() starts at C:/Users/erika/OneDrive/Desktop/PROYECTO CURSO INTRODUCCION A R
base<- read_excel(here("insumos","pib_can_anual.xlsx"))
## New names:
## • `` -> `...20`

5.0.4 Cambiamos el nombre a la variable

Se observa en la base de datos, que existen nombres demasiado largos, donde puede haber confusión en la escritura al momento de generar el codigo, por lo que cambiamos de nombre la variable ” Agricultura, ganaderia, silvicultura y pesca” situado en la ubicación 6, cambiamos al nombre como agricultura, con el siguiente código:

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

5.0.5 Reemplazar los NA con 0

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

5.0.6 Nos quedamos con una provincia

5.0.7 Ver cuantas observaciones tengo por variable

table(base$year)
## 
## 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 
##  221  221  221  221  221  221  221  221  221  221
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
table(base$canton)
## 
##                  24 De Mayo                    Aguarico 
##                          10                          10 
##                      Alausí    Alfredo Baquerizo Moreno 
##                          10                          10 
##                      Ambato                Antonio Ante 
##                          10                          10 
##                     Arajuno                   Archidona 
##                          10                          10 
##                   Arenillas                    Atacames 
##                          10                          10 
##                   Atahualpa                     Azogues 
##                          10                          10 
##                        Baba                    Babahoyo 
##                          10                          10 
##                       Balao                      Balsas 
##                          10                          10 
##                      Balzar                       Baños 
##                          10                          10 
##                     Biblián                     Bolívar 
##                          10                          20 
##                    Buena Fé                      Caluma 
##                          10                          10 
##                      Calvas       Camilo Ponce Enríquez 
##                          10                          10 
##                       Cañar Carlos Julio Arosemena Tola 
##                          10                          10 
##                    Cascales                    Catamayo 
##                          10                          10 
##                     Cayambe                      Celica 
##                          10                          10 
##        Centinela Del Cóndor                    Cevallos 
##                          10                          10 
##                Chaguarpamba                      Chambo 
##                          10                          10 
##                      Chilla                   Chillanes 
##                          10                          10 
##                      Chimbo                   Chinchipe 
##                          10                          10 
##                       Chone                   Chordeleg 
##                          10                          10 
##                     Chunchi                     Colimes 
##                          10                          10 
##                       Colta Coronel Marcelino Maridueña 
##                          10                          10 
##                   Cotacachi                      Cuenca 
##                          10                          10 
##                     Cumandá                    Cuyabeno 
##                          10                          10 
##                       Daule                       Déleg 
##                          10                          10 
##                       Durán                   Echeandía 
##                          10                          10 
##                   El Carmen                    El Chaco 
##                          10                          10 
##                  El Empalme                    El Guabo 
##                          10                          10 
##                      El Pan                   El Pangui 
##                          10                          10 
##                    El Tambo                  El Triunfo 
##                          10                          10 
##                 Eloy Alfaro                  Esmeraldas 
##                          10                          10 
##                      Espejo                   Espíndola 
##                          10                          10 
##               Flavio Alfaro    General Antonio Elizalde 
##                          10                          10 
##                       Girón             Gonzalo Pizarro 
##                          10                          10 
##                   Gonzanamá                  Guachapala 
##                          10                          10 
##                    Gualaceo                  Gualaquiza 
##                          10                          10 
##                     Guamote                       Guano 
##                          10                          10 
##                    Guaranda                   Guayaquil 
##                          10                          10 
##                    Huamboya                  Huaquillas 
##                          10                          10 
##                      Ibarra                     Isabela 
##                          10                          10 
##                Isidro Ayora                        Jama 
##                          10                          10 
##                    Jaramijó                    Jipijapa 
##                          10                          10 
##                       Junín                La Concordia 
##                          10                          10 
##       La Joya De Los Sachas                 La Libertad 
##                          10                          10 
##                     La Maná                  La Troncal 
##                          10                          10 
##                  Lago Agrio                   Las Lajas 
##                          10                          10 
##                   Las Naves                   Latacunga 
##                          10                          10 
##               Limón-Indanza                     Logroño 
##                          10                          10 
##                        Loja        Lomas De Sargentillo 
##                          10                          10 
##                      Loreto                      Macará 
##                          10                          10 
##                     Machala                       Manta 
##                          10                          10 
##                   Marcabelí                       Mejía 
##                          10                          10 
##                        Mera                     Milagro 
##                          10                          10 
##                        Mira                     Mocache 
##                          10                          10 
##                       Mocha                    Montalvo 
##                          10                          10 
##                 Montecristi                    Montúfar 
##                          10                          10 
##                      Morona                      Muisne 
##                          10                          10 
##                       Nabón                  Nangaritza 
##                          10                          10 
##                    Naranjal                   Naranjito 
##                          10                          10 
##                       Nobol                      Olmedo 
##                          10                          20 
##                         Oña                    Orellana 
##                          10                          10 
##                     Otavalo                    Pablo VI 
##                          10                          10 
##                       Paján                     Palanda 
##                          10                          10 
##                    Palenque                   Palestina 
##                          10                          10 
##                  Pallatanga                      Palora 
##                          10                          10 
##                      Paltas                      Pangua 
##                          10                          10 
##                    Paquisha                      Pasaje 
##                          10                          10 
##                     Pastaza                      Patate 
##                          10                          10 
##                       Paute                  Pedernales 
##                          10                          10 
##                 Pedro Carbo               Pedro Moncayo 
##                          10                          10 
##     Pedro Vicente Maldonado                      Penipe 
##                          10                          10 
##                   Pichincha                   Pimampiro 
##                          10                          10 
##                      Pindal                       Piñas 
##                          10                          10 
##   Playas (General Villamil)                   Portovelo 
##                          10                          10 
##                  Portoviejo                      Pucará 
##                          10                          10 
##                 Puebloviejo                Puerto López 
##                          10                          10 
##                Puerto Quito                      Pujilí 
##                          10                          10 
##                    Putumayo                     Puyango 
##                          10                          10 
##                       Quero                     Quevedo 
##                          10                          10 
##                      Quijos                    Quilanga 
##                          10                          10 
##                    Quinindé                  Quinsaloma 
##                          10                          10 
##                       Quito                    Riobamba 
##                          10                          10 
##                    Rioverde                  Rocafuerte 
##                          10                          10 
##                   Rumiñahui                     Salcedo 
##                          10                          10 
##                     Salinas       Salitre (Urbina Jado) 
##                          10                          10 
##                 Samborondón               San Cristóbal 
##                          10                          10 
##                San Fernando              San Juan Bosco 
##                          10                          10 
##                 San Lorenzo                  San Miguel 
##                          10                          10 
##    San Miguel De Los Bancos       San Miguel De Urcuquí 
##                          10                          10 
##          San Pedro de Huaca        San Pedro De Pelileo 
##                          10                          10 
##                 San Vicente                   Santa Ana 
##                          10                          10 
##                 Santa Clara                  Santa Cruz 
##                          10                          10 
##                 Santa Elena                Santa Isabel 
##                          10                          10 
##                 Santa Lucía                  Santa Rosa 
##                          10                          10 
##                    Santiago         Santiago De Píllaro 
##                          10                          10 
##               Santo Domingo                   Saquisilí 
##                          10                          10 
##                    Saraguro              Sevilla De Oro 
##                          10                          10 
##                 Shushufindi                     Sigchos 
##                          10                          10 
##                      Sigsig               Simón Bolívar 
##                          10                          10 
##                   Sozoranga                       Sucre 
##                          10                          10 
##                       Sucúa                   Sucumbíos 
##                          10                          10 
##                      Suscal                      Taisha 
##                          10                          10 
##                        Tena                     Tisaleo 
##                          10                          10 
##                    Tiwintza                     Tosagua 
##                          10                          10 
##                      Tulcán                    Urdaneta 
##                          10                          10 
##                    Valencia                    Ventanas 
##                          10                          10 
##                      Vinces                    Yacuambí 
##                          10                          10 
##                    Yaguachi                    Yanzatza 
##                          10                          10 
##                      Zamora                   Zapotillo 
##                          10                          10 
##                      Zaruma 
##                          10

5.0.8 Nos quedamos con una provincia

Como se puede apreciar en la base de datos se tienen varias provincias, por lo cual filtraremos para quedarnos con solo una, por cual nos guiaremos con el dpa_prov en este caso, y la provincia seleccionada es Manabi:

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

5.0.9 QUEDESE 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\r\n\r\n"                      
##  [9] "Suministro de electricidad y de agua"     
## [10] "Construccion\r\n\r\n"                     
## [11] "comercio\r\n\r\n"                         
## [12] "Alojamiento y servicios de comida"        
## [13] "Transporte, informacion y comunicaciones" 
## [14] "Actividades financieras\r\n"              
## [15] "Actividades profesionales e inmobiliarias"
## [16] "Administracion publica \r\n"              
## [17] "Enseñanza\r\n\r\n"                        
## [18] "Salud\r\n\r\n"                            
## [19] "Otros servicios\r\n\r\n"                  
## [20] "...20"
base_manabi1<-base_manabi %>% 
  select(year,prov,dpa_prov,canton,dpa_can,agricultura,"Explotacion de minas y canteras")

5.0.10 Vista resumen de una variable

Como se habia detallado anteriormente, la función summary(), sirve para dar una resumen estadistico de los datos analizados, donde se observa que el valor límite es 29351.06 :

summary(base_manabi1$agricultura)
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
##     80.46   4888.18  11260.08  29351.06  38616.46 234997.81

5.0.11 Eliminar la ultima variable

base_manabi1<-base_manabi1[,-7]

5.0.12 Creamos nuevas variables (DICOTOMICAS)

Utilizamos la función mutate para crear variables dicotomicas, en base al limite encontrado, estableceremos si el pib es “alto o bajo”, además agregaremos una condición, con la función ifelse, como se destaca en el siguiente código:

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

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

5.0.13 Dividimos las bases

Una vez establecida la condición, podemos filtrar las bases por separado:

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

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

5.0.14 Sumar el pib de agricultura por cantón

Para realizar una suma de las variables utilizamos la función summarise:

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

6 Modelo Econometrico

Un modelo econometrico, se entiende como el instrumento estadistico para relacionar, estimar y cuantificar variables, donde se pueden utilizar datos tanto de serie de tiempo, corte transversal o panel. Donde se aplican métodos estadisticos como mínimos cuadrados ordinarios,para obtener parametros y adicionalmente los términos de error, donde se identifican como las demas variables no observadas al momento de generar el modelo.

6.1 Ejemplo de ecuación

C = B1 + B2Yd + u

6.2 Ejercicio

rm(list=ls())
library(here)
library(readr)
## Warning: package 'readr' was built under R version 4.4.3
base<- read.csv(here("insumos","base_final.csv"))

6.2.1 Filtrar de la base de datos desde 1980 hasta 2024

Al momento de filtrar, se utilizará la libreria (dplyr), para poder realizar el filtro, incluyendo el año 1980.

base<-subset(base,base$anio>=1980)

6.2.2 Cambio de variable

Se necesita el Ingreso disponible, por lo que analizamos que es la diferencia del Pib menos los impuestos y creamos la nueva variable.

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

6.2.3 Modelo Econometrico

Una vez, ya obtenido el ingreso disponible reemplazamos y verificamos el modelo de la siguiente manera, utilizamos la función lm, utilizada para estimar modelos de regresión lineal.

options(scipen=999)
modelo<-lm(consumo~ingreso_disponible,data=base)
summary(modelo)
## 
## Call:
## lm(formula = consumo ~ ingreso_disponible, data = base)
## 
## Residuals:
##         Min          1Q      Median          3Q         Max 
## -4901431887 -1069569495  -195228251  1233327995  6870277166 
## 
## Coefficients:
##                             Estimate        Std. Error t value
## (Intercept)        14165415645.32893   935246532.56462   15.15
## ingreso_disponible           0.68472           0.01397   49.01
##                               Pr(>|t|)    
## (Intercept)        <0.0000000000000002 ***
## ingreso_disponible <0.0000000000000002 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2450000000 on 43 degrees of freedom
## Multiple R-squared:  0.9824, Adjusted R-squared:  0.982 
## F-statistic:  2402 on 1 and 43 DF,  p-value: < 0.00000000000000022

6.2.4 Interpretación

Ante el incremento en un dolar en el ingreso disponible, en promedio el consumo aumenta en 0,68 dólares, manteniendo lo demás constante.

6.3 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)
## 
## Call:
## lm(formula = ln_consumo ~ ln_ingreso_disponible, data = base)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.113225 -0.021156  0.005125  0.031844  0.124035 
## 
## Coefficients:
##                       Estimate Std. Error t value            Pr(>|t|)    
## (Intercept)            6.70498    0.45862   14.62 <0.0000000000000002 ***
## ln_ingreso_disponible  0.72715    0.01852   39.26 <0.0000000000000002 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.05187 on 43 degrees of freedom
## Multiple R-squared:  0.9729, Adjusted R-squared:  0.9722 
## F-statistic:  1541 on 1 and 43 DF,  p-value: < 0.00000000000000022

6.4 Ejercicio

6.4.1 Modelo: desempleo = B1 + B2*PIB +u

6.5 Ejercicio

rm(list=ls())
library(here)
library(readr)
base<- read.csv(here("insumos","datos_ecuador.csv"))

6.5.1 Aplicamos el modelo

modelo_desempleo <- lm(TasaDesempleo_Porcentaje ~ PIB_MillonesUSD, data=base)
summary(modelo_desempleo)
## 
## Call:
## lm(formula = TasaDesempleo_Porcentaje ~ PIB_MillonesUSD, data = base)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.6369 -0.8933 -0.1452  0.4323  7.6118 
## 
## Coefficients:
##                    Estimate  Std. Error t value          Pr(>|t|)    
## (Intercept)      8.37282462  0.92082867   9.093 0.000000000000595 ***
## PIB_MillonesUSD -0.00010715  0.00003556  -3.014           0.00376 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.377 on 61 degrees of freedom
## Multiple R-squared:  0.1296, Adjusted R-squared:  0.1153 
## F-statistic: 9.081 on 1 and 61 DF,  p-value: 0.003758

6.5.2 Estimamos otro modelo

model_ied <- lm(IED_MillonesUSD ~ RiesgoPais, data=base)
summary(model_ied)
## 
## Call:
## lm(formula = IED_MillonesUSD ~ RiesgoPais, data = base)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -317.37  -55.76  -16.82   54.14  279.09 
## 
## Coefficients:
##              Estimate Std. Error t value       Pr(>|t|)    
## (Intercept) 229.89653   29.74552   7.729 0.000000000129 ***
## RiesgoPais   -0.04321    0.02458  -1.758         0.0838 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 107.9 on 61 degrees of freedom
## Multiple R-squared:  0.04821,    Adjusted R-squared:  0.0326 
## F-statistic: 3.089 on 1 and 61 DF,  p-value: 0.08382

6.6 Creamos el Riesgo Pais Rezagado

Cambiamos las variables con la función mutate.

library(dplyr)
base <- base %>% 
  mutate(ied_rezagado1= lag(IED_MillonesUSD,n=1),
         rp_rezagado1 = lag(RiesgoPais,n=1),
         rp_rezagado2 = lag(RiesgoPais,n=2))

6.6.1 Modelo Rezagado

model_ied_lag1 <- lm(IED_MillonesUSD ~ rp_rezagado1, data=base)
summary(model_ied_lag1)
## 
## Call:
## lm(formula = IED_MillonesUSD ~ rp_rezagado1, data = base)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -319.35  -55.08  -20.33   52.81  271.41 
## 
## Coefficients:
##               Estimate Std. Error t value      Pr(>|t|)    
## (Intercept)  208.40204   30.70883   6.786 0.00000000578 ***
## rp_rezagado1  -0.02284    0.02527  -0.904          0.37    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 110.7 on 60 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.01343,    Adjusted R-squared:  -0.003015 
## F-statistic: 0.8167 on 1 and 60 DF,  p-value: 0.3698
model_ied_lag2 <- lm(IED_MillonesUSD ~ rp_rezagado2, data=base)
summary(model_ied_lag2)
## 
## Call:
## lm(formula = IED_MillonesUSD ~ rp_rezagado2, data = base)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -320.59  -53.15  -14.34   49.29  266.92 
## 
## Coefficients:
##               Estimate Std. Error t value      Pr(>|t|)    
## (Intercept)  214.06880   30.81112   6.948 0.00000000332 ***
## rp_rezagado2  -0.02707    0.02533  -1.069          0.29    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 111 on 59 degrees of freedom
##   (2 observations deleted due to missingness)
## Multiple R-squared:  0.01899,    Adjusted R-squared:  0.002358 
## F-statistic: 1.142 on 1 and 59 DF,  p-value: 0.2896

7 Prueba

7.1 Utilice la base de datos “datos_ecuador.csv”, para el periodo desde 2015 hasta 2023, corra el modelo desempleo = B1 + B2*PIB +u.Indique el valor de B2. (Ingrese su valor con 2 decimales sin redondear)

7.1.1 respuesta= -0.0002485.

rm(list=ls())
library(here)
library(readr)
base<- read.csv(here("insumos","datos_ecuador.csv"))

base2 <- base %>% 
  filter(anio>= 2015 & anio <= 2023)
modelo2 <- lm(TasaDesempleo_Porcentaje~PIB_MillonesUSD, data = base2)
summary(modelo2)
## 
## Call:
## lm(formula = TasaDesempleo_Porcentaje ~ PIB_MillonesUSD, data = base2)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.8356 -0.8271 -0.1033  0.1037  6.8451 
## 
## Coefficients:
##                   Estimate Std. Error t value  Pr(>|t|)    
## (Intercept)     12.6811501  2.7428198   4.623 0.0000526 ***
## PIB_MillonesUSD -0.0002485  0.0001002  -2.481    0.0182 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.451 on 34 degrees of freedom
## Multiple R-squared:  0.1533, Adjusted R-squared:  0.1284 
## F-statistic: 6.155 on 1 and 34 DF,  p-value: 0.01821

7.2 Utilice la base de datos “datos_ecuador.csv”, para el periodo entre 2015 y 2023, corra el modelo desempleo = B1 + B2*Ln(PIB) +u.Indique el valor de B2. (Ingrese su valor con 2 decimales sin redondear)

7.2.1 respuesta= -9.75

rm(list=ls())
library(here)
library(readr)
base<- read.csv(here("insumos","datos_ecuador.csv"))
base2<-base %>% 
  filter(anio>2015&anio<2023)
base2$ln_PIB_MillonesUSD<-log(base2$PIB_MillonesUSD)
modelo2<-lm(TasaDesempleo_Porcentaje~ln_PIB_MillonesUSD,data=base2)
summary(modelo2)
## 
## Call:
## lm(formula = TasaDesempleo_Porcentaje ~ ln_PIB_MillonesUSD, data = base2)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.4957 -0.9472 -0.3826  0.3515  6.4448 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)  
## (Intercept)         105.698     42.899   2.464   0.0207 *
## ln_PIB_MillonesUSD   -9.759      4.205  -2.321   0.0284 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.559 on 26 degrees of freedom
## Multiple R-squared:  0.1716, Adjusted R-squared:  0.1398 
## F-statistic: 5.387 on 1 and 26 DF,  p-value: 0.0284

8 Manejo De Encuestas

Para realizar un analisis exhaustivo, se debe realizar a travez de indicadores. Indicador = número de observaciones con cierta caracteristica aleatoria/ total de la población de interés ## Ejercicio ### Cargar librerias necesarias

rm(list=ls())
library(here)
library(readr)
library(srvyr)
## Warning: package 'srvyr' was built under R version 4.4.3
## 
## Adjuntando el paquete: 'srvyr'
## The following object is masked from 'package:stats':
## 
##     filter
library(rio)
## Warning: package 'rio' was built under R version 4.4.3
library(import)
## Warning: package 'import' was built under R version 4.4.3
## The import package should not be attached.
## Use "colon syntax" instead, e.g. import::from, or import:::from.
## 
## Adjuntando el paquete: 'import'
## The following object is masked from 'package:here':
## 
##     here

8.0.1 Cargar Base de datos

rm(list=ls())
library(here)
library(readr)
personas<- rio::import(here::here("insumos","1_BDD_ENS2018_f1_personas.dta"))

8.0.2 Identificamos la variable

table(personas$dcronica_2)
## 
##    0    1 
## 5591 2210

8.0.3 Reemplazamos la fórmula

dci <- 2210/(5591+2210)
dci*100
## [1] 28.3297

8.1 Trabajando con muestras oficiales

Donde: ump: unidad primaria de muestreo estrato: estrato fexp: factor de expansión certainty: forzando a que las observaciones sean unicas e individuales

dm <- personas %>% 
  as_survey_design(ids=upm,   
                   strata=estrato,
                   weights = fexp) 
options(survey.lonely.psu = 'certainty') 
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))

8.2 ENEMDU II TRIMESTRE 2025

8.2.1 cargar librerias

library(haven)
## Warning: package 'haven' was built under R version 4.4.3
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.4.3
## Warning: package 'ggplot2' was built under R version 4.4.3
## Warning: package 'tidyr' was built under R version 4.4.3
## Warning: package 'purrr' was built under R version 4.4.3
## Warning: package 'stringr' was built under R version 4.4.3
## Warning: package 'forcats' was built under R version 4.4.3
## Warning: package 'lubridate' was built under R version 4.4.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.2     ✔ tibble    3.2.1
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.1.0     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ srvyr::filter() masks dplyr::filter(), stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(srvyr)

8.2.2 Cargar base de datos

df<- read.csv2(here::here("insumos","enemdu_persona_2025_II_trimestre.csv"))

8.2.3 Declaración de diseño muestral

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

9 Replicar Indicadores

9.1 Tasa de desempleo Nacional

tasa_desempleo_nac <- dm %>% 
  filter(p03>=15) %>% 
  summarise(
    tasa_desempleo = survey_ratio(
      numerator= condact %in% c(7,8),
      denominator=condact %in% 1:8,
      vartype = c('se','ci')
    ) 
  ) %>% 
  mutate(tasa_desempleo = round((tasa_desempleo*100),1))
print(tasa_desempleo_nac)
## # A tibble: 1 × 4
##   tasa_desempleo tasa_desempleo_se tasa_desempleo_low tasa_desempleo_upp
##            <dbl>             <dbl>              <dbl>              <dbl>
## 1            3.9           0.00239             0.0341             0.0435

9.2 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))
print(tasa_empleo_adec)
## # A tibble: 1 × 4
##   tasa_empleo_adecuado tasa_empleo_adecuado_se tasa_empleo_adecuado_low
##                  <dbl>                   <dbl>                    <dbl>
## 1                 36.2                  0.0113                    0.340
## # ℹ 1 more variable: tasa_empleo_adecuado_upp <dbl>

9.3 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))
print(tasa_subempleo_nac)
## # A tibble: 1 × 4
##   tasa_subempleo tasa_subempleo_se tasa_subempleo_low tasa_subempleo_upp
##            <dbl>             <dbl>              <dbl>              <dbl>
## 1           19.9           0.00613              0.187              0.211

9.4 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))
print(tasa_empleo_norem)
## # A tibble: 1 × 4
##   tasa_empleo_norem tasa_empleo_norem_se tasa_empleo_norem_low
##               <dbl>                <dbl>                 <dbl>
## 1                10               0.0114                0.0778
## # ℹ 1 more variable: tasa_empleo_norem_upp <dbl>

10 Conclusion

El conocimiento adquirido durante el curso ha sido positivo, considerando el proceso sobre el manejo de datos, las diversas librerias que hay que instalar para poder evolucionar con los códigos. El proceso de generar un archivo en forma Latex, donde se puede ampliar la forma de visualizar el trabajo me parece muy interesante.