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 Gwanak-ro, Gwanak-gu\n Seoul, Seoul, 151-742 \nSouth Korea",..: 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(3845)
muestra <- datos[sample(x = 1:nrow(datos), size = round(nrow(datos) * 0.20), replace = FALSE), ]
muestra
## publications rank
## 45 52663 132
## 81 110735 169
## 203 96816 69
## 207 92009 108
## 188 174050 32
## 27 63645 136
## 28 45569 41
## 104 147074 39
## 272 103343 50
## 196 61271 161
## 191 81584 80
## 31 110482 83
## 100 184856 59
## 51 87321 143
## 291 147171 44
## 10 80596 76
## 294 87102 134
## 273 54854 97
## 267 110449 63
## 21 205011 9
## 156 104483 101
## 249 91913 71
## 96 208615 24
## 106 50624 76
## 140 46247 168
## 149 125528 68
## 245 134759 75
## 177 66150 188
## 209 52599 197
## 258 166488 65
## 256 50562 76
## 286 82976 95
## 113 64180 145
## 184 142627 37
## 12 75474 195
## 7 25757 133
## 166 247701 6
## 296 96097 68
## 38 58127 135
## 174 44002 46
## 206 41658 70
## 18 83632 158
## 178 60512 185
## 16 52453 77
## 143 191386 20
## 89 150565 25
## 2 99086 61
## 108 49900 13
## 264 72120 173
## 20 60672 142
## 40 60237 152
## 299 41257 161
## 285 44300 139
## 144 44656 100
## 50 478072 1
## 90 63050 187
## 101 177518 23
## 93 53334 118
## 116 138535 104
## 211 84784 180
¿De cuántos registros es la muestra?
n_registros <- nrow(muestra)
n_registros
## [1] 60
Convarianza entre publications y rank ¿Cuál es el valor de la covarianza ?
covarianza <- cov(muestra)
covarianza
## publications rank
## publications 4979035537 -2296971.834
## rank -2296972 3133.562
covarianza <- cov(muestra$publications, muestra$rank)
covarianza
## [1] -2296972
Correlación \(r\) entre publications y rank ¿Cuál es el valor de la correlación de Pearson y cómo se interpreta?
correlacion <- cor(muestra)
correlacion
## publications rank
## publications 1.000000 -0.581519
## rank -0.581519 1.000000
correlacion <- cor(muestra$publications, muestra$rank)
correlacion
## [1] -0.581519
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)
summary(modelo)
##
## Call:
## lm(formula = rank ~ publications, data = muestra)
##
## Residuals:
## Min 1Q Median 3Q Max
## -107.105 -32.132 -7.557 32.778 86.693
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 143.12543849 10.43481480 13.716 < 0.0000000000000002 ***
## publications -0.00046133 0.00008474 -5.444 0.0000011 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 45.93 on 58 degrees of freedom
## Multiple R-squared: 0.3382, Adjusted R-squared: 0.3268
## F-statistic: 29.64 on 1 and 58 DF, p-value: 0.000001102
¿Cuál es el valor del estadístico R Square en el modelo de regresión construído y cómo se interpreta?
r_cuadrado <- summary(modelo)$r.squared
r_cuadrado
## [1] 0.3381643
\[ 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?
coeficientes <- coef(modelo)
a <- coeficientes[1]
b <- coeficientes[2]
a; b
## (Intercept)
## 143.1254
## publications
## -0.0004613287
¿Cómo se observa la línea de tendencia?
f_linea_tendencia_reg_lineal(datos = muestra, modelo = modelo)
valor_publications <- 15000
prediccion <- predict(modelo, newdata = data.frame(publications = valor_publications))
prediccion
## 1
## 136.2055
valor_publications <- 20000
prediccion <- predict(modelo, newdata = data.frame(publications = valor_publications))
prediccion
## 1
## 133.8989
valor_publications <- 25000
prediccion <- predict(modelo, newdata = data.frame(publications = valor_publications))
prediccion
## 1
## 131.5922
En este caso como interpretación tenemos primeramente el planteamiento de un problema en el cual nos genera dos columnas de datos, la primera llamada “publications” y la segunda llamada “rank”, nosotros para generar los números usamos la semilla 3845 y ya dados estos valores usamos la muestra para generar todos los datos; La correlación, covarianza y regresión lineal.
Por otro lado el diagrama de dispersión se muestra una dispersión exponencial negativa con una fuera de correlación débil, ya que el índice de correlación estimado ronda entre los valores de -0.5819 en donde existe también valores atípicos y la línea de mejor ajuste es de…
\[ Y = 143.1254 -0.0004613287 \cdot x \]
También respondimos las incógnitas que existían de las cuales se rescataron los valores sobre las predicciones del ranking(rank), valor estadístico, línea de tendencia e interpretaciones sobre estas incógnitas.