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

datos <- datos_bruto%>%
  select(publications, 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 <- datos_bruto %>%
    select(publications, rank)
colnames(datos) <- c("publications", "rank")
datatable(datos, caption = "Universidades")

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(1152)
muestra <- datos[sample(x = 1:nrow(datos), size = round(nrow(datos) * 0.20), replace = FALSE), ]
muestra
##     publications rank
## 132        59274  163
## 296        96097   68
## 233       107846  115
## 162        92888  131
## 157       102678   98
## 31        110482   83
## 44         38355  132
## 249        91913   71
## 53        104130  196
## 100       184856   59
## 224        73560  112
## 34         77881  175
## 261        86041  177
## 185        76010  124
## 109        72493  190
## 58        138093   52
## 219       155134   53
## 137       188228   54
## 228        54930  126
## 265        75185  146
## 300       176136  109
## 286        82976   95
## 290        49351  156
## 114       143641   35
## 259        76418  138
## 135        92622   55
## 26         82950  140
## 171       179956   30
## 160       184212   33
## 9          36150  193
## 213        43893    5
## 147        44011  192
## 148       134970   78
## 139        42442   87
## 78         89024  141
## 149       125528   68
## 182        48999   76
## 167        48643   28
## 54         67052    5
## 227        62717  186
## 184       142627   37
## 112        73582  175
## 298        95497   56
## 129       109945   86
## 289        44145  234
## 204        71719  113
## 84         99798  136
## 75        109613   93
## 288        43001   16
## 285        44300  139
## 297       198095   11
## 102        50791   40
## 252        64274  154
## 120        45185  129
## 271        87773   92
## 146        75882   42
## 30         78063  178
## 140        46247  168
## 90         63050  187
## 70        130650  177

¿De cuántos registros es la muestra?

60

Determinar la covarianza

Convarianza entre publications y rank

¿Cuál es el valor de la covarianza ?

n <- nrow(muestra)
numerador <- sum((muestra$publications - mean(muestra$publications))  * (muestra$rank - mean(muestra$rank)))
denominador <- n - 1
covarianza <- numerador / denominador
covarianza
## [1] -1086728

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?

cor(muestra$publications, muestra$rank)
## [1] -0.4299452

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)

modelo <- lm(data = muestra, formula = rank ~ publications)
modelo
## 
## Call:
## lm(formula = rank ~ publications, data = muestra)
## 
## Coefficients:
##  (Intercept)  publications  
##  160.4440484    -0.0005827

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?

summary(modelo)
## 
## Call:
## lm(formula = rank ~ publications, data = muestra)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -129.867  -29.483   -3.091   33.909   99.280 
## 
## Coefficients:
##                 Estimate  Std. Error t value           Pr(>|t|)    
## (Intercept)  160.4440484  16.1886695   9.911 0.0000000000000432 ***
## publications  -0.0005827   0.0001607  -3.627           0.000607 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 53.3 on 58 degrees of freedom
## Multiple R-squared:  0.1849, Adjusted R-squared:  0.1708 
## F-statistic: 13.15 on 1 and 58 DF,  p-value: 0.000607
paste("El coeficiente de determinación o Multiple R-squared: es igual al cuadrado del coeficiente de correlación:  0.1849 ")
## [1] "El coeficiente de determinación o Multiple R-squared: es igual al cuadrado del coeficiente de correlación:  0.1849 "

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?

a <- modelo$coefficients[1]
b <- modelo$coefficients[2]
a ; b
## (Intercept) 
##     160.444
##  publications 
## -0.0005827196

Linea de tendencia

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

f_linea_tendencia_reg_lineal(muestra, modelo)

Predicciones

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

valor_publications = 15000
prediccion <- predict(modelo, data.frame(publications = valor_publications))
paste("La predicción para un valor de publications igual a ", valor_publications, " es: ", prediccion)
## [1] "La predicción para un valor de publications igual a  15000  es:  151.703254199896"

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

valor_publications = 20000
prediccion <- predict(modelo, data.frame(publications = valor_publications))
paste("La predicción para un valor de publications igual a ", valor_publications, " es: ", prediccion)
## [1] "La predicción para un valor de publications igual a  20000  es:  148.789656117487"

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

valor_publications = 25000
prediccion <- predict(modelo, data.frame(publications = valor_publications))
paste("La predicción para un valor de publications igual a ", valor_publications, " es: ", prediccion)
## [1] "La predicción para un valor de publications igual a  25000  es:  145.876058035079"

Intrepretación

aprendimos que el análisis de la dispersión de datos es fundamental y para ello utilizamos herramientas estadísticas como el diagrama de puntos, la covarianza, la correlación de Pearson y la regresión lineal. En R, estas técnicas se vuelven aún más utiles, ofreciendo la capacidad de visualizar los datos y calcular la covarianza y correlación de Pearson de manera eficiente. Además, podemos ajustar modelos de regresión lineal para simular predicciones de la variable dependiente. Estas herramientas son cruciales para comprender las relaciones entre variables, evaluar la fuerza de la relación y hacer predicciones con precisión. En resumen, nos permiten tomar decisiones basadas en datos informados.