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

Determinar la covarianza

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

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?

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 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(muestra)

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

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?

r_cuadrado <- summary(modelo)$r.squared
r_cuadrado
## [1] 0.3381643

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?

coeficientes <- coef(modelo)
a <- coeficientes[1]
b <- coeficientes[2]
a; b
## (Intercept) 
##    143.1254
##  publications 
## -0.0004613287

Linea de tendencia

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

f_linea_tendencia_reg_lineal(datos = muestra, modelo = 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, newdata = data.frame(publications = valor_publications))
prediccion
##        1 
## 136.2055

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

valor_publications <- 20000
prediccion <- predict(modelo, newdata = data.frame(publications = valor_publications))
prediccion
##        1 
## 133.8989

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

valor_publications <- 25000
prediccion <- predict(modelo, newdata = data.frame(publications = valor_publications))
prediccion
##        1 
## 131.5922

Intrepretación

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.