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
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
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
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"
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 |
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
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
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)
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,]
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)
basefilt2<-subset(base,base$cyl>=4)
base2_forma2<-base[base$cyl>=4,]
install.packages("dplyr")
## Warning: package 'dplyr' is in use and will not be installed
library(dplyr)
base2_f3 <- base %>%
filter(cyl>=4)
base3<- base[base$cyl<4|base$cyl>6,]
base3_forma1<-subset(base,base$cyl<4|base$cyl>6)
base3_forma3<-base %>%
filter(cyl<4|cyl>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,]
mean(base3$wt)
## [1] 3.999214
base4_f1<-subset(base,base$hp>100&base$hp<200)
mean(base4_f1$mpg)
## [1] 19.21875
base5_f1<-subset(base,base$hp<100|base$hp>200)
mean(base5_f1$mpg)
## [1] 20.9625
rm(list=ls())
#install.packages("readxl")
#install.packages("here")
library(readxl)
library(dplyr)
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`
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"
base[is.na(base)]<-0
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
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Í")
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")
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
base_manabi1<-base_manabi1[,-7]
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"))
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")
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))
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.
C = B1 + B2Yd + u
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"))
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)
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)
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
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.
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
rm(list=ls())
library(here)
library(readr)
base<- read.csv(here("insumos","datos_ecuador.csv"))
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
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
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))
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
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
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
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
rm(list=ls())
library(here)
library(readr)
personas<- rio::import(here::here("insumos","1_BDD_ENS2018_f1_personas.dta"))
table(personas$dcronica_2)
##
## 0 1
## 5591 2210
dci <- 2210/(5591+2210)
dci*100
## [1] 28.3297
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))
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)
df<- read.csv2(here::here("insumos","enemdu_persona_2025_II_trimestre.csv"))
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 %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
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>
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
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>
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.