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.
library(ggplot2)
library(readr)
library(dplyr)
library(knitr)
library(DT)
library(mosaic)
library(PerformanceAnalytics) # Para coorelaciones gráficas
source("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/2023/funciones/funciones%20para%20dispersion%20correlacion%20regresion.R", encoding = "UTF-8")
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 ...
Ejecutar esta instrucciones para limpiar los datos y dejar solo las variable de interés
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 ...
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"
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
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 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))
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
¿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.
\[ 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
¿Cómo se observa la línea de tendencia?
f_linea_tendencia_reg_lineal(muestra, modelo)
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"
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"
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"
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.