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-1-1 Tennodai\n Tsukuba, Ibaraki, 305-8577 \nJapan",..: 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(2023)
muestra <- datos[sample(x = 1:nrow(datos), size = round(nrow(datos) * 0.20), replace = FALSE), ]
muestra
## publications rank
## 243 176141 38
## 282 93456 106
## 44 38355 132
## 193 57498 110
## 29 178305 22
## 49 99103 116
## 133 144192 41
## 72 65006 165
## 207 92009 108
## 45 52663 132
## 260 185242 26
## 224 73560 112
## 294 87102 134
## 280 51711 199
## 137 188228 54
## 166 247701 6
## 169 72006 84
## 242 63169 40
## 95 60015 111
## 295 97744 136
## 176 59554 75
## 30 78063 178
## 33 87775 120
## 70 130650 177
## 196 61271 161
## 198 100167 87
## 40 60237 152
## 152 99036 107
## 71 63164 116
## 160 184212 33
## 46 41162 136
## 110 35120 149
## 172 260850 7
## 228 54930 126
## 145 68176 183
## 271 87773 92
## 289 44145 234
## 241 232058 12
## 218 74126 90
## 114 143641 35
## 171 179956 30
## 121 287025 2
## 107 70384 134
## 188 174050 32
## 190 58581 168
## 208 56904 176
## 234 48417 94
## 212 80122 83
## 265 75185 146
## 122 105481 165
## 64 103846 145
## 195 54962 126
## 291 147171 44
## 299 41257 161
## 62 40059 178
## 253 90361 147
## 20 60672 142
## 209 52599 197
## 182 48999 76
## 178 60512 185
¿De cuántos registros es la muestra?
Convarianza entre publications y rank ¿Cuál es el valor de la covarianza ?
# Pendiente
cov(muestra)
## publications rank
## publications 3656772777 -2686838.211
## rank -2686838 3323.201
Correlación \(r\) entre publications y rank ¿Cuál es el valor de la correlación de Pearson y cómo se interpreta?
# Pendiente
cor(muestra)
## publications rank
## publications 1.0000000 -0.7707512
## rank -0.7707512 1.0000000
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?
# Pendiente
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)
# Pendiente
modelo <- lm(data = muestra, formula = rank ~ publications)
summary(modelo)
##
## Call:
## lm(formula = rank ~ publications, data = muestra)
##
## Residuals:
## Min 1Q Median 3Q Max
## -95.704 -22.010 -4.432 25.412 90.878
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 182.11774104 9.21492369 19.763 < 0.0000000000000002 ***
## publications -0.00073476 0.00007975 -9.213 0.000000000000592 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 37.04 on 58 degrees of freedom
## Multiple R-squared: 0.5941, Adjusted R-squared: 0.5871
## F-statistic: 84.88 on 1 and 58 DF, p-value: 0.0000000000005917
¿Cuál es el valor del estadístico R Square en el modelo de regresión construído y cómo se interpreta?
\[ 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?
# Pendiente
a <- modelo$coefficients[1]
b <- modelo$coefficients[2]
a; b
## (Intercept)
## 182.1177
## publications
## -0.0007347567
¿Cómo se observa la línea de tendencia?
# Pendiente
f_linea_tendencia_reg_lineal(datos = muestra, modelo = modelo)
# Pendiente
x = 15000
pred1 <- predict(object = modelo, newdata = data.frame(publications = x))
paste("La predicción para un valor de x igual a ", x, " es: ", round(pred1, 4))
## [1] "La predicción para un valor de x igual a 15000 es: 171.0964"
x = 20000
pred1 <- predict(object = modelo, newdata = data.frame(publications = x))
paste("La predicción para un valor de x igual a ", x, " es: ", round(pred1, 4))
## [1] "La predicción para un valor de x igual a 20000 es: 167.4226"
x = 25000
pred1 <- predict(object = modelo, newdata = data.frame(publications = x))
paste("La predicción para un valor de x igual a ", x, " es: ", round(pred1, 4))
## [1] "La predicción para un valor de x igual a 25000 es: 163.7488"
al menos 50 palabras
¿El modelo es eficiente por encima del 60% en Multiple R Suqare? , ¿se acepta o se descarta?