Se acuerda que la evaluación del trabajo aumenta también con la calidad y cantidad de los comentarios proporcionados.

0.1 Bajar los archivos

SudAmerica.ods, Baseball.ods: en mi sitio www.camiz.it, en la parte Sito Universitario, cliquen sobre Didattica en el menu, luego sobre en la nueva página del curso.

Da bajo encuentran los archivos de datos, de varios formados y la documentación.

Para leer-los se necesita de instalar el paquete readODS. Puede ser que este pide de instalar la versión especial R-dev, así como unas librarías. En ese caso hacer-lo.

0.2 Empleando y adaptando las instrucciones

en la clase, correr el modelo lineal de IDH con Tasa_urban. de SudAmerica, con los gráficos de dispersión (Tasa_urban con IDH) con la recta de regresión (abline(a,b)), gráfico de valores observados con valores estimados (eta con IDH) y recta (abline(0,1)) y gráfico de resíduos (eta con residuos) con recta horizontal (abline(0,0)).

0.3 Construir una función

que haga todo, es decir una estructura de tipo:
<- function(argumentos) {
out <- list() # lista con resultados
… comandos …
… incluyendo los varios resultados como elementos en out así:
out$ <- v
…………….
out
}

de modo que el comando
(out <- (aragumentos))
proporciona la lista en out y también en la pantalla (debido a las parentesis).

0.4 Correr la función

con SudAmerica y Baseball (Winning con Batting)

y commentar los resultados de ambos

0.5 Correr los dos modelos

empleando la función lm() también con gráficos, como en la clase para los dos modelos.

¿Se resultan los mismos resultados? (¡Esperamos que si!)

0.6 Calcular el apalancamiento

de los datos de Baseball como en la clase, con gráfico relativo.

0.7 Guardar los archivos

.Rmd y .html y enviar los dos a dentro del 19 de Abril.

analyze_and_plot_generic(“SudAmerica.csv”, x_var = “Tajo_urbano”, y_var = “IDH”, output_prefix = “sudamerica”)

knitr::opts_chunk$set(echo = TRUE)
library(ggplot2)  # <--- Asegúrate de incluir esto aquí
## Warning: package 'ggplot2' was built under R version 4.5.3

1

1.1 Función propuesta

analyze_and_plot_generic <- function(csv_path, x_var, y_var, id_col_index = 1, output_prefix = "analisis") {
  
  # 1. Leer los datos
  # read.csv lee el archivo, y stringsAsFactors=FALSE evita que los nombres se conviertan en factores
  df <- read.csv(csv_path, stringsAsFactors = FALSE)
  
  # Renombrar la columna identificadora (en R los índices empiezan en 1, no en 0)
  colnames(df)[id_col_index] <- "ID_Observacion"
  
  # Verificar que las variables existen en el data.frame
  if (!(x_var %in% colnames(df)) || !(y_var %in% colnames(df))) {
    stop(paste("Error: Las columnas", x_var, "o", y_var, "no existen en el archivo."))
  }
  
  # 2. Ajustar el Modelo Lineal (Y vs X)
  # Creamos la fórmula dinámicamente como texto y la convertimos a objeto de fórmula
  formula_str <- paste(y_var, "~", x_var)
  modelo <- lm(as.formula(formula_str), data = df)
  
  cat("====================== RESUMEN DEL MODELO ======================\n")
  print(summary(modelo))
  cat("================================================================\n")
  
  # 3. Gráfico de dispersión con el modelo lineal
  p1 <- ggplot(df, aes(x = .data[[x_var]], y = .data[[y_var]])) +
    geom_point(color = "blue", size = 2.5) +
    geom_smooth(method = "lm", se = FALSE, color = "red") +
    theme_minimal() +
    theme(panel.grid.major = element_line(linetype = "dashed", color="gray", size = 0.5)) +
    labs(title = paste("Dispersión y Ajuste Lineal:", y_var, "vs", x_var),
         x = x_var,
         y = y_var)
  
  # Guardar el gráfico de dispersión
  ggsave(paste0(output_prefix, "_dispersion.png"), plot = p1, width = 8, height = 6)
  
  # Mostrar el gráfico en el visor de R
  print(p1)
  
  # 4. Gráficos de Diagnóstico (Ventana separada 2x2)
  # R base tiene la función plot() que genera automáticamente los 4 gráficos exactos que necesitas
  
  # Guardar los gráficos en un archivo PNG
  png(paste0(output_prefix, "_diagnostico.png"), width = 1000, height = 800, res = 100)
  par(mfrow = c(2, 2)) # Divide la ventana gráfica en una matriz 2x2
  plot(modelo)         # Genera: Residuos vs Predichos, Q-Q, Scale-Location y Residuos vs Leverage
  par(mfrow = c(1, 1)) # Restaura la ventana gráfica a 1x1
  dev.off()            # Cierra el dispositivo de guardado
  
  # Mostrar los gráficos de diagnóstico en la ventana activa de R
  # Presiona 'Enter' en la consola para ir viéndolos si no usas par(mfrow)
  par(mfrow = c(2, 2))
  plot(modelo)
  par(mfrow = c(1, 1))
}

2

2.1 Función: SudAmerica

SudAmerica <- read.csv("C:/Users/Lenovo/OneDrive/Desktop/GWDC_RODOLFO_GALECIO/R_project/SudAmerica.csv", header=TRUE)
 analyze_and_plot_generic("SudAmerica.csv", x_var = "Tajo_urbano", y_var = "IDH", output_prefix = "sudamerica")
## ====================== RESUMEN DEL MODELO ======================
## 
## Call:
## lm(formula = as.formula(formula_str), data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.22772 -0.01044  0.01240  0.03322  0.14512 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept) 0.318545   0.108546   2.935  0.01358 * 
## Tajo_urbano 0.005945   0.001609   3.694  0.00354 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.098 on 11 degrees of freedom
## Multiple R-squared:  0.5537, Adjusted R-squared:  0.5131 
## F-statistic: 13.65 on 1 and 11 DF,  p-value: 0.003537
## 
## ================================================================
## Warning: The `size` argument of `element_line()` is deprecated as of ggplot2 3.4.0.
## ℹ Please use the `linewidth` argument instead.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'

attach(SudAmerica)
lmSA <- lm(IDH~Tajo_urbano,data=SudAmerica)
plot(Tajo_urbano,IDH)
abline(lmSA,col="red")
points(Tajo_urbano,lmSA$fitted.values,col="red")

summary(lmSA)
## 
## Call:
## lm(formula = IDH ~ Tajo_urbano, data = SudAmerica)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.22772 -0.01044  0.01240  0.03322  0.14512 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept) 0.318545   0.108546   2.935  0.01358 * 
## Tajo_urbano 0.005945   0.001609   3.694  0.00354 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.098 on 11 degrees of freedom
## Multiple R-squared:  0.5537, Adjusted R-squared:  0.5131 
## F-statistic: 13.65 on 1 and 11 DF,  p-value: 0.003537
par(mfrow=c(2,2))
plot(lmSA)

par(mfrow=c(1,1))
detach(SudAmerica)
Baseball <- read.csv("C:/Users/Lenovo/OneDrive/Desktop/GWDC_RODOLFO_GALECIO/R_project/Baseball.csv", header=TRUE)

3

3.1 Función: Baseball

 analyze_and_plot_generic("Baseball.csv", x_var = "BattingAvg", y_var = "WinningPerc", output_prefix = "baseball")
## ====================== RESUMEN DEL MODELO ======================
## 
## Call:
## lm(formula = as.formula(formula_str), data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.14627 -0.03653 -0.01800  0.05004  0.13132 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept)  -0.5245     0.5154  -1.018   0.3289  
## BattingAvg    3.9189     1.9694   1.990   0.0699 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.07017 on 12 degrees of freedom
## Multiple R-squared:  0.2481, Adjusted R-squared:  0.1854 
## F-statistic: 3.959 on 1 and 12 DF,  p-value: 0.06989
## 
## ================================================================
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'

attach(Baseball)
lmBA <- lm(WinningPerc~BattingAvg,data=Baseball)
plot(BattingAvg,WinningPerc)
abline(lmBA,col="red")
points(BattingAvg,lmBA$fitted.values,col="red")

summary(lmBA)
## 
## Call:
## lm(formula = WinningPerc ~ BattingAvg, data = Baseball)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.14627 -0.03653 -0.01800  0.05004  0.13132 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept)  -0.5245     0.5154  -1.018   0.3289  
## BattingAvg    3.9189     1.9694   1.990   0.0699 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.07017 on 12 degrees of freedom
## Multiple R-squared:  0.2481, Adjusted R-squared:  0.1854 
## F-statistic: 3.959 on 1 and 12 DF,  p-value: 0.06989
par(mfrow=c(2,2))
plot(lmBA)

par(mfrow=c(1,1))
detach(Baseball)

4

4.1 Comentarios

  1. En ambos casos, tanto para los datos del archivo SudAmerica.csv como para los datos del archivo Baseball.csv los resultados fueron los mismos usando la función propuesta como usando el método regular desarrollado en clase, lo que demuestra coherencia en la funcionalidad de la función propuesta.

  2. Observamos que el R cuadrado ajustado es significativamente mayor para el caso de la data de SudAmerica: aproximadamente el 51% de los datos es explicado por el modelo lineal mientras que para el caso de los datos del Baseball, el modelo lineal sólo explica el 19% de los datos.

  3. Por cada punto que aumenta el Tajo Urbano, se produce un incremento de 0.0059 en el valor del IDH.

  4. Por cada punto que aumenta el BattingAvg, se produce un incremento de 3.9 en el valor del WinningPerc.

  5. El p-valor para Tajo_urbano es 0.004, es decir, que sólo un 0.4% de probabilidad de que la relación entre el Tajo urbano y el IDH sea pura casualidad. El resultado es estadísticamente significativo i.e. menor a 0.05

  6. El p-valor para BattingAvg es 0.07, este es un valor mayor al benchmark establecido 0.05 para establecer la validez de la significancia estadística de la relación, no podemos afirmar nada al respecto.

  7. El análisis gráfico para SudAmerica muestra:

1.  Residuos vs Valores Predichos: La línea roja tiene una ligerísima curva en el centro, pero en general es bastante plana y los puntos no forman patrones raros . Esto confirma que podemos usar una línea recta para explicar el IDH.

2.  Q-Q: Los errores de nuestro modelo se distribuyen de forma normal, los puntos siguen la línea roja casi a la perfección, con apenas un par de ligeros desvíos en los extremos.

3.  Raiz de residuos: se evalúa la homocedasticidad, los puntos están bien esparcidos de arriba a abajo a lo largo del eje. Esto significa que el modelo es igual de consistente prediciendo países con IDH bajo que países con IDH alto.

4.  Distancia de CooK: evaluamos la presencia de outliers; no hay ningúnpunto que se salga de los límites de las líneas rojas punteadas.
  1. El análisis gráfico para Baseball muestra:
1.  Residuos vs Valores Predichos: la rtelación es lineal.

2.  Q-Q: la mayoría de puntos sigue la diagonal, pero hay desviaciones en los extremos.

3.  Raiz de residuos: Hay homocedasticidad.

4.  Distancia de CooK: no hay valores atípicos influyentes.