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(1908)
muestra <- datos[sample(x = 1:nrow(datos), size = round(nrow(datos) * 0.20), replace = FALSE), ]
muestra
##     publications rank
## 118        99504   74
## 55        121410  110
## 240       100320  151
## 158        78199  128
## 50        478072    1
## 185        76010  124
## 272       103343   50
## 187        70023  106
## 32         81477  189
## 197        80199  133
## 113        64180  145
## 248       261797   48
## 252        64274  154
## 91         99156  166
## 51         87321  143
## 25         46082  125
## 241       232058   12
## 117       123239  159
## 110        35120  149
## 144        44656  100
## 264        72120  173
## 259        76418  138
## 53        104130  196
## 18         83632  158
## 234        48417   94
## 100       184856   59
## 33         87775  120
## 287        47281   37
## 97         32350   68
## 164       155482   34
## 183        34363  126
## 291       147171   44
## 180        72332  122
## 59         97889   89
## 208        56904  176
## 22         86698  144
## 238        78874  179
## 202       202516   21
## 226       145451   57
## 17         66210  172
## 135        92622   55
## 199        88028  127
## 166       247701    6
## 93         53334  118
## 125       117251  109
## 285        44300  139
## 173        56979  176
## 1          89633  150
## 132        59274  163
## 4          97754   88
## 6          82676  204
## 104       147074   39
## 74         68688  160
## 279        54472  166
## 14         94862  111
## 172       260850    7
## 45         52663  132
## 27         63645  136
## 114       143641   35
## 267       110449   63

¿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   5354310460 -2590366.556
## rank             -2590367     2957.863
covarianza <- cov(muestra$publications, muestra$rank)
covarianza
## [1] -2590367

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.0000000 -0.6509092
## rank           -0.6509092  1.0000000
correlacion <- cor(muestra$publications, muestra$rank)
correlacion
## [1] -0.6509092

El coeficiente de correlación de Pearson, también se conoice como coeficiente de correlación producto-momento, es una medida de la asociación lineal entre dos variables como x y y.

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 
## -101.513  -34.403    2.707   31.185   84.990 
## 
## Coefficients:
##                  Estimate   Std. Error t value             Pr(>|t|)    
## (Intercept)  161.38739225   9.40869724   17.15 < 0.0000000000000002 ***
## publications  -0.00048379   0.00007409   -6.53          0.000000018 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 41.64 on 58 degrees of freedom
## Multiple R-squared:  0.4237, Adjusted R-squared:  0.4137 
## F-statistic: 42.64 on 1 and 58 DF,  p-value: 0.00000001797

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

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) 
##    161.3874
##  publications 
## -0.0004837909

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 
## 154.1305

¿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 
## 151.7116

¿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 
## 149.2926

Intrepretación

Lo que hicimos en este ejercicio, fue calcular la relación de dos variables la primera llamada “publications” y la segunda llamada “rank”, nosotros para generar los números usamos la semilla 1908 y con los valores anteriores creamos la muestra para generar todos los datos, y asi poder obtener La correlación, covarianza y regresión lineal. Una vez obtenidos generamos nuestra grafica de dispersión y generamos nuestra linea de tendencia lo cual nos ayudó a observar como se relacionaban las variables iniciales, y por ultimo poder crear las predicciones con los valores otorgados.