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.

Descripción

Desarrollo

Cargar librerías

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

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

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

Transformar datos

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

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(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?

Determinar la covarianza

Convarianza entre publications y rank ¿Cuál es el valor de la covarianza ?

covarianza <- cov(datos)
covarianza
##              publications         rank
## publications   3522304522 -1890356.818
## rank             -1890357     3115.698

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?

correlacion<- cov2cor(covarianza)
correlacion
##              publications       rank
## publications    1.0000000 -0.5706275
## rank           -0.5706275  1.0000000

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

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(datos)
summary(modelo)
## 
## Call:
## lm(formula = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -115734  -27672     334   22493  318592 
## 
## Coefficients:
##              Estimate Std. Error t value            Pr(>|t|)    
## (Intercept) 160086.80    5844.92   27.39 <0.0000000000000002 ***
## rank          -606.72      50.58  -11.99 <0.0000000000000002 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 48820 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

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? 0.3234 el modelo de regresión explica el 32.34% de la variabilidad de la variable dependiente. ## 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) 
##    160086.8
b
##      rank 
## -606.7202

Linea de tendencia

¿Cómo se observa la linea de tendencia?

modelo <- lm(datos)

plot(datos, main = "Gráfico de dispersión", xlab = "Variable Independiente", ylab = "Variable Dependiente")

abline(modelo)

Predicciones

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

valor_publications<-(15000)
prediccion<-a+b*valor_publications
prediccion
## (Intercept) 
##    -8940716

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

valor_publications<-(20000)
prediccion<-a+b*valor_publications
prediccion
## (Intercept) 
##   -11974317

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

valor_publications<-(25000)
prediccion<-a+b*valor_publications
prediccion
## (Intercept) 
##   -15007918

Intrepretación

Para este examen/caso, utilizamos la covarianza, la correlacion y los digramas de dispersion, la regresion, entre otras cosas, para poder sacar un conjunto de informacion representada en graficos y en texto, de nuestros datos, las tecnicas que usamos son esenciales para poder tener exactitud en nuestra representacion de datos.

RStudio es una buena forma de comprobar datos, y practicar las formulas de los casos dados.