library(tidyverse)
library(ggplot2)
library(dplyr)
library(knitr)
library(kableExtra)
library(DataExplorer)
library(SmartEDA)
library(readxl)
#create_report(base)
#ExpReport(base, op_file = "base.html")
table1 <- ExpData(data=base,type=2)
kable(table1, format = "pipe")
| Index | Variable_Name | Variable_Type | Sample_n | Missing_Count | Per_of_Missing | No_of_distinct_values |
|---|---|---|---|---|---|---|
| 1 | school | character | 395 | 0 | 0 | 2 |
| 2 | sex | character | 395 | 0 | 0 | 2 |
| 3 | age | integer | 395 | 0 | 0 | 8 |
| 4 | address | character | 395 | 0 | 0 | 2 |
| 5 | famsize | character | 395 | 0 | 0 | 2 |
| 6 | Pstatus | character | 395 | 0 | 0 | 2 |
| 7 | Medu | integer | 395 | 0 | 0 | 5 |
| 8 | Fedu | integer | 395 | 0 | 0 | 5 |
| 9 | Mjob | character | 395 | 0 | 0 | 5 |
| 10 | Fjob | character | 395 | 0 | 0 | 5 |
| 11 | reason | character | 395 | 0 | 0 | 4 |
| 12 | guardian | character | 395 | 0 | 0 | 3 |
| 13 | traveltime | integer | 395 | 0 | 0 | 4 |
| 14 | studytime | integer | 395 | 0 | 0 | 4 |
| 15 | failures | integer | 395 | 0 | 0 | 4 |
| 16 | schoolsup | character | 395 | 0 | 0 | 2 |
| 17 | famsup | character | 395 | 0 | 0 | 2 |
| 18 | paid | character | 395 | 0 | 0 | 2 |
| 19 | activities | character | 395 | 0 | 0 | 2 |
| 20 | nursery | character | 395 | 0 | 0 | 2 |
| 21 | higher | character | 395 | 0 | 0 | 2 |
| 22 | internet | character | 395 | 0 | 0 | 2 |
| 23 | romantic | character | 395 | 0 | 0 | 2 |
| 24 | famrel | integer | 395 | 0 | 0 | 5 |
| 25 | freetime | integer | 395 | 0 | 0 | 5 |
| 26 | goout | integer | 395 | 0 | 0 | 5 |
| 27 | Dalc | integer | 395 | 0 | 0 | 5 |
| 28 | Walc | integer | 395 | 0 | 0 | 5 |
| 29 | health | integer | 395 | 0 | 0 | 5 |
| 30 | absences | integer | 395 | 0 | 0 | 34 |
Para la pregunta 1, se tendrian que seleccionar 6 variables, sin embargo se seleccionaran 11 variables para realizar el analsis exploratorio y de estas variables se escogeran las 6 mas principales, si asi lo requiere.
Previamente se verifico que ninguna variable tiene NA o valores omitidos, por lo que el analisis procede sin inconvenientes.
base <- base %>% select(higher, sex, age, Pstatus, Medu, Fedu, studytime,failures, activities, famrel,absences)%>%
mutate(higher= as.factor(higher),activities = as.factor(activities),
Pstatus= as.factor(Pstatus), Medu = as.factor(Medu), Fedu= as.factor(Fedu),
sex = as.factor(sex), studytime = as.factor(studytime))
kable(head(base), format = "pipe")
| higher | sex | age | Pstatus | Medu | Fedu | studytime | failures | activities | famrel | absences |
|---|---|---|---|---|---|---|---|---|---|---|
| yes | F | 18 | A | 4 | 4 | 2 | 0 | no | 4 | 6 |
| yes | F | 17 | T | 1 | 1 | 2 | 0 | no | 5 | 4 |
| yes | F | 15 | T | 1 | 1 | 2 | 3 | no | 4 | 10 |
| yes | F | 15 | T | 4 | 2 | 3 | 0 | yes | 3 | 2 |
| yes | F | 16 | T | 3 | 3 | 2 | 0 | no | 4 | 4 |
| yes | M | 16 | T | 4 | 3 | 2 | 0 | yes | 5 | 10 |
kable(summary(base), format = "pipe")
| higher | sex | age | Pstatus | Medu | Fedu | studytime | failures | activities | famrel | absences | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| no : 20 | F:208 | Min. :15.0 | A: 41 | 0: 3 | 0: 2 | 1:105 | Min. :0.0000 | no :194 | Min. :1.000 | Min. : 0.000 | |
| yes:375 | M:187 | 1st Qu.:16.0 | T:354 | 1: 59 | 1: 82 | 2:198 | 1st Qu.:0.0000 | yes:201 | 1st Qu.:4.000 | 1st Qu.: 0.000 | |
| NA | NA | Median :17.0 | NA | 2:103 | 2:115 | 3: 65 | Median :0.0000 | NA | Median :4.000 | Median : 4.000 | |
| NA | NA | Mean :16.7 | NA | 3: 99 | 3:100 | 4: 27 | Mean :0.3342 | NA | Mean :3.944 | Mean : 5.709 | |
| NA | NA | 3rd Qu.:18.0 | NA | 4:131 | 4: 96 | NA | 3rd Qu.:0.0000 | NA | 3rd Qu.:5.000 | 3rd Qu.: 8.000 | |
| NA | NA | Max. :22.0 | NA | NA | NA | NA | Max. :3.0000 | NA | Max. :5.000 | Max. :75.000 |
summary(base)
higher sex age Pstatus Medu Fedu studytime
no : 20 F:208 Min. :15.0 A: 41 0: 3 0: 2 1:105
yes:375 M:187 1st Qu.:16.0 T:354 1: 59 1: 82 2:198
Median :17.0 2:103 2:115 3: 65
Mean :16.7 3: 99 3:100 4: 27
3rd Qu.:18.0 4:131 4: 96
Max. :22.0
failures activities famrel absences
Min. :0.0000 no :194 Min. :1.000 Min. : 0.000
1st Qu.:0.0000 yes:201 1st Qu.:4.000 1st Qu.: 0.000
Median :0.0000 Median :4.000 Median : 4.000
Mean :0.3342 Mean :3.944 Mean : 5.709
3rd Qu.:0.0000 3rd Qu.:5.000 3rd Qu.: 8.000
Max. :3.0000 Max. :5.000 Max. :75.000
Dado que se cuenta con variables cuantitativas y cualitativas tratadas con un formato “factor”, es necesario poder analizarlas por separado.
Primeramente, para las variables cuantitativas es necesaria poder determinar si estas variables se distribuyen de manera normal o tienen un sesgo claro que haria que la distribucion no sea homocedastica y que en el modelo final, los errores esten correlacionados.
ExpOutQQ(base,nlim=4,fname=NULL,Page=c(2,2),sample=nrow(base))
## $`0`
De la anterior figura que puede observar que las cuatros variables cuantitativas, muestran que no tienen una distribucion en comparacion a la distribcion teorica.
La edad, sigue un patron cercano a la teorica, dado que esta variable a pesar de ser una cuantitativa es una variable ordinal y se observa que hay segmentacion de edades.
La relacion de la familia, es una categorica pero se mantiene en ordinal para demostrar en que tipo de relacion familiar, las observaciones se encuentran, siendo que muchos estan situados en la categoria 5 que implica una excelente relacion familiar.
Para la variable " failures", muchos de esta base de datos, no tienen examenes desaprobados, por lo que hay un sesgo positivo para la determinacion de seguir estudiando o no.
Para la variable ausencia de escolares, se muestra tambien un sesgo hacia personas que no teiene ausencias, pero se ve una tendnecia a incrementar el nuemero de ausencias a medida que la data se vuelve mas dispareja.
library(corrplot)
## Warning: package 'corrplot' was built under R version 4.0.5
library(grDevices)
Correlaciones <- cor(base %>% select(age,famrel, failures,absences))
corrplot(Correlaciones,order = "hclust",addrect = 3, method = "number")
Se puede observar que claramente, existe mayor correlacion entre el numero de cursos desaprobados y la edad del encuestado, pero no implica causalidad.
Tambien hay un indice de correlacion del 18% entre la edad y el numero de ausencias escolares, lo que implicaria que a moyor edad puede que se cumpla que hay mayor auscentismo. Estas dos variables son las resaltables en terminos de correlacion.
Despues de analizar las variables cuantitativas, es necesario poder obtener los resultados de un analsis para las variables cualitativas, especialmenye sus frecuencias relativas, lo que implicaria sesgos de la data para futuros modelos.
table2 <- ExpCTable(base,Target=NULL,margin=1,clim=10,nlim=5,round=2,bin=NULL,per=T)
kable(table2, format = "pipe")
| Variable | Valid | Frequency | Percent | CumPercent |
|---|---|---|---|---|
| higher | no | 20 | 5.06 | 5.06 |
| higher | yes | 375 | 94.94 | 100.00 |
| higher | TOTAL | 395 | NA | NA |
| sex | F | 208 | 52.66 | 52.66 |
| sex | M | 187 | 47.34 | 100.00 |
| sex | TOTAL | 395 | NA | NA |
| Pstatus | A | 41 | 10.38 | 10.38 |
| Pstatus | T | 354 | 89.62 | 100.00 |
| Pstatus | TOTAL | 395 | NA | NA |
| Medu | 0 | 3 | 0.76 | 0.76 |
| Medu | 1 | 59 | 14.94 | 15.70 |
| Medu | 2 | 103 | 26.08 | 41.78 |
| Medu | 3 | 99 | 25.06 | 66.84 |
| Medu | 4 | 131 | 33.16 | 100.00 |
| Medu | TOTAL | 395 | NA | NA |
| Fedu | 0 | 2 | 0.51 | 0.51 |
| Fedu | 1 | 82 | 20.76 | 21.27 |
| Fedu | 2 | 115 | 29.11 | 50.38 |
| Fedu | 3 | 100 | 25.32 | 75.70 |
| Fedu | 4 | 96 | 24.30 | 100.00 |
| Fedu | TOTAL | 395 | NA | NA |
| studytime | 1 | 105 | 26.58 | 26.58 |
| studytime | 2 | 198 | 50.13 | 76.71 |
| studytime | 3 | 65 | 16.46 | 93.17 |
| studytime | 4 | 27 | 6.84 | 100.01 |
| studytime | TOTAL | 395 | NA | NA |
| activities | no | 194 | 49.11 | 49.11 |
| activities | yes | 201 | 50.89 | 100.00 |
| activities | TOTAL | 395 | NA | NA |
| failures | 0 | 312 | 78.99 | 78.99 |
| failures | 1 | 50 | 12.66 | 91.65 |
| failures | 2 | 17 | 4.30 | 95.95 |
| failures | 3 | 16 | 4.05 | 100.00 |
| failures | TOTAL | 395 | NA | NA |
| famrel | 1 | 8 | 2.03 | 2.03 |
| famrel | 2 | 18 | 4.56 | 6.59 |
| famrel | 3 | 68 | 17.22 | 23.81 |
| famrel | 4 | 195 | 49.37 | 73.18 |
| famrel | 5 | 106 | 26.84 | 100.02 |
| famrel | TOTAL | 395 | NA | NA |
Nuestro anslisis en este segmento se centra en analizar la frecuencia de la variable dependiente, que es higher(implica el deseo de querer tener una educacion superior), donde el 95% de los observados si quieren seguir estudiando
table3 <- prop.table(table(base$higher,base$sex), margin = 1)
kable(table3, format = "pipe")
| F | M | |
|---|---|---|
| no | 0.200 | 0.800 |
| yes | 0.544 | 0.456 |
De los cuales, el 55% son mujeres las que quieren seguir estudiando, y el 20% de quienen no quieren estudiar pertencen a mujeres. Siendo los varones los que no quieren seguir estudiando.
Es necesario poder determinar el analisis explotario para determinar las correlaciones y signos de sesgos en los datos.
library(gridExtra)
g1 <- base %>% ggplot(aes(age,absences, color= higher)) + geom_point(size= 3) + facet_wrap(.~Medu) + labs(title = "Ausencia estudiantil por edad segun nivel de educacion de la madre, que quiere ir a estudiar")
g2 <- base %>% ggplot(aes(age,failures, color= higher)) + geom_point(size= 3) + facet_wrap(.~Medu)+ labs(title = "Cursos fallados de estudiantes por edad segun nivel de educacion de la madre, que quiere ir a estudiar")
g3 <- base %>% ggplot(aes(absences,failures, color= higher)) + geom_point(size= 3) + facet_wrap(.~Medu)+ labs(title = "Ausencia estudiantil por cursos fallados segun nivel de educacion de la madre, que quiere ir a estudiar")
g4 <- base %>% ggplot(aes(age,absences, color= sex)) + geom_point(size= 3) + facet_wrap(.~Fedu)+ labs(title = "Ausencia estudiantil por edad segun nivel de educacion de la padre, exclusivo al genero")
g5 <- base %>% ggplot(aes(age,failures, color= sex)) + geom_point(size= 3) + facet_wrap(.~Fedu)+ labs(title = "Cursos fallados de estudiantes por edad segun nivel de educacion de la padre, exclusivo al genero")
g6 <- base %>% ggplot(aes(absences,failures, color= sex)) + geom_point(size= 3) + facet_wrap(.~Fedu)+ labs(title = "Ausencia estudiantil por cursos fallados segun nivel de educacion de la padre, exclusivo al genero")
g7 <- base %>% ggplot(aes(age,absences, color= Pstatus)) + geom_point(size= 3) + facet_wrap(.~activities)+ labs(title = "Ausencia estudiantil por edad segun Estatus parental, exclusivo al requerimiento de actividades extras")
g8 <-base %>% ggplot(aes(age,failures, color= Pstatus)) + geom_point(size= 3) + facet_wrap(.~activities) +labs(title = "Cursos fallados de estudiantes por edad segun Estatus parental, exclusivo al requerimiento de actividades extras")
g9 <-base %>% ggplot(aes(absences,failures, color= Pstatus)) + geom_point(size= 3) + facet_wrap(.~activities)+ labs(title = "Ausencia estudiantil por cursos fallados segun Estatus parental, exclusivo al requerimiento de actividades extras")
g10 <- base %>% ggplot(aes(absences, fill= higher)) + geom_density(alpha= 0.5) + facet_wrap(.~sex) +labs(title = "Distribucion del ausentismo, por sexo segun condicion de querer estudiar")
g11 <- base %>% ggplot(aes(failures, fill= higher)) + geom_density(alpha= 0.5) + facet_wrap(.~sex)+labs(title = "Distribucion de los cursos fallidos, por sexo segun condicion de querer estudiar")
grid.arrange(g1,g2,g3)
grid.arrange(g4,g5,g6)
grid.arrange(g7,g8,g9)
grid.arrange(g10,g11)
library(stargazer)
Please cite as:
Hlavac, Marek (2018). stargazer: Well-Formatted Regression and Summary Statistics Tables.
R package version 5.2.2. https://CRAN.R-project.org/package=stargazer
model1 <- glm(higher~ as.numeric(studytime)+sex+ age+failures + absences, data= base, family=binomial(link= logit ))
stargazer(model1, type = "text")
=================================================
Dependent variable:
---------------------------
higher
-------------------------------------------------
as.numeric(studytime) 0.954**
(0.475)
sexM -0.989
(0.655)
age -0.457**
(0.201)
failures -0.726***
(0.243)
absences -0.022
(0.027)
Constant 10.405***
(3.428)
-------------------------------------------------
Observations 395
Log Likelihood -58.085
Akaike Inf. Crit. 128.170
=================================================
Note: *p<0.1; **p<0.05; ***p<0.01
de manera permanente, características generales de la población, educación, trabajo, ingresos y vivienda y otras, con frecuencia variable, de acuerdo a las necesidades de información del país,
como las características sobre la migración. , fertilidad, matrimo- nio, salud, seguridad alimentaria, entre otros temas. La recopila- ción de estas estadísticas constituye, a lo largo de los 49 años de
realización de la investigación, un importante instrumento para la formulación, validación y evaluación de políticas orientadas al desarrollo socioeconómico y la mejora de las condiciones de vida en Brasil.
Haga un estudio descriptivo para las 5 ciudades con mayor canti- dad de encuestados.
Primero cargamos la base de dato y mostramos un resumen de su contenido.
setwd("~/Preg2")
base2 <- read.csv("PNAD2015.csv", header = TRUE)
kable(head(base2), format = "pipe")
| Region | Sexo | Edad | ColorPiel | AÃ.osEstudio | Ingresos |
|---|---|---|---|---|---|
| 11 | 0 | 23 | 8 | 12 | 800 |
| 11 | 1 | 23 | 2 | 12 | 1150 |
| 11 | 1 | 35 | 8 | 15 | 880 |
| 11 | 0 | 46 | 2 | 6 | 3500 |
| 11 | 1 | 47 | 8 | 9 | 150 |
| 11 | 1 | 34 | 8 | 12 | 790 |
Luego hacemos la transaformacion del nombre de la variable AÃ.osEstudio a AñoEstudio.
base2 <- base2 %>% mutate(AñoEstudio = AÃ.osEstudio)%>%
select(Region, Sexo, Edad, ColorPiel, AñoEstudio, Ingresos)
base2 %>% head() %>% kable(format = "pipe")
| Region | Sexo | Edad | ColorPiel | AñoEstudio | Ingresos |
|---|---|---|---|---|---|
| 11 | 0 | 23 | 8 | 12 | 800 |
| 11 | 1 | 23 | 2 | 12 | 1150 |
| 11 | 1 | 35 | 8 | 15 | 880 |
| 11 | 0 | 46 | 2 | 6 | 3500 |
| 11 | 1 | 47 | 8 | 9 | 150 |
| 11 | 1 | 34 | 8 | 12 | 790 |
Luego se caracteriza las variables, para tener etiquetas y poder describirlas posteriormente.
base2 <- base2 %>% mutate(Sexo=ifelse(Sexo==0,"Masculino","Femenino"),
ColorPiel=ifelse(ColorPiel==0,"Indigena",ifelse(ColorPiel==2,"Blanca", ifelse(ColorPiel==4,"Negra",ifelse(ColorPiel==6,"Amarillo", ifelse(ColorPiel==8,"Marror","No_precisa"))))))
head(base2)
## Region Sexo Edad ColorPiel AñoEstudio Ingresos
## 1 11 Masculino 23 Marror 12 800
## 2 11 Femenino 23 Blanca 12 1150
## 3 11 Femenino 35 Marror 15 880
## 4 11 Masculino 46 Blanca 6 3500
## 5 11 Femenino 47 Marror 9 150
## 6 11 Femenino 34 Marror 12 790
Luego hacemos la prueba que no exista variables omitidas o perdidas, resultando que ninguna variable tiene este resultado.
table3 <- ExpData(data=base2,type=2)
kable(table3, format = "pipe")
| Index | Variable_Name | Variable_Type | Sample_n | Missing_Count | Per_of_Missing | No_of_distinct_values |
|---|---|---|---|---|---|---|
| 1 | Region | integer | 76840 | 0 | 0 | 27 |
| 2 | Sexo | character | 76840 | 0 | 0 | 2 |
| 3 | Edad | integer | 76840 | 0 | 0 | 84 |
| 4 | ColorPiel | character | 76840 | 0 | 0 | 5 |
| 5 | AñoEstudio | integer | 76840 | 0 | 0 | 17 |
| 6 | Ingresos | integer | 76840 | 0 | 0 | 1606 |
g12 <- base2 %>% ggplot(aes(Sexo, fill= ColorPiel)) + geom_bar(stat = "count") +labs(title = "Distribucion por tipo de sexo segun tipo de piel")
g13 <- base2 %>% ggplot(aes(AñoEstudio, fill= ColorPiel)) + geom_density(alpha=0.5) + facet_wrap(.~Sexo)+labs(title = "Distribucion de los Años de estudio por tipo de sexo segun tipo de piel")
g14 <- base2 %>% ggplot(aes(Ingresos, fill= ColorPiel)) + geom_boxplot() + facet_wrap(.~Sexo)+labs(title = "Distribucion de los Ingresos por tipo de sexo segun tipo de piel")
grid.arrange(g12,g13,g14)
Se selecciona los 5 primeras regiones:
bd_alter <- base2 %>% group_by(Region) %>% summarise(N= n()) %>% arrange(N)
## `summarise()` ungrouping output (override with `.groups` argument)
top5 <- c(bd_alter[(nrow(bd_alter)-5):nrow(bd_alter),1])
base2 <- base2 %>% filter(Region %in% unlist(top5))
Para las regiones se hace un analisis exploratiori a nivel descriptivo de los ingresos en funcion de los años de estudio, donde se muestra que a mayor educacion, los niveles de ingresos aumentarian.
Ademas de ello se puede observar claramente que hay una ligera diferencia entre los niveles de ingresos entre varones y mujeres, por lo que puede haber otros factores que generen esta diferenciacion.
g15 <- base2 %>% filter(Region==15) %>% ggplot(aes(AñoEstudio, Ingresos, col= Sexo)) + geom_point() + geom_smooth() + labs(title = "Region 15: Ingresos en funcion del Estudio, segun sexo por color de piel") + facet_wrap(.~ColorPiel)
g16 <- base2 %>% filter(Region==33) %>% ggplot(aes(AñoEstudio, Ingresos, col= Sexo)) + geom_point() + geom_smooth()+ labs(title = "Region 33: Ingresos en funcion del Estudio, segun sexo por color de piel")+ facet_wrap(.~ColorPiel)
g17 <- base2 %>% filter(Region==29) %>% ggplot(aes(AñoEstudio, Ingresos, col= Sexo)) + geom_point() + geom_smooth()+ labs(title = "Region 29: Ingresos en funcion del Estudio, segun sexo por color de piel")+ facet_wrap(.~ColorPiel)
g18 <- base2 %>% filter(Region==43) %>% ggplot(aes(AñoEstudio, Ingresos, col= Sexo)) + geom_point() + geom_smooth()+ labs(title = "Region 43: Ingresos en funcion del Estudio, segun sexo por color de piel")+ facet_wrap(.~ColorPiel)
g19 <- base2 %>% filter(Region==31) %>% ggplot(aes(AñoEstudio, Ingresos, col= Sexo)) + geom_point() + geom_smooth()+ labs(title = "Region 31: Ingresos en funcion del Estudio, segun sexo por color de piel")+ facet_wrap(.~ColorPiel)
g20 <- base2 %>% filter(Region==35) %>% ggplot(aes(AñoEstudio, Ingresos, col= Sexo)) + geom_point() + geom_smooth()+ labs(title = "Region 35: Ingresos en funcion del Estudio, segun sexo por color de piel")+ facet_wrap(.~ColorPiel)
g15
## `geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'
## Warning: Computation failed in `stat_smooth()`:
## x has insufficient unique values to support 10 knots: reduce k.
## Warning: Computation failed in `stat_smooth()`:
## x has insufficient unique values to support 10 knots: reduce k.
g16
## `geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'
## Warning: Computation failed in `stat_smooth()`:
## x has insufficient unique values to support 10 knots: reduce k.
## Warning: Computation failed in `stat_smooth()`:
## x has insufficient unique values to support 10 knots: reduce k.
g17
## `geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'
## Warning: Computation failed in `stat_smooth()`:
## x has insufficient unique values to support 10 knots: reduce k.
## Warning: Computation failed in `stat_smooth()`:
## x has insufficient unique values to support 10 knots: reduce k.
g18
## `geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'
## Warning: Computation failed in `stat_smooth()`:
## x has insufficient unique values to support 10 knots: reduce k.
## Warning: Computation failed in `stat_smooth()`:
## x has insufficient unique values to support 10 knots: reduce k.
g19
## `geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'
## Warning: Computation failed in `stat_smooth()`:
## x has insufficient unique values to support 10 knots: reduce k.
## Warning: Computation failed in `stat_smooth()`:
## x has insufficient unique values to support 10 knots: reduce k.
g20
## `geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'
## Warning: Computation failed in `stat_smooth()`:
## x has insufficient unique values to support 10 knots: reduce k.
## Warning: Computation failed in `stat_smooth()`:
## x has insufficient unique values to support 10 knots: reduce k.
De las graficas anteriores se puede deducir lo siguiente:
Todas las regiones presentan una relacion positiva entre ingresos y estudios, sin embargo la region 33 presenta menos disparidad en los niveles de ingresos segun sexo. Pero si presenta diferencias por tipo de color de piel, por lo que puede que estas regiones tengan presencia de discrimnacion.
La posible discriminacion, estaria situada entre las personas blancas, marrones y negras; de las cuales en todas las regiones, las personas de color Blanca ganan mas que las personas de otros colores en promedio.
La region 43 y la region 35, son las que presentan mayor dispercion y diferencia entre el salario esperado por hombres y mujeres, asi mismo la segmentacion por color de piel se hace mas notoria.
Estas conclusiones pueden deberse a que se tienen mas datos en estas regiones que en las previas antes mencionadas.
g21 <- base2 %>% ggplot(aes(AñoEstudio, Ingresos, col= Sexo)) + geom_point() + geom_smooth()+ labs(title = "Total de Top 5 Regiones : Ingresos en funcion del Estudio, segun sexo por color de piel")+ facet_wrap(.~ColorPiel)
g21
## `geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'
## Warning: Computation failed in `stat_smooth()`:
## x has insufficient unique values to support 10 knots: reduce k.
Por lo tanto, se envidencia indicios de discrminacion cuando se hace el analisis por regiones, sin embargo en un consolidado en promedio no se observa cambio significativo en salarios por sexo ni por color de piel.
Sin embargo, la mayor dispercion se da en aquellos que estudiaron mas, y cuentan con mas titulos, y es en estos niveles en los que las regiones las Top5 muestran diferencias, especialmente la 43 y la 35.
La poblacion esta mas concentrada en la poblacion de color blanca, marron y negro, pero la poblacion indigena no recibe distinccion, lo que implica algo grave ya que no se les diferencia como a los demas y se les trata a todos ellos como un conjunto separado.
representa la serie temporal más larga (desde 1 https://calcofi.org/about-calcofi.html 1949 hasta el presente) y más completa (más de 50.000 estaciones de muestreo) de datos oceanográficos y de larvas de peces del mundo. Incluye datos de abundancia sobre las larvas de más de 250 especies de peces; datos de frecuencia de longitud de larvas y datos de abundancia de huevos en especies comerciales clave;
y datos oceanográficos y de plancton. Los datos físicos, quími- cos y biológicos recopilados a intervalos regulares de tiempo y
espacio rápidamente se volvieron valiosos para documentar los ciclos climáticos en la corriente de California y una variedad de respuestas biológicas a ellos. La investigación de CalCOFI llamó la atención mundial sobre la respuesta biológica al dramático evento de calentamiento del Pacífico en 1957-58 e introdujo el término “El Niño” en la literatura científica.
Elimine las columnas que tienen mas del 7 % de elementos NA. Para encontrar las columnas a eliminar use el siguiente código calcofi <- read.csv(“CalCOFI.csv”) apply(calcofi, 2, function(col)100*sum(is.na(col))/length(col)) Luego, elimine todas las las filas que coincidan con los outliers de la columna R_Depth.
Estudie las siguientes configuraciones para regresionar lineal- mente
De esta carga, se lee la base de datos, luego se crea un vector que identifica el porcentaje de NA que se tiene en cada columna de la base.
Luego de ello se procede a verificar aquellas columnas que estan por encima del 7% como porcentaje maximo a permitir NA, todos aquellos que sobrepasen el 7% seran eliminados.
setwd("~/Preg3")
base3 <- read.csv("CalCOFI.csv", header = TRUE)
porcentaje_max_NA_aceptado <- 7
columnas_NA <- apply(base3, 2, function(col)100*sum(is.na(col))/length(col))
columnas_NA <- as.data.frame(round(columnas_NA,2))
# eliminando los nombres del data frame
names(columnas_NA) <- "N.A"
indice_NA <- which(columnas_NA$N.A > porcentaje_max_NA_aceptado)
base3 <- base3[,-indice_NA]
kable(head(base3), format = "pipe")
| Cst_Cnt | Btl_Cnt | Sta_ID | Depth_ID | Depthm | T_degC | Salnty | STheta | RecInd | T_prec | S_prec | NH3q | C14A1q | C14A2q | DarkAq | MeanAq | IncTim | R_Depth | R_TEMP | R_POTEMP | R_SALINITY | R_SIGMA | R_SVA | R_DYNHT | R_PRES | DIC.Quality.Comment |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 054.0 056.0 | 19-4903CR-HY-060-0930-05400560-0000A-3 | 0 | 10.50 | 33.440 | 25.649 | 3 | 1 | 2 | 9 | 9 | 9 | 9 | 9 | 0 | 10.50 | 10.50 | 33.440 | 25.64 | 233.0 | 0.00 | 0 | ||
| 1 | 2 | 054.0 056.0 | 19-4903CR-HY-060-0930-05400560-0008A-3 | 8 | 10.46 | 33.440 | 25.656 | 3 | 2 | 2 | 9 | 9 | 9 | 9 | 9 | 8 | 10.46 | 10.46 | 33.440 | 25.65 | 232.5 | 0.01 | 8 | ||
| 1 | 3 | 054.0 056.0 | 19-4903CR-HY-060-0930-05400560-0010A-7 | 10 | 10.46 | 33.437 | 25.654 | 7 | 2 | 3 | 9 | 9 | 9 | 9 | 9 | 10 | 10.46 | 10.46 | 33.437 | 25.65 | 232.8 | 0.02 | 10 | ||
| 1 | 4 | 054.0 056.0 | 19-4903CR-HY-060-0930-05400560-0019A-3 | 19 | 10.45 | 33.420 | 25.643 | 3 | 2 | 2 | 9 | 9 | 9 | 9 | 9 | 19 | 10.45 | 10.45 | 33.420 | 25.64 | 234.1 | 0.04 | 19 | ||
| 1 | 5 | 054.0 056.0 | 19-4903CR-HY-060-0930-05400560-0020A-7 | 20 | 10.45 | 33.421 | 25.643 | 7 | 2 | 3 | 9 | 9 | 9 | 9 | 9 | 20 | 10.45 | 10.45 | 33.421 | 25.64 | 234.0 | 0.04 | 20 | ||
| 1 | 6 | 054.0 056.0 | 19-4903CR-HY-060-0930-05400560-0030A-7 | 30 | 10.45 | 33.431 | 25.651 | 7 | 2 | 3 | 9 | 9 | 9 | 9 | 9 | 30 | 10.45 | 10.45 | 33.431 | 25.65 | 233.5 | 0.07 | 30 |
Para proceder a eliminar los datos es necesario poder estandarizar los datos a fin de encontrar los valores atipicos fuera de una distribucion normal.
estandar <- (base3$R_Depth - mean(base3$R_Depth))/sd(base3$R_Depth)
indice_outlier <- which(abs(estandar)>3)
base3 <- base3[-indice_outlier,]
Luego es necesario ver las correlaciones enntre las variables antes de analizarlas:
matrix_cor <- base3 %>% filter(!is.na(T_prec), !is.na(S_prec), !is.na(NH3q), !is.na(C14A1q), !is.na(C14A2q), !is.na(DarkAq), !is.na(MeanAq), !is.na(R_SIGMA), !is.na(R_SVA), !is.na(R_DYNHT)) %>%
select(Cst_Cnt,Btl_Cnt, Depthm,RecInd,T_prec, S_prec, NH3q, C14A1q,C14A2q, DarkAq,MeanAq,R_Depth,R_TEMP,R_POTEMP,R_SALINITY,R_SIGMA,R_SVA,R_DYNHT,R_PRES) %>% cor()
whiteblack <- c("white", "black")
corrplot(matrix_cor, order = "hclust", addrect = 5, col = whiteblack, bg = "gold2")
library(caret)
## Warning: package 'caret' was built under R version 4.0.5
fit1 <- lm(R_SALINITY~R_Depth,data=base3)
stargazer(fit1, type= "text")
##
## ===================================================
## Dependent variable:
## -------------------------------
## R_SALINITY
## ---------------------------------------------------
## R_Depth 0.001***
## (0.00000)
##
## Constant 33.558***
## (0.001)
##
## ---------------------------------------------------
## Observations 806,781
## R2 0.423
## Adjusted R2 0.423
## Residual Std. Error 0.348 (df = 806779)
## F Statistic 591,367.000*** (df = 1; 806779)
## ===================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
MSE1 <- mean(fit1$residuals^2)
RMSE1 <- sqrt(MSE1)
MAE1 <- mean(abs(fit1$residuals))
fit2 <- lm(R_SALINITY~R_TEMP,data = base3)
stargazer(fit2,type = "text")
##
## ===================================================
## Dependent variable:
## -------------------------------
## R_SALINITY
## ---------------------------------------------------
## R_TEMP -0.053***
## (0.0001)
##
## Constant 34.416***
## (0.001)
##
## ---------------------------------------------------
## Observations 803,534
## R2 0.233
## Adjusted R2 0.233
## Residual Std. Error 0.401 (df = 803532)
## F Statistic 243,732.200*** (df = 1; 803532)
## ===================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
MSE2 <- mean(fit2$residuals^2)
RMSE2 <- sqrt(MSE2)
MAE2 <- mean(abs(fit2$residuals))
fit3<- lm(R_SALINITY~R_TEMP+R_Depth,data = base3)
stargazer(fit3,type = "text")
##
## ===================================================
## Dependent variable:
## -------------------------------
## R_SALINITY
## ---------------------------------------------------
## R_TEMP 0.005***
## (0.0001)
##
## R_Depth 0.001***
## (0.00000)
##
## Constant 33.484***
## (0.002)
##
## ---------------------------------------------------
## Observations 803,534
## R2 0.424
## Adjusted R2 0.424
## Residual Std. Error 0.347 (df = 803531)
## F Statistic 296,143.300*** (df = 2; 803531)
## ===================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
MSE3 <- mean(fit3$residuals^2)
RMSE3 <- sqrt(MSE3)
MAE3 <- mean(abs(fit3$residuals))
MSET <- c(MSE1,MSE2,MSE3)
RMSET <- c(RMSE1,RMSE2,RMSE3)
MAET <- c(MAE1,MAE2,MAE3)
MSET <- as.data.frame(MSET)
RMSET <- as.data.frame(RMSET)
MAET <-as.data.frame(MAET)
comparacion <- cbind(MSET, RMSET, MAET)
row.names(comparacion) <- c("Modelo 1","Modelo 2","Modelo 3")
comparacion
## MSET RMSET MAET
## Modelo 1 0.1209058 0.3477151 0.2465590
## Modelo 2 0.1606247 0.4007801 0.2814501
## Modelo 3 0.1205145 0.3471520 0.2492113
g22 <- comparacion %>% ggplot(aes(row.names(comparacion),MSET))+geom_bar(stat = "identity") + labs(title = "Modelo: MSE de los modelos")
g23 <- comparacion %>% ggplot(aes(row.names(comparacion),MAET))+geom_bar(stat = "identity")+ labs(title = "Modelo : MAE de los modelos")
g24 <- comparacion %>% ggplot(aes(row.names(comparacion),RMSET))+geom_bar(stat = "identity")+ labs(title = "Modelo : RMSE de los modelos")
grid.arrange(g22,g23,g24, nrow=1)
De lo siguiente se puede observar que el mejor modelo es el Modelo 3, que tiene el menor MSET de 0.120 y el menor RMSET de 0.347 y el segundo mejor MAE de 0.249; Modelo de R_SALINITY = R_TEMP + R_Depth.
Considere el archivo Reactiva_Peru_Lista_de_empresas_al_30102020.xlsx
el cual muestra la información relacionada al programa de ga- rantías Reactiva Perú. El Programa de Garantías del Gobierno
Nacional “Reactiva Perú”, creado mediante Decreto Legisla- tivo 1455, y modificado mediante Decreto Legislativo 1457, es
un programa sin precedentes en nuestro país, que tiene como objetivo dar una respuesta rápida y efectiva a las necesidades de liquidez que enfrentan las empresas ante el impacto del COVID-19. Así, el Programa busca asegurar la continuidad en la cadena
de pagos, otorgando garantías a las micro, pequeñas, me- dianas y grandes empresas a fin de que puedan acceder a
créditos de capital de trabajo, y puedan cumplir de esta mane- ra con sus obligaciones de corto plazo con sus trabajadores y
proveedores de bienes y servicios. El Gobierno Nacional, a través del Ministerio de Economía y Finanzas, garantiza los créditos colocados por las Empresas del Sistema Financiero (ESF). El programa se inició con S/30
000 millones en garantías, posteriormente, mediante el De- creto Legislativo 1485 se amplió el monto de las garantías en
S/30,000 millones adicionales, llegando a S/60 000 millones, equivalentes al 8 Mediante el Decreto Supremo 124-2020-EF se modificó el Programa “Reactiva Perú” con el objetivo de ampliar el monto máximo de los créditos a otorgar y flexibilizar las condiciones priorizando el acceso de las microempresas. Realice un estudio descriptivo univariado y bivariado de las variables: a) SECTOR ECONÓMICO b) NOMBRE DE ENTIDAD OTORGANTE DEL CRÉDITO c) MONTO PRÉSTAMO (S/) d) MONTO COBERTURADO (S/) e) DEPARTAMENTO
Por lo que el primer paso es cargar el archivo:
setwd("~/Preg4")
base4 <- read_excel("Reactiva_Peru_Lista_de_empresas_al_30102020.xlsx", skip = 2, col_names = TRUE)
## New names:
## * `` -> ...1
kable(head(base4), format= "pipe")
| …1 | RAZÓN SOCIAL | RUC/DNI | SECTOR ECONÓMICO | NOMBRE DE ENTIDAD OTORGANTE DEL CRÉDITO | NOMBRE DE 2DA. ENTIDAD OTORGANTE DEL CRÉDITO* | MONTO PRÉSTAMO (S/) | MONTO COBERTURADO (S/) | DEPARTAMENTO |
|---|---|---|---|---|---|---|---|---|
| 1 |