Objetivo

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.

Descripción

Desarrollo

Cargar librerías

library(ggplot2)
library(readr)
library(dplyr)
library(knitr)
library(DT)
library(mosaic)
library(PerformanceAnalytics) # Para coorelaciones gráficas

Cargar funciones preparadas

source("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/2023/funciones/funciones%20para%20dispersion%20correlacion%20regresion.R", encoding = "UTF-8")

Cargar datos

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 ...

Transformar datos

Seleccionar solo las variables de interés publications y rank

Ejecutar esta instrucciones para limpiar los datos y dejar solo las variable de interés

  • publications_Variable x independiente
  • rank: variabel y dependiente
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 ...

Determinar una muestra del 20%

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(1300)
muestra <- datos[sample(x = 1:nrow(datos), size = round(nrow(datos) * 0.20), replace = FALSE), ]
muestra
##     publications rank
## 132        59274  163
## 99        168516   96
## 101       177518   23
## 6          82676  204
## 249        91913   71
## 244        57373   91
## 175       148394   27
## 298        95497   56
## 136        44721  138
## 160       184212   33
## 37         60031  157
## 29        178305   22
## 271        87773   92
## 130        68575  100
## 81        110735  169
## 47        107016   67
## 142        49569  169
## 44         38355  132
## 3          36231   83
## 292        72575  194
## 279        54472  166
## 68         59116  135
## 19         37571   79
## 180        72332  122
## 170        40788  176
## 143       191386   20
## 166       247701    6
## 28         45569   41
## 181       136745   73
## 232        52681  149
## 53        104130  196
## 223       227099   17
## 286        82976   95
## 204        71719  113
## 195        54962  126
## 288        43001   16
## 263       261987   16
## 14         94862  111
## 121       287025    2
## 289        44145  234
## 246        42254  216
## 95         60015  111
## 140        46247  168
## 27         63645  136
## 261        86041  177
## 147        44011  192
## 291       147171   44
## 190        58581  168
## 109        72493  190
## 59         97889   89
## 102        50791   40
## 118        99504   74
## 174        44002   46
## 275       270033    8
## 80         90533  114
## 151        67014  174
## 83        106518  154
## 168       160816   46
## 2          99086   61
## 217        56037   46

¿De cuántos registros es la muestra?

resultado = length(muestra$publications + muestra$rank)
paste("Muestra de: ", resultado)
## [1] "Muestra de:  60"

Determinar la covarianza

Convarianza entre publications y rank ¿Cuál es el valor de la covarianza?

covarianzita = cov(muestra$publications, muestra$rank)
paste("La covarianza es de: ", covarianzita)
## [1] "La covarianza es de:  -2545513.90338983"

Determinar la correlación

Correlación \(r\) entre publications y rank ¿Cuál es el valor de la correlación de Pearson y cómo se interpreta?

correlacioncita = cor(muestra$publications, muestra$rank)
paste("La correlación es de: ", correlacioncita)
## [1] "La correlación es de:  -0.626375989592341"

Diagrama de dispresión

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(data.frame(muestra$publications, muestra$rank))

Regresión

Construir el modelo de regresión entre publications y rank ¿Cuáles son los estadísticos del modelos de regresión: summary(modelo)

regresioncita = lm(data = muestra, formula = rank  ~ publications)
summary(regresioncita)
## 
## Call:
## lm(formula = rank ~ publications, data = muestra)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -122.289  -29.899   -4.804   34.851   96.424 
## 
## Coefficients:
##                 Estimate  Std. Error t value             Pr(>|t|)    
## (Intercept)  165.0763992  11.8985244   13.87 < 0.0000000000000002 ***
## publications  -0.0006230   0.0001018   -6.12         0.0000000865 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 49.98 on 58 degrees of freedom
## Multiple R-squared:  0.3923, Adjusted R-squared:  0.3819 
## F-statistic: 37.45 on 1 and 58 DF,  p-value: 0.00000008649

Valor del R Square

¿Cuál es el valor del estadístico R Square en el modelo de regresión construído y cómo se interpreta?

squarecito = summary(regresioncita)$r.squared
print("Representa el 39.23 % de la variabilidad de su variable dependiente.")
## [1] "Representa el 39.23 % de la variabilidad de su variable dependiente."
paste("El valor del R Square es de: ", squarecito)
## [1] "El valor del R Square es de:  0.392346880337784"

Coeficientes a y b

\[ 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?

coeficiencitos = coef(regresioncita)
a = coeficiencitos[1]
b = coeficiencitos[2]

paste("El coeficiente a es: ", a)
## [1] "El coeficiente a es:  165.076399159491"
paste("El coeficiente b es: ", b)
## [1] "El coeficiente b es:  -0.00062295570226393"

Linea de tendencia

¿Cómo se observa la línea de tendencia?

f_linea_tendencia_reg_lineal(muestra, regresioncita)

Predicciones

¿Cuál es la predicción del ranking (rank) para un valor de publications igual a 15000?

prediccionsita = predict(regresioncita, data.frame(publications = 15000))
paste("La predicción es apróximadamente de: ", prediccionsita)
## [1] "La predicción es apróximadamente de:  155.732063625532"

¿Cuál es la predicción del ranking (rank) para un valor de publications igual a 20000?

prediccionsita = predict(regresioncita, data.frame(publications = 20000))
paste("La predicción es apróximadamente de: ", prediccionsita)
## [1] "La predicción es apróximadamente de:  152.617285114212"

¿Cuál es la predicción del ranking (rank) para un valor de publications igual a 25000?

prediccionsita = predict(regresioncita, data.frame(publications = 25000))
paste("La predicción es apróximadamente de: ", prediccionsita)
## [1] "La predicción es apróximadamente de:  149.502506602892"

Intrepretación

En este trabajo se ha elaborado un documento markdown que describe la relación entre dos variables numéricas de publications y rank, de una muestra del conjunto de datos. Para ello, se ha utilizado el análisis exploratorio de datos, la covarianza, la correlación y la regresión lineal simple. Los resultados obtenidos muestran que existe una relación inversa entre las dos variables, es decir, a mayor número de publications menor es el rank. Esta relación es moderadamente fuerte y estadísticamente significativa, según el coeficiente de correlación. La recta de regresión lineal simple ajusta bien los datos y permite estimar el valor de rank a partir del valor de publications. Esta información puede ser útil para evaluar el desempeño académico de las universidades y simular predicciones de la variable dependiente rank.

¿El modelo es eficiente por encima del 60% en Multiple R Suqare? , ¿se acepta o se descarta?

En este caso el modelo no es eficiente porque nuestro R Square es 39.23 %, por lo tanto, se descarta. No es un modelo adecuado.

El valor de la covarianza es: -2545513.90338983

Significa que las variables tienden a moverse en direcciones opuestas, ya que son negativas.

El valor de la correlación es: -0.626375989592341.

Significa que la relación es inversa y linealmente negativa.

El valor de los coeficientes en la regresión son:

a =165.076399159491.

b = -0.00062295570226393.

El punto a indica el punto donde la línea de regresión cruza el eje vertical (eje y). El punto b indica como cambia la variable dependiente en respuesta a un cambio unitario en la variable predictora(en este caso fue una relación inversa).

Las predicciones fueron:

155.732063625532 para 15000 publicaciones.

152.617285114212 para 20000 publicaciones.

149.502506602892 para 25000 publicaciones.

Significa la estimación del valor esperado respecto a la variable dependiente. Dicho en otra palabras, entre más publicaciones existan estará posicionado en un lugar más alto del ranking.