1. Descargar el dataset de admis1.csv del GES.
2. Separe su dataset en 70% para el train y 30% para el test.
library(ggplot2)
library(readr)
admis <- read.csv("admis1.csv", stringsAsFactors = F)
head(admis)
train_index <- sample(1:nrow(admis), size = nrow(admis)*0.7)
test_index <- setdiff(1:nrow(admis), train_index)
train <- admis[train_index,]
test <- admis[test_index,]
c(nrow(train), nrow(test))
[1] 350 150
3. Diga cuales son las variables que tiene este dataset y que significa cada una.
Este dataset consta de las siguientes variables:
colnames(admis)
[1] "Serial.No." "GRE.Score" "TOEFL.Score" "University.Rating" "SOP" "LOR"
[7] "CGPA" "Research" "Chance.of.Admit"
Donde: * GRE Score: Por sus siglas en ingles, Graduate Record Examinations es una prueba estandarizada que es un requerimiento de admision en la mayoria de Universidades en Estados Unidos. Indica el punteo obtenido en esta prueba, el punteo mayor es de 340 puntos.
TOEFL Score: Test of English as a Foreign Language, es una prueba estandarizada para medir el dominio del idioma ingles en personas con ese lenguaje no nativo y que desean ingresar a una Universidad de habla ingles. Indica el punteo obtenido en esta prueba, el punteo mayor es de 120 puntos.
University Rating: Es un valor de 1 a 5 que corresponde a un rating que le da la Universidad a cada solicitante.
SOP: Por sus siglas en ingles Statement of Purpose es un ensayo escrito por un posible estudiante que solicita admision en la Universidad. Es un valor de 1 a 5, donde 5 simbolizala mayor calificacion.
LOR: Por sus siglas en ingles Letter of Recommendation es un documento en el cual se exponen las cualidades, capacidades y caracteristicas de una persona que esta siendo recomendada. Es un valor de 1 a 5, donde 5 simbolizala mayor calificacion.
CGPA: Cumulative Grade Point Average se refiere al desempeño academico como un promedio de los semestres completados. Es un promedio entre 0 y 10.
Research: Es un valor de 0 o 1 dependiendo de si el solicitante tuvo experiencia de reaserch.
Chance of Admit: Es el chance de admision que tienen, es un valor entre 0 y 1. Donde 1 significa que tiene mayor chance de admision.
4. Realice una grafica separada para las variables: GRE.Score, TOEFL.Score, SOP, LOR, CGPA, University.Rating contra Chance.of.Admit.
ggplot(admis, aes(x = admis$GRE.Score, y = admis$Chance.of.Admit)) +
geom_point() +
xlab("GRE Score") +
ylab("Chance of Admit") +
labs(title = "GRE.Score vs Chance.of.Admit")
ggplot(admis, aes(x = admis$TOEFL.Score, y = admis$Chance.of.Admit)) +
geom_point() +
xlab("TOEFL Score") +
ylab("Chance of Admit") +
labs(title = "TOEFL.Score vs Chance.of.Admit")
ggplot(admis, aes(x = admis$SOP, y = admis$Chance.of.Admit)) +
geom_point() +
xlab("SOP") +
ylab("Chance of Admit") +
labs(title = "SOP vs Chance.of.Admit")
ggplot(admis, aes(x = admis$LOR, y = admis$Chance.of.Admit)) +
geom_point() +
xlab("LOR") +
ylab("Chance of Admit") +
labs(title = "LOR vs Chance.of.Admit")
ggplot(admis, aes(x = admis$CGPA, y = admis$Chance.of.Admit)) +
geom_point() +
xlab("CGPA") +
ylab("Chance of Admit") +
labs(title = "CGPA vs Chance.of.Admit")
ggplot(admis, aes(x = admis$University.Rating, y = admis$Chance.of.Admit)) +
geom_point() +
xlab("University Rating") +
ylab("Chance of Admit") +
labs(title = "University.Rating vs Chance.of.Admit")
5. Diga que tipo de regresion utilizaria para construir un modelo de regresion que permita predecir el Chance.of.Admit, esto debe realizarlo con cada variable independiente es decir construir un modelo de dos variables, una explicada y una explicatoria.
fit1 <- lm(data=train, train$Chance.of.Admit~train$GRE.Score)
summary(fit1)
Call:
lm(formula = train$Chance.of.Admit ~ train$GRE.Score, data = train)
Residuals:
Min 1Q Median 3Q Max
-0.33672 -0.04066 0.00886 0.05587 0.17559
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.3191838 0.1312614 -17.67 <2e-16 ***
train$GRE.Score 0.0096158 0.0004143 23.21 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.08481 on 348 degrees of freedom
Multiple R-squared: 0.6075, Adjusted R-squared: 0.6064
F-statistic: 538.6 on 1 and 348 DF, p-value: < 2.2e-16
fit2 <- lm(data=train, train$Chance.of.Admit~train$TOEFL.Score)
summary(fit2)
Call:
lm(formula = train$Chance.of.Admit ~ train$TOEFL.Score, data = train)
Residuals:
Min 1Q Median 3Q Max
-0.31565 -0.03692 0.01259 0.05759 0.19731
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.176496 0.082000 -14.35 <2e-16 ***
train$TOEFL.Score 0.017747 0.000764 23.23 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.08477 on 348 degrees of freedom
Multiple R-squared: 0.6079, Adjusted R-squared: 0.6068
F-statistic: 539.6 on 1 and 348 DF, p-value: < 2.2e-16
fit3 <- lm(data=train, train$Chance.of.Admit~train$SOP)
summary(fit3)
Call:
lm(formula = train$Chance.of.Admit ~ train$SOP, data = train)
Residuals:
Min 1Q Median 3Q Max
-0.44469 -0.05731 0.01638 0.06745 0.24220
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.405657 0.019200 21.13 <2e-16 ***
train$SOP 0.094759 0.005469 17.33 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.09919 on 348 degrees of freedom
Multiple R-squared: 0.4631, Adjusted R-squared: 0.4616
F-statistic: 300.2 on 1 and 348 DF, p-value: < 2.2e-16
fit4 <- lm(data=train, train$Chance.of.Admit~train$LOR)
summary(fit4)
Call:
lm(formula = train$Chance.of.Admit ~ train$LOR, data = train)
Residuals:
Min 1Q Median 3Q Max
-0.34314 -0.05775 -0.00003 0.07820 0.26552
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.405816 0.022082 18.38 <2e-16 ***
train$LOR 0.092442 0.006175 14.97 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.1056 on 348 degrees of freedom
Multiple R-squared: 0.3917, Adjusted R-squared: 0.39
F-statistic: 224.1 on 1 and 348 DF, p-value: < 2.2e-16
fit5 <- lm(data=train, train$Chance.of.Admit~poly(train$CGPA,2))
summary(fit5)
Call:
lm(formula = train$Chance.of.Admit ~ poly(train$CGPA, 2), data = train)
Residuals:
Min 1Q Median 3Q Max
-0.278177 -0.025733 0.004768 0.036729 0.172836
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.725400 0.003489 207.933 <2e-16 ***
poly(train$CGPA, 2)1 2.213273 0.065266 33.911 <2e-16 ***
poly(train$CGPA, 2)2 0.034825 0.065266 0.534 0.594
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.06527 on 347 degrees of freedom
Multiple R-squared: 0.7682, Adjusted R-squared: 0.7669
F-statistic: 575.1 on 2 and 347 DF, p-value: < 2.2e-16
6. Utilice el método smooth para mostrar en cada gráfica el modelo que mejor se ajusta a los datos, esto debe hacerlo para cada gráfica por separado
ggplot(admis, aes(x = admis$GRE.Score, y = admis$Chance.of.Admit)) +
geom_point() +
geom_smooth() +
xlab("GRE Score") +
ylab("Chance of Admit") +
labs(title = "GRE.Score vs Chance.of.Admit")
ggplot(admis, aes(x = admis$TOEFL.Score, y = admis$Chance.of.Admit)) +
geom_point() +
geom_smooth() +
xlab("TOEFL Score") +
ylab("Chance of Admit") +
labs(title = "TOEFL.Score vs Chance.of.Admit")
ggplot(admis, aes(x = admis$SOP, y = admis$Chance.of.Admit)) +
geom_point() +
geom_smooth() +
xlab("SOP") +
ylab("Chance of Admit") +
labs(title = "SOP vs Chance.of.Admit")
ggplot(admis, aes(x = admis$LOR, y = admis$Chance.of.Admit)) +
geom_point() +
geom_smooth() +
xlab("LOR") +
ylab("Chance of Admit") +
labs(title = "LOR vs Chance.of.Admit")
ggplot(admis, aes(x = admis$CGPA, y = admis$Chance.of.Admit)) +
geom_point() +
geom_smooth() +
xlab("CGPA") +
ylab("Chance of Admit") +
labs(title = "CGPA vs Chance.of.Admit")
ggplot(admis, aes(x = admis$University.Rating, y = admis$Chance.of.Admit)) +
geom_point() +
geom_smooth() +
xlab("University Rating") +
ylab("Chance of Admit") +
labs(title = "University.Rating vs Chance.of.Admit")
7. Para cada caso produzca un modelo lo más aproximado que sea posible utilizando la función LM y muéstrelo graficado.
1. Realice un modelo de regresión (lineal/no lineal) con todas las variables anteriores, y diga la significancia de cada una de las variables
fit_modelo <- lm(data = train, train$Chance.of.Admit ~ poly(train$GRE.Score,2)+ poly(train$TOEFL.Score,2) + train$CGPA + train$SOP + train$LOR + train$University.Rating)
summary(fit_modelo)
Call:
lm(formula = train$Chance.of.Admit ~ poly(train$GRE.Score, 2) +
poly(train$TOEFL.Score, 2) + train$CGPA + train$SOP + train$LOR +
train$University.Rating, data = train)
Residuals:
Min 1Q Median 3Q Max
-0.282850 -0.022153 0.008705 0.033871 0.144877
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.4541444 0.0936201 -4.851 1.87e-06 ***
poly(train$GRE.Score, 2)1 0.3982560 0.1204431 3.307 0.001045 **
poly(train$GRE.Score, 2)2 0.0250460 0.0798716 0.314 0.754033
poly(train$TOEFL.Score, 2)1 0.2389666 0.1229526 1.944 0.052770 .
poly(train$TOEFL.Score, 2)2 -0.0189624 0.0786073 -0.241 0.809522
train$CGPA 0.1269176 0.0117728 10.781 < 2e-16 ***
train$SOP -0.0009985 0.0057588 -0.173 0.862447
train$LOR 0.0183292 0.0049428 3.708 0.000243 ***
train$University.Rating 0.0099033 0.0047764 2.073 0.038885 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.06044 on 341 degrees of freedom
Multiple R-squared: 0.8047, Adjusted R-squared: 0.8001
F-statistic: 175.6 on 8 and 341 DF, p-value: < 2.2e-16
En este modelo podemos observar que el GRE Score es altamente significante incluso en segundo grado. También el CGPA es muy significante
2. Produzca el modelo que usted considere mejor para predecir el Chance.of.Admit.
fit_modelo2 <- lm(data = train, train$Chance.of.Admit ~ poly(train$GRE.Score,2) + train$CGPA + train$TOEFL.Score)
y_hat_train <- predict(fit_modelo2, train)
MSE6_train <- sum((train$Chance.of.Admit - y_hat_train)^2)
MSE6_train
[1] 1.344995
summary(fit_modelo2)
Call:
lm(formula = train$Chance.of.Admit ~ poly(train$GRE.Score, 2) +
train$CGPA + train$TOEFL.Score, data = train)
Residuals:
Min 1Q Median 3Q Max
-0.292467 -0.020900 0.007207 0.036905 0.129618
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.888624 0.114698 -7.747 1.06e-13 ***
poly(train$GRE.Score, 2)1 0.386840 0.121100 3.194 0.00153 **
poly(train$GRE.Score, 2)2 0.021286 0.063464 0.335 0.73752
train$CGPA 0.151124 0.010781 14.018 < 2e-16 ***
train$TOEFL.Score 0.002963 0.001101 2.690 0.00748 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.06244 on 345 degrees of freedom
Multiple R-squared: 0.7891, Adjusted R-squared: 0.7867
F-statistic: 322.7 on 4 and 345 DF, p-value: < 2.2e-16
3. Realice predicciones con el 30% de data resultante y compare los resultados estimados contra los resultados reales
prediccion_test <- predict(fit_modelo2,newdata=test)