1 Objetivo

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.

2 Descripción

  • Se cargan librerías necesarias
  • Se cargan las funciones preparadas
  • Se cargan los datos “https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/2023/datos/universidades_clean.csv” y se determina una muestra del 20% del total de los registros
  • Se requiere el diagrama de dispersión de los datos de las variables publicactions y rank
  • Se calcula el valor de la covarianza de las variables publicactions y rank y su interpretación
  • Se calcula el valor de la correlación de Pearson de las variables publicactions y rank y su interpretación
  • Se construye el modelo de regresión lineal simple con las variables de las variables publicactions y rank
  • Se calculan los coeficientes a y b de la fórmula de regresión simple
  • Se visualiza la linea de tendenncia con la dispersión de los datos
  • Se calcula predicciones de rank con tres valores de la variable independiente publications
  • Al final, se interpreta el caso con al menos 50 palabras respondientdo a las preguntas inmersas en el ejercicio.

3 Desarrollo

3.1 Cargar librerías

library(ggplot2)
library(readr)
library(dplyr)
library(knitr)
library(DT)
library(mosaic)
library(PerformanceAnalytics) # Para coorelaciones gráficas

3.2 Cargar funciones preparadas

source("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/2023/funciones/funciones%20para%20dispersion%20correlacion%20regresion.R", encoding = "UTF-8")

3.3 Cargar datos

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 ...

3.4 Transformar datos

3.4.1 Seleccionar solo las variables de interés publications y rank

Ejecutar esta instrucciones para limpiar los datos y dejar solo las variable de interés

  • publications_Variable x independiente
  • rank: variable y dependiente
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 ...

3.5 Determinar una muestra del 20%

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"

3.6 Determinar la covarianza

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

3.7 Determinar la correlación

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))

3.8 Regresión

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

3.9 Valor del R Square

¿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.

3.10 Coeficientes a y b

\[ 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

3.11 Linea de tendencia

¿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")

3.12 Predicciones

3.12.1 ¿Cuál es la predicción del ranking (rank) para un valor de publications igual a 15000?

predict(modelo,data.frame(publications = 15000))
##        1 
## 146.1356

3.12.2 ¿Cuál es la predicción del ranking (rank) para un valor de publications igual a 20000?

predict(modelo,data.frame(publications=20000))
##        1 
## 143.4522

3.12.3 ¿Cuál es la predicción del ranking (rank) para un valor de publications igual a 25000?

predict(modelo,data.frame(publications=25000))
##        1 
## 140.7688

4 Intrepretación

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.