# =====================================================================
# MÉTODOS CUANTITATIVOS - UCA - CLASE 11 - REGRESIÓN LINEAL
# Script completo para R
# Base: PELA-USAL, Diputados Argentina 2017 (versión reducida para la clase)
# Variables:
#   tlc_eeuu        RRII2: valoración del TLC con EE.UU. (1 muy negativo - 10 muy positivo)
#   ideologia       ID1: autoubicación ideológica (1 izquierda - 10 derecha)
#   estado_mercado  EM1: economía regulada por el Estado (1) o por el mercado (10)
#   sexo            SOCD4: 1 hombre, 2 mujer
#   ponder          ponderador de la encuesta
# Para correrlo: guardá este archivo y la base en la misma carpeta,
# abrí el script en RStudio y usá Session > Set Working Directory > To Source File Location.
# =====================================================================

datos <- read.csv("pela2017_regresion.csv")

# 1. Valores perdidos: NS, NC y sin dato (98, 99, 999) quedan afuera
for (v in c("ideologia", "tlc_eeuu", "estado_mercado")) {
  datos[[v]][datos[[v]] > 10] <- NA
}
datos$sexo[datos$sexo == 999] <- NA

# 2. Variable dummy de sexo: mujer = 1, varón = 0
datos$mujer <- ifelse(datos$sexo == 2, 1, 0)

# 3. Nos quedamos con los casos completos y con ponderador
base <- subset(datos, !is.na(tlc_eeuu) & !is.na(ideologia) &
                      !is.na(estado_mercado) & !is.na(mujer) & !is.na(ponder))
nrow(base)   # 55 diputados

# 4. La nube de puntos: siempre mirarla antes de correr la regresión
plot(jitter(base$ideologia, 0.6), jitter(base$tlc_eeuu, 0.6),
     xlab = "Ideología (1 izquierda - 10 derecha)",
     ylab = "Valoración del TLC con EE.UU. (1 - 10)",
     pch = 19, col = "#1F2A44", xlim = c(1, 10), ylim = c(1, 10))

# 5. MODELO 1 - Regresión simple: TLC según ideología (ponderada)
m1 <- lm(tlc_eeuu ~ ideologia, data = base, weights = ponder)
summary(m1)
abline(m1, col = "#A67C2E", lwd = 3)   # la recta de mínimos cuadrados sobre la nube

# Cómo leer summary():
#   Coefficients  -> Estimate = B (la "a" es (Intercept)); Pr(>|t|) = Sig. de cada b
#   Multiple R-squared / Adjusted R-squared -> R cuadrado y R cuadrado ajustado
#   F-statistic ... p-value -> Sig. del modelo (lo que en SPSS está en la tabla ANOVA)
# Nota: los coeficientes y el R cuadrado son idénticos a los de SPSS.
# Los errores estándar y los Sig. pueden diferir en algún decimal, porque R
# y SPSS tratan distinto el ponderador al contar los casos.

# 6. MODELO 2 - Regresión múltiple: se suma la posición Estado-mercado
m2 <- lm(tlc_eeuu ~ ideologia + estado_mercado, data = base, weights = ponder)
summary(m2)

# 7. MODELO 3 - Con una variable dummy (mujer)
m3 <- lm(tlc_eeuu ~ ideologia + estado_mercado + mujer, data = base, weights = ponder)
summary(m3)

# 8. Coeficientes Beta (tipificados): para comparar qué variable pesa más
beta <- function(modelo) {
  d <- model.frame(modelo); w <- d[["(weights)"]]
  desvio <- function(x) sqrt(sum(w * (x - weighted.mean(x, w))^2) / (sum(w) - 1))
  b <- coef(modelo)[-1]
  round(b * sapply(names(b), function(v) desvio(d[[v]])) / desvio(d[[1]]), 3)
}
beta(m2)

# 9. Estimar con el modelo: un diputado en el 7 de ideología y en el 8 de Estado-mercado
predict(m2, newdata = data.frame(ideologia = 7, estado_mercado = 8))

# 10. Residuos: diferencia entre el dato real y lo que estima la recta
base$estimado_m1 <- fitted(m1)
base$residuo_m1  <- residuals(m1)
head(base[, c("ideologia", "tlc_eeuu", "estimado_m1", "residuo_m1")])

# 11. Experimento: cambiar la escala de la ideología (multiplicada por 10)
#     Mirá qué pasa con la B y con el R cuadrado
m1_x10 <- lm(tlc_eeuu ~ I(ideologia * 10), data = base, weights = ponder)
summary(m1_x10)

# 12. Experimento: codificar la dummy como 1 y 2 en vez de 0 y 1
#     Cambia la constante, pero las estimaciones son las mismas
m3_12 <- lm(tlc_eeuu ~ ideologia + estado_mercado + I(mujer + 1), data = base, weights = ponder)
summary(m3_12)
all.equal(fitted(m3), fitted(m3_12))   # TRUE: mismas estimaciones

# 13. Para practicar: cambiá las variables de los modelos y volvé a correr.
#     Recordá: la variable dependiente tiene que ser cuantitativa.
