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(22041213)
muestra <- datos[sample(x = 1:nrow(datos), size = round(nrow(datos) * 0.20), replace = FALSE), ]
muestra
## publications rank
## 138 58748 94
## 209 52599 197
## 95 60015 111
## 169 72006 84
## 291 147171 44
## 189 68881 155
## 150 139350 42
## 13 92979 43
## 129 109945 86
## 158 78199 128
## 146 75882 42
## 142 49569 169
## 154 46084 83
## 271 87773 92
## 294 87102 134
## 268 61369 190
## 140 46247 168
## 101 177518 23
## 40 60237 152
## 163 241635 5
## 72 65006 165
## 119 183572 110
## 136 44721 138
## 287 47281 37
## 202 202516 21
## 269 33432 18
## 199 88028 127
## 66 50338 154
## 278 209504 15
## 70 130650 177
## 132 59274 163
## 71 63164 116
## 157 102678 98
## 220 88306 100
## 237 47309 136
## 232 52681 149
## 44 38355 132
## 180 72332 122
## 32 81477 189
## 113 64180 145
## 155 70376 171
## 262 309445 18
## 61 222807 14
## 260 185242 26
## 5 74922 60
## 273 54854 97
## 198 100167 87
## 86 137605 82
## 137 188228 54
## 218 74126 90
## 36 92538 87
## 133 144192 41
## 152 99036 107
## 43 120614 164
## 251 53491 191
## 243 176141 38
## 235 36822 175
## 128 59495 35
## 227 62717 186
## 250 91975 137
¿De cuántos registros es la muestra?
registro = length(muestra$publications + muestra$rank)
paste("La muestra es de: ",registro)
## [1] "La muestra es de: 60"
Convarianza entre publications y rank ¿Cuál es el valor de la covarianza ?
cov(muestra)
## publications rank
## publications 3489592636 -2073729.702
## rank -2073730 3206.792
cov(x=muestra$publications,y=muestra$rank)
## [1] -2073730
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 rank
## publications 1.0000000 -0.6199111
## rank -0.6199111 1.0000000
cor(muestra$publications,muestra$rank)
## [1] -0.6199111
Se interpreta como una correlación lineal fuerte (De -0.5 a -1.0) ## Diagrama de dispresión
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 = datos, formula= rank~publications)
summary(modelo)
##
## Call:
## lm(formula = rank ~ publications, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -125.629 -31.490 -2.527 34.385 105.594
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 154.18584701 5.14927746 29.94 <0.0000000000000002 ***
## publications -0.00053668 0.00004474 -11.99 <0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 45.92 on 298 degrees of freedom
## Multiple R-squared: 0.3256, Adjusted R-squared: 0.3234
## F-statistic: 143.9 on 1 and 298 DF, p-value: < 0.00000000000000022
¿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 del RSquare de 0.3256 nos dice que un 32.56% de la variabilidad de la variable estudiada es explicada por el modelo de regresión. Es decir, aproximadamente un tercio de los cambios en la variable pueden ser comprendidos con este modelo de predicción.
\[ 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)
## 154.1858
b
## publications
## -0.0005366818
¿Cómo se observa la línea de tendencia?
ggplot() + geom_point(data = datos, aes(x=publications, y = rank), colour='blue')+ geom_point(aes(x=mean(datos$publications),y=mean(datos$rank)),col='green') +
geom_line(aes(x=datos$publications,y=predict(modelo,datos)),color='red')+
xlab("Publications")+
ylab("Rank")+
ggtitle("Linea de tendencia sobre Conjunto de Datos")
predict(modelo,data.frame(publications = 15000))
## 1
## 146.1356
predict(modelo,data.frame(publications=20000))
## 1
## 143.4522
predict(modelo,data.frame(publications=25000))
## 1
## 140.7688
Obtuvimos conocimiento importante sobre analizar cómo se distribuyen estos diversos datos apoyándonos con herramientas estadísticas tales como diagramas de puntos, covarianza, correlación de Pearson y regresión lineal simple. Estas técnicas son indispensables para comprender cómo se relacionan las variables y hacer predicciones en R.
En R, estas técnicas se convierten aún más poderosas, ya que gracias a estas podemos visualizar datos de manera eficiente, así como calcular la covarianza, la correlación de Pearson y ajustar modelos de regresión lineal simple. Podemos utilizar todas estas herramientas para poder hacer la predicción de la variable dependiente, por ejemplo, cuando queremos predecir el rango de algo en base a la variable independiente.
En conclusión, estas herramientas son importantes para entender las relaciones entre las variables, evaluar la fuerza de estas relaciones y hacer las predicciones probabilísticas. Nos ayudan a poder tomar decisiones más acertadas basadas en datos.