# ============================================================
# Métodos Cuantitativos · Correlación de Pearson
# Datos: Latinobarómetro 2017 (Argentina) y PELA-USAL, Diputados Argentina 2017
# Solo usa R base: no hace falta instalar paquetes.
# ============================================================

# 1. Cargar las bases ----------------------------------------
# Guardá los dos CSV en la misma carpeta que este script y elegí esa carpeta:
# Session > Set Working Directory > To Source File Location
lb   <- read.csv("Latinobarometro2017_correlacion.csv")
pela <- read.csv("PELA_Diputados_2017_correlacion.csv")

# Los códigos de "no sabe / no responde" pasan a NA (dato perdido)
for (v in setdiff(names(lb), c("WT", "edad"))) lb[[v]][lb[[v]] < 0] <- NA
for (v in setdiff(names(pela), "ponder"))      pela[[v]][pela[[v]] > 10] <- NA

# 2. Una función para la correlación ponderada ----------------
# Devuelve r, el valor p (bilateral) y el n, como la salida de SPSS.
correlacion <- function(x, y, w) {
  ok <- !is.na(x) & !is.na(y) & !is.na(w)
  r  <- cov.wt(cbind(x[ok], y[ok]), wt = w[ok], cor = TRUE)$cor[1, 2]
  n  <- sum(ok)
  p  <- if (abs(r) >= 1) 0 else 2 * pt(-abs(r * sqrt(n - 2) / sqrt(1 - r^2)), df = n - 2)
  data.frame(r = round(r, 3), p = format.pval(p, digits = 3, eps = 0.001), n = n)
}

# 3. Primero, el gráfico --------------------------------------
# Ideología × valoración de Macri (diputados). Con jitter() los puntos
# repetidos se separan un poco para que se vean todos.
plot(jitter(pela$ubic_macri), jitter(pela$val_macri),
     xlab = "Ubicación ideológica que le asigna a Macri (1-10)",
     ylab = "Valoración de Macri (1-10)",
     main = "Diputados argentinos, 2017", pch = 19, col = "#1F2A44")

# 4. Después, el número: un par de variables ------------------
correlacion(pela$ubic_macri, pela$val_macri, pela$ponder)   # r = -0,785
correlacion(pela$ideologia, pela$ideologia_partido, pela$ponder)
correlacion(pela$ideologia, pela$val_papa, pela$ponder)     # no pasa el test

correlacion(lb$ideologia, lb$democracia, lb$WT)             # significativa, pero débil
# Nota: SPSS informa el N ponderado (1030); acá se muestra la cantidad de casos (1049).
# El r es el mismo.

# 5. Una matriz de correlaciones ------------------------------
# Lo mismo que la salida de SPSS del bloque 4.
vars <- c("ideologia", "democracia", "corrupcion_gob")
matriz <- outer(vars, vars, Vectorize(function(a, b)
  correlacion(lb[[a]], lb[[b]], lb$WT)$r))
dimnames(matriz) <- list(vars, vars)
matriz

# 6. Probá vos -------------------------------------------------
# Cambiá las variables y leé el resultado con la receta de la clase:
# test → dirección → intensidad → R²
names(pela)
names(lb)
res <- correlacion(pela$tlc_eeuu, pela$tlc_ue, pela$ponder)
res
res$r^2   # R²: variabilidad compartida
