🔍
22librerías en total
12exclusivas Python
8exclusivas R
2disponibles en ambos
No se encontraron librerías con esos filtros.
● Análisis cuantitativo
Python

pandas

Limpieza y manipulación de datos tabulares
Básico

Úsalo cuando…

  • Limpias bases de datos de encuestas de hogares
  • Fusionas registros administrativos de distintas fuentes
  • Calculas frecuencias, medias y cruces de variables sociodemográficas
  • Preparas datos para análisis estadístico posterior

Ventajas en investigación social

  • Lee directamente Excel, CSV, SPSS (.sav) y Stata (.dta)
  • Operaciones de grupo muy intuitivas (groupby)
  • Manejo claro de valores perdidos (NaN)
  • Integración directa con matplotlib, seaborn y statsmodels

¿Cuándo Python vs R para esta tarea?

Python / pandas

Mejor cuando el flujo de trabajo incluye scraping, APIs o automatización. Más potente para bases de datos muy grandes (+500 mil filas).

R / dplyr + tidyr

Preferible si el análisis es exploratorio-estadístico. La sintaxis de tidyverse es más legible para operaciones de transformación encadenadas.

pandas — limpieza básica de encuesta
import pandas as pd

# Leer encuesta exportada desde KoboToolbox
df = pd.read_csv("encuesta_hogares.csv")

# Ver estructura y valores perdidos
print(df.info())
print(df.isnull().sum())

# Frecuencia por categoría + porcentaje
tabla = (df["nivel_educativo"]
         .value_counts(normalize=True)
         .mul(100)
         .round(1)
         .reset_index())
print(tabla)
R

dplyr + tidyr

Transformación y orden de datos en tidyverse
Básico

Úsalo cuando…

  • Filtras, agrupas y resumes datos de encuestas
  • Recodificas variables ordinales o nominales
  • Pivoteas tablas de formato largo a ancho o viceversa
  • Encadenas transformaciones de forma legible (pipe |>)

Ventajas en investigación social

  • Sintaxis tipo "verbo" muy intuitiva (filter, mutate, summarise)
  • El pipe |> hace el código autoexplicativo
  • Integración perfecta con ggplot2 para visualizar al instante
  • Comunidad enorme en ciencias sociales y políticas
dplyr — resumen por grupo
library(tidyverse)

# Leer encuesta
df <- read_csv("encuesta_hogares.csv")

# Ingreso promedio por nivel educativo y sexo
resumen <- df |>
  filter(!is.na(ingreso_mensual)) |>
  group_by(nivel_educativo, sexo) |>
  summarise(
    promedio = mean(ingreso_mensual),
    n        = n(),
    .groups  = "drop"
  )

print(resumen)
Python

statsmodels

Modelos estadísticos y pruebas de hipótesis
Intermedio

Úsalo cuando…

  • Ajustas modelos de regresión OLS, logística o de conteo
  • Analizas series de tiempo sociales (desempleo, criminalidad)
  • Necesitas tablas de resultados con p-valores y IC al estilo académico
  • Realizas pruebas de diferencias de medias o ANOVA

Ventajas en investigación social

  • Fórmulas tipo R (y ~ x1 + x2) muy legibles
  • Salida de resultados con formato de paper incorporado
  • Modelos de panel y efectos fijos disponibles
  • Diagnósticos de supuestos integrados

¿Cuándo Python vs R para esta tarea?

Python / statsmodels

Más conveniente cuando el flujo incluye limpieza con pandas y visualización con seaborn en un mismo notebook.

R / lm + lme4

Ecosistema más maduro para modelos mixtos y multinivel. stargazer y modelsummary generan tablas publicables en segundos.

statsmodels — regresión OLS con fórmula
import statsmodels.formula.api as smf

# Regresión: ingreso ~ educación + experiencia + sexo
modelo = smf.ols(
    "ingreso ~ C(educacion) + anios_exp + C(sexo)",
    data=df
).fit()

# Tabla de resultados estilo paper
print(modelo.summary())
R

lme4

Modelos mixtos y análisis multinivel
Intermedio

Úsalo cuando…

  • Tienes datos anidados: estudiantes en escuelas, hogares en municipios
  • Controlas por efectos aleatorios de grupo
  • Analizas varianza explicada a nivel individual y contextual
  • Modelas trayectorias longitudinales de individuos

Ventajas en investigación social

  • Ideal para encuestas con diseño muestral por conglomerados
  • Maneja datos desbalanceados sin problema
  • sjPlot produce visualizaciones de efectos listas para publicar
  • Estándar de oro en sociología y psicología educativa
lme4 — modelo multinivel básico
library(lme4)
library(lmerTest) # agrega p-valores

# Rendimiento escolar ~ nivel socioeconómico
# con intercepto aleatorio por escuela
modelo <- lmer(
  rendimiento ~ nse + (1 | escuela_id),
  data = df_estudiantes
)

summary(modelo)
confint(modelo) # intervalos de confianza
● Análisis de texto y discurso
Python

spaCy

Procesamiento de lenguaje natural en español
Intermedio

Úsalo cuando…

  • Extraes entidades nombradas de noticias o documentos de política
  • Lematizas corpus de entrevistas para análisis de frecuencia
  • Analizas dependencias sintácticas en discurso político
  • Preprocesas texto antes de modelado de tópicos

Ventajas en investigación social

  • Modelo entrenado en español latinoamericano disponible
  • Mucho más rápido que NLTK para corpus grandes
  • Pipeline modular: solo activas los componentes que necesitas
  • Integra con transformers de Hugging Face para análisis de sentimiento
spaCy — entidades en corpus de noticias
import spacy

# Modelo en español: python -m spacy download es_core_news_md
nlp = spacy.load("es_core_news_md")

texto = "La ministra de Educación anunció en San Salvador...
         un aumento en la cobertura escolar para 2025."

doc = nlp(texto)

# Extraer entidades: personas, lugares, organizaciones
for ent in doc.ents:
    print(ent.text, "→", ent.label_)
R

tidytext

Minería de texto en el ecosistema tidyverse
Intermedio

Úsalo cuando…

  • Analizas frecuencia de términos en corpus de entrevistas
  • Comparas vocabulario entre grupos o períodos
  • Realizas análisis de sentimiento básico en español
  • Preparas datos para LDA con el paquete topicmodels

Ventajas en investigación social

  • Integración perfecta con dplyr y ggplot2
  • TF-IDF implementado con una línea de código
  • Fácil visualización de bigramas como redes de palabras
  • Curva de aprendizaje muy baja si ya conoces tidyverse
tidytext — palabras más frecuentes en entrevistas
library(tidytext)
library(tidyverse)

# df con columnas: entrevista_id, texto
palabras <- df |>
  unnest_tokens(palabra, texto) |>
  filter(!palabra %in% stopwords("es")) |>
  count(palabra, sort = TRUE)

palabras |>
  slice_max(n, n = 20) |>
  ggplot(aes(n, reorder(palabra, n))) +
  geom_col(fill = "#0891b2") +
  labs(title = "Términos más frecuentes")
Python

gensim

Modelado de tópicos LDA en corpus cualitativos
Avanzado

Úsalo cuando…

  • Tienes un corpus grande (100+ documentos) y quieres identificar temas emergentes
  • Analizas prensa, informes o registros de sesiones parlamentarias
  • Quieres complementar análisis cualitativo con identificación temática inductiva
  • Exploras variación temática entre grupos o periodos temporales

Ventajas en investigación social

  • LDA produce tópicos interpretables con palabras clave asociadas
  • pyLDAvis genera visualización interactiva de tópicos
  • Coherencia de tópicos medible para elegir el número óptimo
  • Procesamiento eficiente de corpus en español con preprocesamiento spaCy
gensim — LDA básico en corpus de informes
from gensim import corpora, models

# textos: lista de listas de tokens limpios
diccionario = corpora.Dictionary(textos)
corpus_bow  = [diccionario.doc2bow(t) for t in textos]

lda = models.LdaModel(
    corpus=corpus_bow,
    id2word=diccionario,
    num_topics=6,
    passes=15,
    random_state=42
)

for i, topico in lda.print_topics():
    print(f"Tópico {i}: {topico}")
● Visualización
R

ggplot2

Gramática de gráficos para publicación
Básico

Úsalo cuando…

  • Necesitas figuras listas para publicar en paper o informe
  • Visualizas distribuciones, comparaciones o tendencias temporales
  • Aplicas identidad visual consistente a todos tus gráficos
  • Combinas múltiples paneles con patchwork o cowplot

Ventajas en investigación social

  • Lógica de capas: cada elemento del gráfico es independiente
  • Temas personalizables: un theme() para toda la investigación
  • Extensiones: ggridges, ggdist, ggrepel para figuras avanzadas
  • Exportación en vectorial (SVG, PDF) sin pérdida de calidad
ggplot2 — distribución con facetas por grupo
library(ggplot2)

ggplot(df, aes(x = ingreso_mensual, fill = sexo)) +
  geom_density(alpha = 0.6) +
  facet_wrap(~ region) +
  scale_fill_manual(values = c("#3b82f6", "#f59e0b")) +
  labs(
    title = "Distribución del ingreso por sexo y región",
    x = "Ingreso mensual (USD)", y = "Densidad"
  ) +
  theme_minimal(base_size = 12)
Python

matplotlib + seaborn

Visualización estadística en Python
Básico

Úsalo cuando…

  • Exploras datos de manera iterativa en Jupyter Notebook
  • Visualizas matrices de correlación entre variables sociales
  • Produces heatmaps de respuestas en escalas Likert
  • Necesitas control total sobre cada elemento de la figura

Ventajas en investigación social

  • seaborn simplifica gráficos estadísticos complejos con una línea
  • Integración directa con pandas DataFrames
  • catplot permite comparaciones multivariables muy limpias
  • Paletas accesibles para daltónicos incluidas (colorblind)
seaborn — heatmap de correlaciones
import seaborn as sns
import matplotlib.pyplot as plt

# Variables socioeconómicas continuas
vars_num = ["ingreso", "educacion_anios", "edad", "hijos"]

fig, ax = plt.subplots(figsize=(7, 5))
sns.heatmap(
    df[vars_num].corr(),
    annot=True, fmt=".2f",
    cmap="RdBu_r", center=0,
    ax=ax
)
ax.set_title("Correlaciones entre variables socioeconómicas")
plt.tight_layout()
● Encuestas y M&E
R

survey

Análisis de encuestas con diseño muestral complejo
Intermedio

Úsalo cuando…

  • Trabajas con EHPM, ENIGH u otras encuestas oficiales con factores de expansión
  • Calculas estimaciones representativas a nivel poblacional
  • Produces tablas de indicadores con errores estándar correctos
  • Ajustas modelos de regresión respetando el diseño muestral

Ventajas en investigación social

  • Maneja estratificación, conglomerados y pesos de manera integrada
  • svymean, svytotal y svyratio con IC correctos
  • Evita los errores estándar subestimados al ignorar el diseño muestral
  • Compatible con tidyverse mediante el paquete srvyr
survey — media ponderada con diseño complejo
library(survey)

# Declarar diseño muestral de la EHPM
diseno <- svydesign(
  id      = ~upm,
  strata  = ~estrato,
  weights = ~fac_hog,
  data    = ehpm_df,
  nest    = TRUE
)

# Ingreso promedio per cápita con IC
svymean(~ingreso_percapita, design = diseno)

# Tasa de pobreza por departamento
svyby(~pobre, ~departamento, diseno, svymean)
Python

samplics

Muestreo y estimación para encuestas complejas
Intermedio

Úsalo cuando…

  • Diseñas marcos muestrales para evaluaciones de programas sociales
  • Calculas tamaños de muestra para estimaciones con precisión definida
  • Produces estimaciones con varianza correcta para encuestas estratificadas
  • Prefieres Python sobre R pero necesitas rigor muestral formal

Ventajas en investigación social

  • Diseñada específicamente para encuestas con diseño complejo
  • Cálculo de tamaño de muestra integrado con parámetros de diseño
  • Estimadores de razón, post-estratificación y calibración
  • Documentación clara orientada a estadística oficial
samplics — tamaño de muestra para proporción
from samplics.sampling import SampleSize

# Calcular n para estimar proporción con precisión
calculador = SampleSize()
n = calculador.calculate(
    target      = "proportion",
    hal         = 0.04,   # margen de error ±4%
    proportion  = 0.50,   # p conservadora
    alpha       = 0.05,   # confianza 95%
    deff        = 1.5    # efecto de diseño
)
print(f"Tamaño de muestra requerido: {n}")
R

lavaan

Modelos de ecuaciones estructurales (SEM)
Avanzado

Úsalo cuando…

  • Construyes y validas escalas e índices compuestos
  • Modelas variables latentes: capital social, bienestar subjetivo
  • Pruebas mediación o moderación entre constructos teóricos
  • Realizas análisis factorial confirmatorio de instrumentos

Ventajas en investigación social

  • Sintaxis tipo ecuación muy legible para especificar el modelo
  • Índices de ajuste completos (CFI, RMSEA, SRMR) integrados
  • semPlot genera diagramas de path automáticamente
  • Referencia estándar en psicología social y sociología cuantitativa
lavaan — análisis factorial confirmatorio
library(lavaan)

# Modelo de 2 factores latentes
modelo <- '
  capital_social =~ cs1 + cs2 + cs3 + cs4
  confianza      =~ cf1 + cf2 + cf3
  capital_social ~~ confianza
'

fit <- cfa(modelo, data = df_encuesta)

summary(fit, fit.measures = TRUE,
              standardized = TRUE)
● Redes y análisis espacial
Python

NetworkX

Análisis de redes sociales y organizacionales
Intermedio

Úsalo cuando…

  • Analizas redes de organizaciones de sociedad civil
  • Mapeas flujos de información o colaboración entre actores
  • Calculas centralidad, intermediación y cohesión en redes de política
  • Identificas comunidades o clústeres en redes relacionales

Ventajas en investigación social

  • Métricas de red estándar (betweenness, closeness, eigenvector) integradas
  • Lee desde matrices de adyacencia o listas de aristas en pandas
  • pyvis genera visualizaciones interactivas explorables en HTML
  • Algoritmos de detección de comunidades (Louvain) disponibles
NetworkX — centralidad de actores en red de política
import networkx as nx

# Crear red desde lista de vínculos (actores, colaboraciones)
G = nx.from_pandas_edgelist(
    df_vinculos,
    source="actor_a", target="actor_b",
    edge_attr="peso"
)

# Centralidad de intermediación
centralidad = nx.betweenness_centrality(G, weight="peso")

# Top 5 actores más influyentes
top = sorted(centralidad.items(), key=lambda x: x[1], reverse=True)[:5]
print(top)
R

sf + tmap

Análisis espacial y cartografía temática
Intermedio

Úsalo cuando…

  • Produces mapas de indicadores sociales por municipio o departamento
  • Vinculas datos de encuesta con unidades geográficas (join espacial)
  • Analizas distribución territorial de pobreza, acceso a servicios
  • Cruzas capas de shapefiles con datos administrativos

Ventajas en investigación social

  • sf integra datos espaciales como si fueran un data frame normal
  • tmap produce mapas publicables con una sintaxis tipo ggplot
  • Compatible con datos del RNPN, IGN y fuentes regionales CEPAL
  • tmaptools facilita la lectura directa de shapefiles de OpenStreetMap
sf + tmap — mapa de pobreza por municipio
library(sf)
library(tmap)

# Leer shapefile de municipios
municipios <- st_read("municipios_sv.shp")

# Unir con indicadores de pobreza
mapa_df <- municipios |>
  left_join(indicadores, by = "cod_mun")

# Mapa coroplético
tm_shape(mapa_df) +
  tm_fill("tasa_pobreza",
          palette = "YlOrRd",
          title   = "Tasa de pobreza (%)") +
  tm_borders(alpha = 0.4) +
  tm_layout(title = "Pobreza por municipio")