Estructura IPO, RProject y Quarto para Análisis Transparentes
2025-03-24
Introducir la importancia de la reproducibilidad y el concepto de ciencia abierta
La replicación de estudios científicos es fundamental para la construcción de conocimiento. Esta consiste en replicar resultados de investigación con investigadores, datos, métodos de análisis e instrumentos independientes. Esto es especialmente importante cuando se afectan decisiones de políticas públicas o regulación. Sin embargo, no siempre es posible. Esto puede deberse a límites económicos, de tiempo o a que un estudio depende de algún evento único. Un estándar mínimo es la reproducibilidad: dejar disponibles los datos y el código de forma que otros puedan reproducir (y evaluar) nuestros resultados. A mediad que aumentan los datos y poder computacional disponible esto se hace más relevante. No solo es importante para la ciencia.
Actualmente existen iniciativas destinadas a replicar (o reproducir) estudios científicos publicados, los cual ha dado cuenta de la imposibilidad de hacerlo fruto de la falta de documentación, datos, o incluso debido a investigadores llegando a resultados diferentes utilizando los mismos datos.
Esto hace relevante avanzar en mayor transparencia en todas las etapas del proceso de investigación.
La investigación reproducible puede pensarse como parte de un marco más amplio: la ciencia abierta.
Esto puede pensarse en todas las etapas del proceso de producción de conocimiento:
- Diseño de investigación
- Producción de datos
- Análisis de datos
- Publicación
Basado en la perspectiva de ciencia abierta elaborada por:
Refiere a contar con estándares transparencia en la realización de estudios que permitan una mejor evaluación de pares.
Esto es fundamental para evitar mala prácticas como el p-hacking o la construcción de hipótesis ad-hoc. La principal herramienta son los pre-registros.
Este refiere a publicar (previo a la realización del estudio) 1) las principales hipótesis, 2) procedimientos de recolección de datos y 3) el plan de análisis.
No siempre es posible diseñar a priori o prever todos los elementos de nuestro análisis: lo importante del pre-registro es que permite distinguir lo que corresponde al plan original y transparentar aquello que emergió posteriormente.
Los datos a partir de los cuales produzcamos nuestros resultados, ya sea que consten de resultados de encuesta, datos administrativos o indicadores. No basta con publicar los datos, necesitamos información que permita su correcta utilización.
Para esto necesitamos dejar públicamente disponible cuatro elementos:
Se trata de organizar nuestro análisis de tal manera que sea posible para otros/as investigadores/as reproducir los análisis que realizamos, llegando a los resultados publicados. Esto permite conocer todas las decisiones tomadas, y nos obliga a mantener un flujo de trabajo más sistemático.
Los pasos a seguir, o elementos a considerar, (en los que profundizaremos luego) son:
TODO DEBE DESARROLLARSE EN EL SCRIPT
Se trata de eliminar las barreras (Especialmente económicas) al conocimiento.
Problema de las editoriales académicas.
Es posible encontrar revistas que cuentan con acceso abierto. Para saber el nivel de apertura de una revista puede encontrase en https://v2.sherpa.ac.uk/romeo/.
En general, es importante considerar que esto no depende solo de la iniciativa individual, sino también de las instituciones científicas existentes.
En primer lugar resulta importante para asegurar la transparencia de la producción científica, haciendo más posible el control público de las decisiones que se toman basadas en el conocimiento producido.
Para nuestra labor como sociólogos, el trabajo con estándares de reproducibilidad nos permite mantener mayor control de lo que hacemos, mejora su comunicabilidad y en entornos institucionales (e individualmente) permite mantener mejores registros en el tiempo.
En términos simples, nos permite evitar el caos en nuestro trabajo.
Una herramienta central para hacer reportes reproducibles es la programación literada. Esta consiste en documentos que nos permiten integrar lenguaje humano (texto plano) con lenguaje computacional (código).
Existen múltiples herramientas tales como Latex, Jupyter Notebooks y Markdown. Nos centraremos en esta última.
Markdown es una herramienta de conversión de texto a HTML para desarrollo web. Markdown permite escribir usando texto plano fácil de leer y de escribir, y convertirlo en código estructuralmente válido de HTML.
Esta integrada en Rstudio mediante Rmarkdown y Quarto.
- Para hacer un salto de línea deben ponerse dos espacios.



echo - Incluir o no el código en el documentos de salida (por defecto TRUE)
include – Incluir o no el código y sus resultado luego de ejecutarlo (por defecto TRUE)
warning – imprimir las advertencias del código (por defecto TRUE)
Egine – Lenguaje de programación usado en el código (por defecto “R”)
cache – guardar resultados en chaché para futuros knit (por defecto FALSE)
cache.path – directorio para guardar el cache (por defecto “cache/”
Para hacer nuestro proyecto de investigación reproducible no solo importa el código, también requerimos que el proyecto este estructurado de manera reproducible, para lo cual existen protocolos. En este caso revisaremos el protocolo IPO (Input-Procesamiento - Output). Esto puede realizarse con R-projects.
“La implementación de la reproducibilidad en este tipo de protocolos se basa en generar un conjunto de archivos auto-contenidos organizado en una estructura de proyecto que cualquier persona pueda compartir y ejecutar. En otras palabras, debe tener todo lo que necesita para ejecutar y volver a ejecutar el análisis.”

├── input/ # Información externa
│ ├── data/
│ │ ├── original/ # Datos originales (sin modificar)
│ │ └── proc/ # Datos procesados (limpios, transformados)
│ ├── imagenes/ # Imágenes externas para el proyecto
│ ├── bib/ # Archivos de bibliografía (.bib)
│ └── prereg/ # Pre-registros del estudio (si existen)
├── procesamiento/ # Scripts de análisis y preparación
│ ├── preparacion.Rmd # Script de preparación de datos
│ └── analisis.Rmd # Script de análisis principal
├── output/ # Resultados del procesamiento
│ ├── graphs/ # Gráficos generados
│ └── tables/ # Tablas generadas
├── readme.md # Descripción general del proyecto
└── paper.Rmd # Documento principal (paper, reporte)
input/: Todo lo que “entra” al proyecto desde fuera.
data/original/: Datos crudos, sin tocar. Archivos originales tal como se obtuvieron. ¡Solo lectura!data/proc/: Datos procesados y limpios. Resultado de los scripts de preparación. Listos para el análisis.imagenes/: Logos, fotos, diagramas… Cualquier imagen externa usada en el proyecto.bib/: Archivos .bib para la gestión de bibliografía con herramientas como BibTeX o Zotero.prereg/: Pre-registros del estudio, si se realizaron (documentos de registro de hipótesis, métodos, etc.).procesamiento/: El “corazón” del análisis.
preparacion.Rmd: Script (R Markdown) para la limpieza, transformación y preparación de los datos crudos (input/data/original/) para el análisis. Genera los datos procesados en input/data/proc/.analisis.Rmd: Script (R Markdown) con el análisis principal. Utiliza los datos procesados (input/data/proc/) y genera resultados en output/.output/: Los “productos” del análisis.
graphs/: Gráficos generados por los scripts de análisis.tables/: Tablas de resultados, resúmenes, etc., generadas por los scripts.output/ debe ser regenerable ejecutando los scripts en procesamiento/!readme.md: La “carta de presentación” del proyecto.
paper.Rmd (o .qmd, .html, .pdf): El documento principal.
output/) y la narrativa en un documento dinámico y reproducible.preparacion.Rmd debe:
input/data/original/).input/data/proc/.analisis.Rmd debe:
input/data/proc/).output/graphs/ y output/tables/.setwd()!../: “Un nivel arriba” en la jerarquía de carpetas.input/data/original/data.csv: Desde la raíz, entra en input/, luego data/, luego original/, y encuentra data.csv.preparacion.Rmd (dentro de procesamiento/) para cargar datos originales: read.csv(here::here("input", "data", "original", "data.csv")) (usando el paquete here).Él control de versiones consiste en tener un sistema que nos permita mantener registro de los cambios realizados a los archivos del un proyecto (qué, quién y cuándo).
Git es una herramienta de código abierto que nos permite realizar control de versiones.
GitHub es una plataforma de desarrollo colaborativo que nos permite usar repositorios locales y remotos.

