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 ...
datos <- datos_bruto%>%
select(publications, rank)
Ejecutar esta instrucciones para limpiar los datos y dejar solo las variable de interés
datos <- datos_bruto %>%
select(publications, rank)
colnames(datos) <- c("publications", "rank")
datatable(datos, caption = "Universidades")
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
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
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 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)
modelo
##
## Call:
## lm(formula = rank ~ publications, data = muestra)
##
## Coefficients:
## (Intercept) publications
## 160.4440484 -0.0005827
¿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 "
\[ 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
¿Cómo se observa la línea de tendencia?
f_linea_tendencia_reg_lineal(muestra, modelo)
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"
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"
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"
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.