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(315)
muestra <- datos[sample(x = 1:nrow(datos), size = round(nrow(datos) * 0.20), replace = FALSE), ]
muestra
## publications rank
## 278 209504 15
## 269 33432 18
## 123 55990 15
## 4 97754 88
## 219 155134 53
## 245 134759 75
## 56 57371 153
## 251 53491 191
## 298 95497 56
## 215 57289 157
## 29 178305 22
## 299 41257 161
## 124 60687 91
## 243 176141 38
## 154 46084 83
## 185 76010 124
## 187 70023 106
## 27 63645 136
## 199 88028 127
## 206 41658 70
## 119 183572 110
## 191 81584 80
## 15 166908 77
## 102 50791 40
## 188 174050 32
## 39 68328 167
## 84 99798 136
## 140 46247 168
## 173 56979 176
## 53 104130 196
## 78 89024 141
## 59 97889 89
## 80 90533 114
## 234 48417 94
## 11 138415 51
## 110 35120 149
## 2 99086 61
## 96 208615 24
## 258 166488 65
## 183 34363 126
## 275 270033 8
## 66 50338 154
## 148 134970 78
## 233 107846 115
## 195 54962 126
## 164 155482 34
## 235 36822 175
## 296 96097 68
## 1 89633 150
## 83 106518 154
## 153 47910 64
## 209 52599 197
## 113 64180 145
## 207 92009 108
## 92 88759 70
## 262 309445 18
## 85 64302 201
## 141 54629 182
## 288 43001 16
## 287 47281 37
¿De cuántos registros es la muestra?
resultado = length(muestra$publications + muestra$rank)
paste("Muestra de: ", resultado)
## [1] "Muestra de: 60"
Convarianza entre publications y rank ¿Cuál es el valor de la covarianza ?
covarianz = cov(muestra$publications, muestra$rank)
paste("La covarianza es de: ", covarianz)
## [1] "La covarianza es de: -1759545.14689266"
Correlación \(r\) entre publications y rank ¿Cuál es el valor de la correlación de Pearson y cómo se interpreta?
correlacionz = cor(muestra$publications, muestra$rank)
paste("La correlación es de: ", correlacionz)
## [1] "La correlación es de: -0.524871294334449"
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)
regresiones = lm(data = muestra, formula = rank ~ publications)
summary(regresiones)
##
## Call:
## lm(formula = rank ~ publications, data = muestra)
##
## Residuals:
## Min 1Q Median 3Q Max
## -112.825 -29.358 -1.361 34.943 100.111
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 147.3455684 11.9250362 12.356 < 0.0000000000000002 ***
## publications -0.0004942 0.0001052 -4.696 0.0000167 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 48.23 on 58 degrees of freedom
## Multiple R-squared: 0.2755, Adjusted R-squared: 0.263
## F-statistic: 22.05 on 1 and 58 DF, p-value: 0.00001668
¿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 0.263 significa que el valor representa el 26.3 % del rango de publicaciones.
\[ 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?
coeficientz = coef(regresiones)
a = coeficientz[1]
b = coeficientz[2]
paste("El coeficiente a es: ", a)
## [1] "El coeficiente a es: 147.345568363998"
¿Cómo se observa la lónea de tendencia?
f_linea_tendencia_reg_lineal(muestra, regresiones)
predicciones = predict(regresiones, data.frame(publications = 15000))
paste("La predicción es apróximadamente de: ", predicciones)
## [1] "La predicción es apróximadamente de: 139.933180003717"
predicciones = predict(regresiones, data.frame(publications = 20000))
paste("La predicción es apróximadamente de: ", predicciones)
## [1] "La predicción es apróximadamente de: 137.462383883624"
predicciones = predict(regresiones, data.frame(publications = 25000))
paste("La predicción es apróximadamente de: ", predicciones)
## [1] "La predicción es apróximadamente de: 134.99158776353"
al menos 50 palabras:
Este programa realiza varias tareas relacionadas con análisis de datos y regresión lineal. En resumen, este programa carga datos, realiza análisis exploratorio, ajusta un modelo de regresión lineal y hace predicciones basadas en dicho modelo. También incluye visualizaciones de datos y cálculos estadísticos para evaluar la relación entre las variables y la calidad del modelo de regresión.
¿El modelo es eficiente por encima del 60% en Multiple R Suqare? , ¿se acepta o se descarta?
Se descarta porque es de 26.3 %
Se cargaron los datos de universidades con 300 observaciones de las cuales se extrae una muestra el 20% que equivale a 60 observaciones
El valor de la covarianza es 1759545.14689266 y significa que son negativas.
El valor de la correlación es 0.524871294334449 y significa inversa y lineal negativa
El valor de los coeficientes en la regresión son 147.345568363998.
Las predicciones fueron 139.933180003717 para el valor de 15000 pubs.
Las predicciones fueron 137.462383883624 para el valor de 20000 pubs.
Las predicciones fueron 134.99158776353 para el valor de 25000 pubs.