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(1137)
muestra <- datos[sample(x = 1:nrow(datos), size = round(nrow(datos) * 0.20), replace = FALSE), ]
muestra
##     publications rank
## 129       109945   86
## 132        59274  163
## 83        106518  154
## 58        138093   52
## 272       103343   50
## 139        42442   87
## 53        104130  196
## 34         77881  175
## 112        73582  175
## 131       101800  119
## 192        90413   91
## 226       145451   57
## 267       110449   63
## 163       241635    5
## 128        59495   35
## 66         50338  154
## 23        210564   13
## 164       155482   34
## 69        196412   55
## 57        186925   45
## 65         65910  162
## 264        72120  173
## 262       309445   18
## 224        73560  112
## 198       100167   87
## 95         60015  111
## 223       227099   17
## 170        40788  176
## 251        53491  191
## 265        75185  146
## 55        121410  110
## 52        107043   74
## 149       125528   68
## 9          36150  193
## 147        44011  192
## 217        56037   46
## 173        56979  176
## 176        59554   75
## 99        168516   96
## 89        150565   25
## 111        51655  173
## 273        54854   97
## 125       117251  109
## 150       139350   42
## 141        54629  182
## 254       150632   31
## 62         40059  178
## 15        166908   77
## 138        58748   94
## 179       104806   58
## 158        78199  128
## 191        81584   80
## 184       142627   37
## 73         34969  148
## 59         97889   89
## 245       134759   75
## 165       101320   56
## 17         66210  172
## 219       155134   53
## 126       109500   62

¿De cuántos registros es la muestra?

num_registros = length(muestra$publications + muestra$rank)

paste("La muestra es de: ",num_registros)
## [1] "La muestra es de:  60"

Determinar la covarianza

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

# Covarianza del conjunto
cov(muestra)
##              publications        rank
## publications   3209347293 -2280204.08
## rank             -2280204     3224.44
#Covarianza entre los conjuntos
n <- nrow(muestra)
numerador <- sum((muestra$publications - mean(muestra$publications))  * (muestra$rank - mean(muestra$rank)))
# numerador ; sum(tabla$prod)
denominador <- n - 1
covarianza <- numerador / denominador
covarianza
## [1] -2280204

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?

# Correlación general
cor(muestra)
##              publications       rank
## publications    1.0000000 -0.7088237
## rank           -0.7088237  1.0000000
#Correlación entre los conjuntos de datos
cor(muestra$publications, muestra$rank)
## [1] -0.7088237

Se interpreta como una correlación lineal fuerte(-0.5 a -1.0)

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)
summary(modelo)
## 
## Call:
## lm(formula = rank ~ publications, data = muestra)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -97.402 -33.316  -2.878  32.381  95.311 
## 
## Coefficients:
##                  Estimate   Std. Error t value             Pr(>|t|)    
## (Intercept)  174.67248706  11.06765466  15.782 < 0.0000000000000002 ***
## publications  -0.00071049   0.00009284  -7.653       0.000000000234 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 40.4 on 58 degrees of freedom
## Multiple R-squared:  0.5024, Adjusted R-squared:  0.4939 
## F-statistic: 58.57 on 1 and 58 DF,  p-value: 0.0000000002342

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? El valor de R Square es de 0.5024

Un R Square de 0.5024 significa que alrededor del 50.24% de la variabilidad de la variable que estamos estudiando es explicada por el modelo de regresión. Esto quiere decir que más o menos la mitad de los cambios en la variable dependiente pueden ser comprendidos a través del modelo utilizado.

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
## (Intercept) 
##    174.6725
b
##  publications 
## -0.0007104884

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
prediccion1 <- predict(modelo, data.frame(publications = valor_publications))
paste("La predicción para un valor de publications igual a ", valor_publications, " es: ", prediccion1)
## [1] "La predicción para un valor de publications igual a  15000  es:  164.015160795759"

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

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

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

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

Intrepretación

Hemos aprendido que es importante analizar cómo se dispersan los datos utilizando herramientas estadísticas como el diagrama de puntos, la covarianza, la correlación de Pearson y la regresión lineal sencilla. Estas técnicas son súper importantes para entender cómo se relacionan las variables y hacer predicciones en R.

En R, estas técnicas se vuelven todavía más poderosas porque nos permiten ver los datos, calcular la covarianza, la correlación de Pearson y ajustar modelos de regresión lineal sencilla de manera rápida y eficiente. Podemos usar todas estas herramientas para simular predicciones de la variable dependiente, como cuando queremos predecir el rango de algo basado en una variable independiente.

En resumen, estas herramientas son súper importantes para entender las relaciones entre variables, evaluar qué tan fuerte es la relación y hacer predicciones en probabilidad. Nos ayudan a tomar decisiones informadas basadas en los datos.