Elaborar un documento markdown que describa la relación entre dos variables numéricas de publications y rank de una muestra del conjunto de datos universidades determinando la dispersión de los datos con diagrama de dispersión, la covarianza, la correlación de Pearson y la regresión lineal simple que servirá para simular predicciones de la variable dependiente rank.
library(ggplot2)
library(readr)
library(dplyr)
library(knitr)
library(DT)
library(mosaic)
library(PerformanceAnalytics) # Para coorelaciones gráficas
source("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/2023/funciones/funciones%20para%20dispersion%20correlacion%20regresion.R", encoding = "UTF-8")
datos_bruto <- read.csv("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/2023/datos/universidades_clean.csv", encoding = "UTF-8", stringsAsFactors = TRUE)
str(datos_bruto)
## 'data.frame': 300 obs. of 17 variables:
## $ X.1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ name : Factor w/ 300 levels "Aarhus University",..: 1 2 3 4 5 6 7 8 9 10 ...
## $ world_ranking : Factor w/ 200 levels "","#1 of 14,131",..: 59 159 1 188 1 1 1 145 106 175 ...
## $ region_ranking : Factor w/ 200 levels "","#1 of 1,756",..: 101 108 1 115 1 1 1 96 200 126 ...
## $ country_ranking: Factor w/ 198 levels "","#1 of 101",..: 59 118 1 128 1 1 1 102 193 134 ...
## $ region : Factor w/ 6 levels "Africa","Asia",..: 3 3 5 5 3 2 5 3 3 5 ...
## $ country : Factor w/ 34 levels "Argentina","Australia",..: 17 29 34 6 17 18 34 14 33 34 ...
## $ city.state : Factor w/ 153 levels "Aarhus","Adelaide",..: 141 140 150 99 38 64 102 7 39 144 ...
## $ acceptance_rate: Factor w/ 87 levels "","1%","10%",..: 8 1 50 80 4 48 60 1 51 1 ...
## $ publication : Factor w/ 300 levels "100,167","100,238",..: 272 296 113 293 236 255 98 18 112 250 ...
## $ website : Factor w/ 295 levels "auburn.edu","bc.edu",..: 120 119 1 117 219 3 2 6 124 123 ...
## $ phone_no : Factor w/ 297 levels "","+1 (204) 474 8880",..: 96 285 209 137 39 265 256 253 273 212 ...
## $ address : Factor w/ 300 levels "1-1-1 Tennodai\n Tsukuba, Ibaraki, 305-8577 \nJapan",..: 205 275 247 167 152 213 30 217 195 215 ...
## $ rank : int 150 61 83 88 60 204 133 49 193 76 ...
## $ publications : int 89633 99086 36231 97754 74922 82676 25757 107676 36150 80596 ...
## $ acceptance_num : int 15 NA 57 86 11 55 67 NA 58 NA ...
Ejecutar esta instrucciones para limpiar los datos y dejar solo las variable de interés
datos <- select(datos_bruto, publications, rank)
str(datos)
## 'data.frame': 300 obs. of 2 variables:
## $ publications: int 89633 99086 36231 97754 74922 82676 25757 107676 36150 80596 ...
## $ rank : int 150 61 83 88 60 204 133 49 193 76 ...
Cada equipo decide el valor de la semilla random, por ejemplo 2023, ustedes pongan los cuatro o tres últimos dígitos de su número de control o el de uno de ustedes
set.seed(1091)
muestra <- datos[sample(x = 1:nrow(datos), size = round(nrow(datos) * 0.20), replace = FALSE), ]
muestra
## publications rank
## 36 92538 87
## 61 222807 14
## 134 153863 123
## 195 54962 126
## 41 51928 102
## 184 142627 37
## 288 43001 16
## 222 124921 124
## 17 66210 172
## 2 99086 61
## 229 57197 170
## 59 97889 89
## 224 73560 112
## 290 49351 156
## 140 46247 168
## 42 41512 94
## 179 104806 58
## 192 90413 91
## 297 198095 11
## 169 72006 84
## 104 147074 39
## 53 104130 196
## 190 58581 168
## 96 208615 24
## 248 261797 48
## 107 70384 134
## 156 104483 101
## 217 56037 46
## 81 110735 169
## 284 95375 72
## 141 54629 182
## 276 81979 117
## 287 47281 37
## 296 96097 68
## 14 94862 111
## 234 48417 94
## 221 305066 3
## 275 270033 8
## 123 55990 15
## 85 64302 201
## 172 260850 7
## 143 191386 20
## 171 179956 30
## 129 109945 86
## 144 44656 100
## 252 64274 154
## 202 202516 21
## 201 96408 103
## 191 81584 80
## 282 93456 106
## 120 45185 129
## 27 63645 136
## 112 73582 175
## 147 44011 192
## 39 68328 167
## 199 88028 127
## 76 242073 4
## 47 107016 67
## 56 57371 153
## 38 58127 135
¿De cuántos registros es la muestra?
Convarianza entre publications y rank ¿Cuál es el valor de la covarianza ?
covarianza <- cov(x = muestra$publications, y = muestra$rank, )
paste("El valor de la covarianza es ",covarianza)
## [1] "El valor de la covarianza es -2532614.89265537"
Correlación \(r\) entre publications y rank ¿Cuál es el valor de la correlación de Pearson y cómo se interpreta?
r <- cor(x = muestra$publications, y = muestra$rank)
paste("El valor de la correlación es ",r)
## [1] "El valor de la correlación es -0.653814284231175"
Diagrama de dispersión entre publications y rank ¿Cómo se observa el diagrama de dispersión de las dos variables x publications e y rank?
f_diag.dispersion(muestra)
Construir el modelo de regresión entre publications y rank ¿Cuáles son los estadísticos del modelos de regresión: summary(modelo)
modelo <- lm(data = muestra, formula = rank~publications)
modelo
##
## Call:
## lm(formula = rank ~ publications, data = muestra)
##
## Coefficients:
## (Intercept) publications
## 155.4905481 -0.0005647
¿Cuál es el valor del estadístico R Square en el modelo de regresión construído y cómo se interpreta?
rsquare = r ^ 2
paste("El valor del R Square es ",rsquare)
## [1] "El valor del R Square es 0.427473118264723"
\[ Y = a + b \cdot x \]
Coeficientes \(a\) y \(b\) de la fórmula de regresión lineal simple ¿Cuál es el valor de los coeficientes?
a <- modelo$coefficients[1]
b <- modelo$coefficients[2]
a
## (Intercept)
## 155.4905
b
## publications
## -0.0005647431
¿Cómo se observa la línea de tendencia?
ggplot() +
geom_point(data = muestra, aes(x = publications, y = rank), colour='blue') +
geom_point(aes(x= mean(muestra$publications), y = mean(muestra$rank)), col = 'green') +
geom_line(aes( x = muestra$publications, y = predict(modelo, muestra)), color = "red") +
xlab("Publications") +
ylab("Rank") +
ggtitle("Linea de tendencia sobre muestra")
x <- c(15000)
prediccion <- predict(object = modelo, newdata = data.frame(publications = x))
prediccion
## 1
## 147.0194
x <- c(20000)
prediccion <- predict(object = modelo, newdata = data.frame(publications = x))
prediccion
## 1
## 144.1957
x <- c(25000)
prediccion <- predict(object = modelo, newdata = data.frame(publications = x))
prediccion
## 1
## 141.372
Comenzamos el caso generando una muestra de 60 datos del total de 300 datos que eran en un inicio, usando la semilla 1091, iniciamos interpretando el diagrama de dispersión observando que está notablemente inclinada hacía la izquierda, estando cerca de la línea de tendencias, y sobre la correlación podemos decir que entre más publicaciones mejor el ranking. Las predicciones pueden decir que a más publicaciones el ranking sube, comprobando de otra manera lo que mencionamos anteriormente sobre la correlación.