forked from uayeb25/survey-cleaning
-
Notifications
You must be signed in to change notification settings - Fork 0
/
paper.Rmd
149 lines (89 loc) · 3.91 KB
/
paper.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
---
title: "Profile performance analysis"
author: "Uayeb Caballero"
date: "30 de abril de 2020"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(dplyr)
library(ggplot2)
```
## Introducción
En este pequeño analisis vamos a estudiar cuales son las caracteristicas de los estudiantes con mayor riesgo a tener un desempeño academico bajo. la recolección de información se realizo mediante encuestan en aplicadas a los alumnos de base de datos I y programación orientada a objetos. Sabemos que es de gran importancia para los docentes la Universidad Nacional Autonoma de Honduras conocer mejors a sus alumnos y planificar intervenciones mas efectivas por lo que este estudio demuestra cuales deberian de ser esos driver a tener en cuenta al inicio del periodo academico.
## Variables capturadas
```{r reading_dataset, echo=FALSE}
survey <- read.csv("survey_cleaned.csv",sep = ",", header = T)
str(survey)
```
Como se puede observar se capturaron `r nrow(survey)` observaciones y `r length(names(survey))` columnas, estas fueron diseñadas en funciones de las siguientes categorias:
1. Información demografica
2. Registro
3. Matricula
4. ....
A continuación mostramos un resumen rapido de cada una de nuestra columnas:
```{r}
summary(survey)
```
## Tratamiento de columnas
Uno de los tratamientos tipicos es la deteccion de valores nulos y según la regla de negocio realizar algún tipo de transformación. por ejemplo, nuestro dataset mostro los siguientes valores nulos
```{r echo=FALSE}
na.summay <- c()
for( myname in names(survey)){
s <- as.data.frame(prop.table(table(is.na(survey[,myname]))))
operacion <- s %>% filter(Var1 == TRUE) %>% select(Freq)
df_temp <- data.frame(
column.name=c(myname),
na.percentage = ifelse( length(operacion$Freq) == 0, 0, operacion$Freq[1] )
)
na.summay <- rbind(na.summay,df_temp)
}
na.summay %>% arrange(-na.percentage) %>% filter(na.percentage > 0)
```
### Tratamiento de anios_becas
Si analizamos anios_beca podremos encontrar la siguiente información
```{r}
summary(survey$anios_beca)
```
31 NA's en una columna donde saber que los NA's se pueden interpretar como ceros, por eso imputamos esos valores por el valor sugerido.
```{r}
survey[is.na(survey$anios_beca),"anios_beca"] <- 0
summary(survey$anios_beca)
```
## Analisis descriptivo de datos
En esta seccion comenzamos a sugerir un par de transformacion en funcion de su caracteristicas e interpretación, como por ejemplo:
#### Jornada
```{r}
df_perc <- as.data.frame(prop.table(table(survey$jornada)))
df_perc <- df_perc %>% arrange(-Freq)
df_perc
boxplot(df_perc$Freq)
hist(df_perc$Freq)
qqnorm(df_perc$Freq)
df_perc[df_perc$Var1 %in% c("Mañana, Tarde, Noche","Mañana, Noche") , "categoria"] <- "Jornada Completa"
df_perc[df_perc$Var1 %in% c("Tarde","Noche") , "categoria"] <- "Unica Jornada"
df_perc[df_perc$Var1 %in% c("Tarde, Noche") , "categoria"] <- "Doble Jornada"
df_perc <- df_perc %>% select(Var1,categoria)
survey <- left_join(survey,df_perc,by=c("jornada"="Var1"))
survey <- survey[,!(names(survey) %in% c("jornada"))]
names(survey)[length(names(survey))] <- "jornada"
prop.table(table(survey$jornada))
```
## Correlaciones
```{r}
prop.table(table(survey$indice,survey$trabaja),1)
ggplot(survey) +
aes(x = indice, fill = factor(trabaja)) +
geom_bar(position = "stack") +
theme(axis.text.x = element_text(angle = 45))
ggplot(survey) +
aes(x = indice, fill = factor(trabaja)) +
geom_bar(position = "fill") +
theme(axis.text.x = element_text(angle = 45))
chisq.test(table(survey$indice,survey$trabaja))
```
H_0: Las categorias de indice y trabaja son independientes.
H_A: Las categorias son dependientes.
Regla: Aceptamos nuestras hipotesis nula cuando el p-value de nuestra prueba chis.test es menos a 0.05
Conclusion: Según nuestro p-value rechazamos nuestra hipotesis nula, por la tanta las variables son dependientes.
## Explicativa