Banner
Banner

Alumno: Daniel Lorenzo Medina Salcedo
Correo:
Asignatura: Estadística para Investigadores
Profesor: Dra. María Luisa Díez Platas
Doctorado: Ciencias de la Computación - UNIR
Fecha: Abril 2025
En línea: Ver en Rpubs

Tarea 1. Carga y exploración simple de datos: Carga y exploración simple de datos

economic <- read.csv("economic.csv")
head(economic)
Country wealth education freedom tax_burden unemployment public_debt gini
Afghanistan 1918.60 0.398 154 5.0 8.5 8.3 27.8
Albania 11840.23 0.715 65 27.2 16.3 71.5 29.0
Algeria 15026.46 0.658 172 29.1 11.2 20.4 27.6
Angola 6844.43 0.482 164 24.0 6.6 71.9 42.7
Argentina 20047.49 0.808 144 31.3 6.6 51.3 42.4
Armenia 8620.98 0.730 44 21.3 16.8 51.8 32.4
summary(economic)
##    Country              wealth           education         freedom      
##  Length:150         Min.   :   651.9   Min.   :0.2060   Min.   :  4.00  
##  Class :character   1st Qu.:  3882.9   1st Qu.:0.4933   1st Qu.: 45.50  
##  Mode  :character   Median : 11780.2   Median :0.6580   Median : 95.50  
##                     Mean   : 18024.9   Mean   :0.6401   Mean   : 91.89  
##                     3rd Qu.: 25568.6   3rd Qu.:0.7963   3rd Qu.:135.50  
##                     Max.   :127659.6   Max.   :0.9390   Max.   :179.00  
##    tax_burden     unemployment     public_debt          gini      
##  Min.   : 5.00   Min.   : 0.200   Min.   :  0.00   Min.   :25.50  
##  1st Qu.:15.95   1st Qu.: 4.800   1st Qu.: 34.55   1st Qu.:32.23  
##  Median :23.80   Median : 6.650   Median : 49.95   Median :37.75  
##  Mean   :24.19   Mean   : 8.491   Mean   : 56.61   Mean   :38.86  
##  3rd Qu.:31.38   3rd Qu.:10.950   3rd Qu.: 71.45   3rd Qu.:44.45  
##  Max.   :59.60   Max.   :29.700   Max.   :239.20   Max.   :63.40

Distribución de la riqueza

# 1. Calcula el histograma sin graficar (con frecuencias)
h <- hist(economic$wealth,
          breaks = 10,
          plot   = FALSE,
          include.lowest = TRUE)

# 2. Parámetros estadísticos
mu    <- mean(economic$wealth, na.rm = TRUE)
sigma <- sd(economic$wealth, na.rm = TRUE)

# 3. Dibuja el histograma en frecuencia con espacio extra en Y
hist(economic$wealth,
     breaks = h$breaks,
     freq   = TRUE,
     col    = "gray",
     main   = "Distribución de la riqueza entre las naciones",
     xlab   = "Riqueza",
     ylab   = "Frecuencia",
     ylim   = c(0, max(h$counts) * 1.2))  # 20% extra de espacio en Y

# 4. Anota el conteo de cada bin
text(x      = h$mids,        # centro de cada bin
     y      = h$counts,      # altura de cada barra
     labels = h$counts,      # número de observaciones
     pos    = 3,             # coloca el texto por encima
     offset = 0.5,           # separación adicional
     cex    = 0.8,
     col    = "blue")

# 5. Añade líneas de media y ±1σ
abline(v = mu,           col = "red",       lwd = 2)
abline(v = mu + sigma,   col = "darkgreen", lwd = 2, lty = 2)
abline(v = mu - sigma,   col = "darkgreen", lwd = 2, lty = 2)

# 6. Etiqueta las líneas de media y desviación estándar
y_pos <- max(h$counts) * c(1.15, 1.08, 1.08)
text(x = mu,         y = y_pos[1],
     labels = paste0("Media = ", round(mu, 2)),
     col = "red", pos = 3)
text(x = mu + sigma, y = y_pos[2],
     labels = paste0("+1σ = ", round(mu + sigma, 2)),
     col = "darkgreen", pos = 3)
text(x = mu - sigma, y = y_pos[3],
     labels = paste0("-1σ = ", round(mu - sigma, 2)),
     col = "darkgreen", pos = 1)  # pos=1 coloca el texto debajo de la línea

¿Qué conclusión puede extraer del diagrama de distribución de la riqueza entre las naciones?

CONCLUSIONES:

  • A simple vista se evidencia que hay más paises pobres.
  • 2/3 de los paises están por debajo de la media de riqueza.
  • Existen dos outliers en alta riqueza. (Qatar y Luxemburgo)

Dispersión riqueza vs educación

plot(wealth ~ education, data=economic,
     main="Dispersión de la riqueza por nivel educativo",
     xlab="Índice educativo", ylab="Riqueza", pch=16)
simple.lm <- lm(wealth ~ education, data = economic)
abline(coef(simple.lm), col="blue", lwd=3)

¿Qué conclusión puede extraer del gráfico de dispersión de la riqueza por nivel educativo?

CONCLUSIONES:

  • Se evidencia una relación directa entre el nivel educativo y la riqueza
  • La realación es positiva, es decir a mayor educación mayor riqueza

Tarea 2: Evaluación del modelo de regresión simple

Se llama modelo nulo a ignorar completamente los predictores y estimar la respuesta como la media de las respuestas \(\bar y\). Para calcular \(\bar y\) podemos usar el comando:

mean.value <- mean(economic$wealth)

El MSE del modelo nulo nos calcula el error medio existente entre las muestras obtenidas \(y_i\) y la media de las respuestas \(\bar y\):

\[ \mathrm{MSE}_{\text{null}} \;=\; \frac{\displaystyle\sum_{i=1}^n (y_i - \bar y)^2}{n - 2} \]

Podemos calcular el MSE del modelo nulo con los comandos:

n <- length(economic$wealth)

mse.null <- sum((economic$wealth - mean.value)^2) / (n - 2)

mse.null

Obsérvese que el MSE no es inmediatamente claro para saber si el modelo se está comportando bien. Sin embargo, el coeficiente de determinación \(R^2\) sí que nos deja claro qué proporción de la variabilidad está siendo explicada por la recta de regresión. Para calcular este coeficiente usamos la fórmula:

\[ R^2 \;=\; 1 \;-\;\frac{\mathrm{MSE}}{\mathrm{MSE}_{\text{null}}} \]

Para ello ejecutamos en R:

r2 <- 1 - mse / mse.null

r2

MSE del modelo nulo

mean.value <- mean(economic$wealth)
n <- length(economic$wealth)
mse.null <- sum((economic$wealth - mean.value)^2) / (n - 2)
mse.null
## [1] 388934349

MSE del modelo de regresión

predicted.values <- predict(simple.lm)
mse <- sum((economic$wealth - predicted.values)^2) / (n - 2)
mse
## [1] 195357939

Coeficiente de determinación R²

r2 <- 1 - mse / mse.null
r2
## [1] 0.4977097
# Alternativa con summary()
summary(simple.lm)$r.squared
## [1] 0.4977097

Tarea 3: Explorando relaciones múltiples

Vamos a estudiar ahora la relación de la respuesta con el resto de predictores. Empiece realizando un gráfico de dispersión para los demás predictores. Si lo desea puede usar plot() para crear gráficos de dispersión por pares, pero resulta más cómodo crear una matriz de dispersión con el siguiente comando:

pairs(economic[c("wealth", "education", "freedom", "tax_burden", "unemployment", "public_debt", "gini")])

Observando los gráficos de dispersión, ¿cuáles son los cuatro predictores que mejor determinan el nivel de riqueza de las naciones?

Es dificil establecer los cuatro mejores predictores, sin embargo se evidencian dos visualmente:

  • Eduación
  • Libertad

Una forma más cuantitativa de estudiar estas relaciones es calcular la matriz de correlación, que nos indica el nivel de relación entre dos variables. Para calcular la matriz de correlación puede utilizar el siguiente comando:

vars <- c("wealth", "education", "freedom", "tax_burden", "unemployment", "public_debt", "gini")

En esta matriz de correlación:

  • Las diagonales siempre valen 1.0, porque toda variable está perfectamente relacionada consigo misma.
  • La matriz es simétrica porque la correlación es simétrica: \(\mathrm{Cor}(x,y) = \mathrm{Cor}(y,x)\).

Tenga en cuenta que, si elevamos esta matriz \(r\) al cuadrado, obtenemos la matriz de coeficientes de determinación \(R^2\) para cada par de variables, es decir:

\[ r = \pm \sqrt{R^2} \]

El signo de \(r\) depende de la pendiente de la correlación:

  • Si el signo de \(r\) es negativo, la pendiente es negativa.
  • Si el signo de \(r\) es positivo, la pendiente es positiva.
vars <- c("wealth", "education", "freedom", "tax_burden",     "unemployment", "public_debt", "gini")
r <- cor(economic[vars], use = "pairwise.complete.obs")
print(r)
##                  wealth   education     freedom tax_burden unemployment
## wealth        1.0000000  0.70548546 -0.64891722  0.3586740  -0.12753339
## education     0.7054855  1.00000000 -0.68513548  0.4796925   0.01198325
## freedom      -0.6489172 -0.68513548  1.00000000 -0.3358040   0.05333221
## tax_burden    0.3586740  0.47969252 -0.33580398  1.0000000   0.34865674
## unemployment -0.1275334  0.01198325  0.05333221  0.3486567   1.00000000
## public_debt   0.1201342  0.16140088 -0.04723883  0.3229165   0.21006959
## gini         -0.3118401 -0.37723200  0.25795794 -0.2553436   0.23029792
##              public_debt       gini
## wealth        0.12013420 -0.3118401
## education     0.16140088 -0.3772320
## freedom      -0.04723883  0.2579579
## tax_burden    0.32291646 -0.2553436
## unemployment  0.21006959  0.2302979
## public_debt   1.00000000 -0.1286555
## gini         -0.12865549  1.0000000
# 2. Mapa de calor con corrplot (necesita instalar el paquete corrplot)

library(corrplot)

# Mapa de calor de correlaciones con coeficientes sobre la diagonal
corrplot(r,
         method        = "color",       # tipo de gráfico: color
         type          = "full",       # solo triángulo superior
         addCoef.col   = "black",       # coeficientes en negro
         tl.col        = "darkblue",    # etiquetas en azul oscuro
         tl.srt        = 45,            # rotación de etiquetas
         number.cex    = 0.7,           # tamaño de los números
         title         = "Matriz de Correlaciones",
         mar           = c(0,0,1,0))    # márgenes para el título

Observando la matriz de correlación, ¿cuáles son los cuatro predictores que mejor determinan el nivel de riqueza?

Los cuatro mejores predictores son:

  • Eduación
  • Libertad
  • Carga Fiscal
  • Desempleo

Tenga en cuenta que tanto la matriz de dispersión como la matriz de correlación no son multidimensionales, sino que examinan dos variables cada vez. Aun así, nos dan una buena idea de qué variables están más relacionadas.

Tarea 4: Obtención y evaluación de parámetros

Recordar que, para obtener los parámetros de la recta de regresión, podíamos calcularlos como:

\[ \boldsymbol{\beta} = \bigl(X^{T} X\bigr)^{-1} X^{T} Y \]

Los siguientes comandos permiten calcular los parámetros de nuestro ejemplo:

y <- as.matrix(economic$wealth)
x <- as.matrix(economic[c("education","freedom","tax_burden", "unemployment","public_debt","gini")])
x <- cbind(Intercept = 1, x)
b <- solve(t(x) %*% x) %*% t(x) %*% y
colnames(b) <- "estimate"
print(b)
##                  estimate
## Intercept    -4507.677062
## education    50493.608745
## freedom       -114.355086
## tax_burden     156.872434
## unemployment  -495.201222
## public_debt     23.013179
## gini            -4.418581

Una forma alternativa de obtener estos parámetros es usando el comando summary() sobre el modelo de regresión generado por lm():

multiple.lm <- lm(wealth ~ education + freedom + tax_burden +  unemployment + public_debt + gini, data = economic)
summary(multiple.lm)
## 
## Call:
## lm(formula = wealth ~ education + freedom + tax_burden + unemployment + 
##     public_debt + gini, data = economic)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -22893  -7015  -2013   4203  98420 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -4507.677  10516.167  -0.429 0.668828    
## education    50493.609   9181.856   5.499 1.71e-07 ***
## freedom       -114.355     29.165  -3.921 0.000136 ***
## tax_burden     156.872    141.349   1.110 0.268939    
## unemployment  -495.201    207.037  -2.392 0.018064 *  
## public_debt     23.013     35.309   0.652 0.515594    
## gini            -4.419    146.847  -0.030 0.976038    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 13160 on 143 degrees of freedom
## Multiple R-squared:  0.5697, Adjusted R-squared:  0.5516 
## F-statistic: 31.55 on 6 and 143 DF,  p-value: < 2.2e-16

¿Producen ambos mecanismos de cálculo los mismos parámetros? Si no es así, indique por qué. ¿Qué coeficiente de determinación ajustado R2 alcanza la regresión?

Se evidencia que producen los mismos coeficientes. De otra parte el R2 de 0.56 no es suficiente para alcanzar la regresión, probablemente mejoraría encontrando una relación No lineal.

En clase hemos visto que obtenemos el p‑valor de cada parámetro en la columna Pr(>|t|) del comando summary(). Utilice este comando para decidir qué predictores contribuyen con un nivel de significancia del 95 % al nivel de riqueza de las naciones en nuestro modelo.

Observando la intersección (α), ¿podemos concluir que la respuesta es proporcional a los predictores? ¿Se necesitan más predictores para explicar el modelo?

Respuesta: No podemos concluir que la respuesta es proporcional a los predictores. Aunque el modelo es estadísticamente significativo en su conjunto (p‑valor del modelo: < 2.2e-16), no todos los predictores muestran una relación significativa individualmente con la variable respuesta (wealth).

Observando los p‑valores individuales:

  • Eduación: (p = 1.71e-07) y Libertad (p = 0.000136) son altamente significativos → se puede considerar que sí explican parte importante de la variabilidad de la riqueza.
  • Desempleo: también es significativo (p = 0.018), aunque con menor impacto.
  • Carga Fiscal, deuda pública, Gini: presentan p‑valores muy altos (> 0.05), lo que indica que no aportan evidencia estadística suficiente para afirmar que estén relacionados proporcionalmente con la riqueza.

Por tanto, la respuesta no es completamente proporcional a todos los predictores, aunque sí lo es respecto a algunos de ellos.

Los predictores correlacionados con la respuesta pueden ser causas o efectos:

  • Un p‑valor significativo indica que un predictor está siendo causa de la respuesta observada.
  • Cuando un predictor está relacionado con la respuesta, pero el p‑valor de su parámetro no aporta suficiente evidencia de estar contribuyendo, podría estar actuando como efecto de la respuesta, en lugar de como causa.

Pregunta: Según esta argumentación, ¿qué predictores pueden estar siendo las causas y cuáles los efectos de la riqueza?

Causas:
  • Eduación: (p = 1.71e-07) altamente significativo
  • Libertad (p = 0.000136) altamente significativo
  • Desempleo: también es significativo (p = 0.018), aunque con menor impacto.

Efectos:
  • Carga Fiscal
  • Deuda pública
  • Gini

Otra forma de identificar causas y eliminar colinealidades es usar el Akaike Information Criterion (AIC). Los predictores cuya eliminación no reduce la información son candidatos a causas, ya que no actúan como efectos. Para ello, ejecute el siguiente comando:

step(object = multiple.lm)
## Start:  AIC=2852.35
## wealth ~ education + freedom + tax_burden + unemployment + public_debt + 
##     gini
## 
##                Df  Sum of Sq        RSS    AIC
## - gini          1     156835 2.4771e+10 2850.3
## - public_debt   1   73586880 2.4845e+10 2850.8
## - tax_burden    1  213360948 2.4984e+10 2851.6
## <none>                       2.4771e+10 2852.3
## - unemployment  1  991008289 2.5762e+10 2856.2
## - freedom       1 2663212873 2.7434e+10 2865.7
## - education     1 5238666178 3.0010e+10 2879.1
## 
## Step:  AIC=2850.35
## wealth ~ education + freedom + tax_burden + unemployment + public_debt
## 
##                Df  Sum of Sq        RSS    AIC
## - public_debt   1   74784773 2.4846e+10 2848.8
## - tax_burden    1  223818928 2.4995e+10 2849.7
## <none>                       2.4771e+10 2850.3
## - unemployment  1 1117007358 2.5888e+10 2855.0
## - freedom       1 2664006230 2.7435e+10 2863.7
## - education     1 5507700743 3.0279e+10 2878.5
## 
## Step:  AIC=2848.8
## wealth ~ education + freedom + tax_burden + unemployment
## 
##                Df  Sum of Sq        RSS    AIC
## - tax_burden    1  302335967 2.5148e+10 2848.6
## <none>                       2.4846e+10 2848.8
## - unemployment  1 1068855661 2.5915e+10 2853.1
## - freedom       1 2607422083 2.7453e+10 2861.8
## - education     1 5637973470 3.0484e+10 2877.5
## 
## Step:  AIC=2848.61
## wealth ~ education + freedom + unemployment
## 
##                Df  Sum of Sq        RSS    AIC
## <none>                       2.5148e+10 2848.6
## - unemployment  1  790819703 2.5939e+10 2851.3
## - freedom       1 2699992646 2.7848e+10 2861.9
## - education     1 7676348394 3.2825e+10 2886.6
## 
## Call:
## lm(formula = wealth ~ education + freedom + unemployment, data = economic)
## 
## Coefficients:
##  (Intercept)     education       freedom  unemployment  
##      -3624.2       55342.1        -114.5        -382.5

Predictores seleccionados ( causas):
  • Eduación
  • Libertad
  • Desempleo

Predictores eliminados (Efectos):
  • Carga Fiscal
  • Deuda pública
  • Gini

step_model <- lm(wealth ~ education + freedom + unemployment, data = economic)
summary(step_model)$adj.r.squared
## [1] 0.5541334

El modelo completo (tiene R2≈0.55).

El modelo ajustado (tiene R2≈0.55), indicando que la reducción de variables no afecta la capacidad explicativa y en cambio se gana simplicidad.