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(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
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
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 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)
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
¿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
\[ 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
¿Cómo se observa la lónea de tendencia?
f_linea_tendencia_reg_lineal(datos = muestra, modelo = modelo)
valor_publications <- 15000
prediccion <- predict(modelo, newdata = data.frame(publications = valor_publications))
prediccion
## 1
## 154.1305
valor_publications <- 20000
prediccion <- predict(modelo, newdata = data.frame(publications = valor_publications))
prediccion
## 1
## 151.7116
valor_publications <- 25000
prediccion <- predict(modelo, newdata = data.frame(publications = valor_publications))
prediccion
## 1
## 149.2926
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.