---
title: "Strutturare il processo"
author: "Stefano Bussolon"
date: "febbraio 2019"
output:
  pdf_document: default
  html_document: default
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

# Strutturare il processo di analisi

## Introduzione

L'analisi dei dati si colloca, generalmente, in un progetto di ricerca.  

La ricerca è un processo strutturato e sistematico di indagine di un fenomeno. Nel processo vengono utilizzate appropriate procedure, metodologie e tecniche di dimostrata validità all'interno di un quadro epistemologico e metodologico di riferimento.  
Nel processo si possono identificare alcuni passaggi:

* definizione di un problema o di una domanda di ricerca
* analisi della letteratura
* definizione della metodologia
* identificazione dei *parametri* e delle dimensioni da indagare per rispondere alla domanda di ricerca
* raccolta di dati
* analisi dei dati
* interpretazione dei risultati
* *disseminazione* dei risultati

L'analisi dei dati, dunque, è generalmente uno dei passaggi di un progetto di ricerca.  

Negli ultimi anni, anche a causa del problema della non replicabilità di molti lavori, si parla molto dei concetti di replicabilità, riproducibilità e open science. Per mettere la cosa nella giusta prospettiva, è necessario considerare che replicabilità/riproducibilità e open science sono alcuni degli strumenti utili a massimizzare alcuni princìpi della ricerca scientifica:

* l'efficienza nel processo
* la correttezza dei risultati
* la solidità (robustness) dei risultati e delle inferenze
* la trasparenza del processo che ha portato ai risultati

Nello strutturare un processo di analisi dei dati, è opportuno adottare metodi e soluzioni capaci di garantire dei buoni standard qualitativi in base a questi princìpi.

## L'efficienza

In questo contesto, per efficienza si intende la necessità di non sprecare ed anzi di ottimizzare l'utilizzo delle risorse necessarie per effettuare la ricerca:

* risorse economiche
* stutture e risorse tecniche (laboratori, macchinari, materiale)
* risorse umane (ricercatori, analisti, personale tecnico)

La *risorsa* più importante, nelle scienze mediche, sociali e psicologiche sono però i partecipanti (umani e non umani) coinvolti nella ricerca. Adottare processi capaci di massimizzare l'utilità della ricerca e l'efficienza nel coinvolgimento dei partecipanti, minimizzandone l'impatto negativo, è di primaria importanza e costituisce uno dei criteri etici della ricerca.

## Correttezza

Il progetto di ricerca ed i suoi risultati sono corretti se si eliminano o si minimizzano i possibili errori in cui i ricercatori possono incorrere:

* errori nel modello teorico di riferimento
* errori metodologici che minano alcuni aspetti della validità della ricerca
* errori nella definizione delle variabili da studiare
* errori sistematici (bias) nel campionamento
* errori nella misura delle variabili
* errori sistematici (bias) nell'analisi dei dati
* errori nella sintesi e nella pubblicazione dei risultati.

Vi è una relazione fra correttezza e validità. Le tecniche di campionamento e l'analisi inferenziale ci permettono di minimizzare gli errori non sistematici di campionamento e di stima delle statistiche.

## Solidità (robustness)

Il costrutto di solidità rende esplicito il legame fra riproducibilità e validità esterna. Nel senso più stretto, un risultato è robusto se può essere replicato nella stessa forma, con campioni estratti dalla stessa popolazione, anche in laboratori diversi (replicabilità).  
Nel senso più ampio, un risultato è robusto se può essere replicato (e dunque generalizzato) in contesti in parte diversi, su popolazioni in parte diverse - o più ampie - e con paradigmi di ricerca diversi.


## Trasparenza

Correttezza e trasparenza dei protocolli sono criteri che permettono di aumentare la credibilità della ricerca, ed alcuni aspetti della sua validità.

Per soddisfare il criterio di trasparenza, è opportuno rendere espliciti e disponibili:

* i finanziamenti alla ricerca e gli eventuali conflitti di interesse
* il protocollo di ricerca
* i dati
	* i dati grezzi raccolti
	* i dati puliti
* il processo di analisi dei dati
* i risultati del processo di analisi
* i report e le pubblicazioni

* definire e rendere pubblici, a priori, i protocolli di ricerca, le ipotesi, i paradigmi e gli esperimenti che si intende intraprendere; 

Alcuni di questi requisiti sono finalizzati a contrastare problemi quali il *publication bias*, il *p-hacking* ed in genere quelle che in letteratura vengono definite *Questionable research practices* ([Measuring the Prevalence of Questionable Research Practices With Incentives for Truth Telling](https://szociologia.tk.mta.hu/uploads/files/archive/john_et_al_2012.pdf)).


## Protocollo di ricerca

Soprattutto nei progetti di ricerca, è opportuno definire a priori un chiaro protocollo di ricerca:

[WHO | Recommended format for a Research Protocol](https://www.who.int/rpc/research_ethics/format_rp/en/)

* sommario del protocollo
* informazioni generali
	* titolo del progetto, id
	* budget e costi previsti
	* finanziamenti
	* ricercatori coinvolti
	* laboratori coinvolti
* motivazioni della ricerca
* informazioni di contesto
* bibliografia
* scopi e obiettivi della ricerca
* design sperimentale
* metodologia
* sicurezza e salvaguardia dei partecipanti
	* gestione del consenso informato
	* gestione della privacy
	
* gestione dei dati
* analisi statistica
* quality Assurance
* risultati attesi
* Dissemination of Results and Publication Policy
* collegamenti con altri progetti


## Pratiche scorrette

@john2012measuring citano i dieci peccati capitali nella riceca (questionable research practices)

1. Non riportare tutte le misure dipendenti di uno studio
2. Decidere di aumentare la numerosità del campione per provare a rendere significativi i dati
3. Nella pubblicazione dei risultati, non riportare tutte le condizioni sperimentali
4. Decidere di diminuire la numerosità del campione una volta raggiunta la significatività dei riusltati
5. Arrotondare il p-value per farlo apparire significativo
6. Nella pubblicazione, riportare solo gli studi che confermano le ipotesi sperimentali e non quelle i cui risultati non sono significativi
7. Escludere selettivamente dei dati per *migliorare* i risultati
8. Aggiustare le ipotesi in base ai risultati
9. Riportare in maniera non corretta l'effetto delle variabili estranee al disegno di ricerca (ad esempio le variabili demografiche)
10. Falsificare i dati

@begley2013reproducibility Citano sei sintomi che lasciano intendere che gli standard qualitativi non siano stati rispettati. Fra i criteri che andrebbero rispettati:

* Utilizzare, quando possibile e opportuno, del doppio cieco nell'esperimento
* Replicare gli esperimenti più importanti (possibilmente in laboratori diversi)
* Pubblicare tutti i risultati, anche quelli negativi
* Applicare un'appropriata analisi statistica




## Replicabilità e riproducibilità

In letteratura spesso i due termini sono utilizzati come sinonimi. Altri autori distinguono due scenari diversi:

* *Replicabilità*: raccogli nuovi dati con lo stesso paradigma sperimentale e lo stesso protocollo
* *Riproducibilità*: possibilità di analizzare i dati raccolti nell'esperimento originale - e riprodurne i risultati

Fonti:

* [Replicability vs Reproducibility - Replicability Research Group](https://replicability.tau.ac.il/index.php/replicability-in-science/replicability-vs-reproducibility.html)
* [Reproducibility vs. Replication](https://jblevins.org/log/rep)
* @schloss2018identifying

Per permettere la replicabilità di una ricerca è necessario mettere a disposizione il protocollo ed eventualmente il software ed il materiale per la raccolta e l'elaborazione dei dati.  
Per permettere la riproducibilità è necessario mettere a disposizione i dati ed il software utilizzato per l'analisi.




### L'approccio open

Recentemente, sta prendendo piede nel mondo della ricerca l'approccio *open*: open research, open data, strumenti e software open source: rendere disponibili i protocolli di ricerca, i dati raccolti, gli script utilizzati per fare le analisi.

I vantaggi della open science sono molteplici:

* *efficienza*: rendere disponibili dati e codice permette ad altri ricercatori e centri di ricerca di fare tesoro del lavoro fatto, e semplifica la collaborazione fra ricercatori e centri di ricerca diversi;
* *trasparenza*: rendere pubblici protocolli, dati, script e software è una delle migliori garanzie di trasparenza;
* *correttezza*: l'approccio open permette una più approfondita peer review: non solo dell'articolo da pubblicare, ma anche dei dati, dei processi, dell'analisi
* *replicabilità*: diventa più semplice replicare una ricerca - o parte di essa - avendo a disposizione il materiale.

### Automazione

Nell'elaborazione ed analisi dei dati, una delle raccomandazioni più importanti riguarda la possibilità di automatizzare il più possibile il processo, riducendo le attività che il ricercatore e l'analista devono fare a mano.  
Automatizzare il processo garantisce numerosi vantaggi:

* *efficienza*: una volta automatizzato, il processo diventa molto più veloce; questo vale però solo per quelle attività che tendono a ripetersi nei diversi progetti e nelle diverse analisi;
* *trasparenza*: se il codice utilizzato per processare ed analizzare i dati viene condiviso (approccio *open*), altri ricercatori avranno la possibilità di verificarlo ed eventualmente correggerlo, e di riprodurre l'elaborazione e l'analisi dei dati;
* *correttezza*: gli script utilizzati per automatizzare il processo vanno attentamente verificati, per evitare errori di elaborazione ed analisi; vengono però minimizzate le possibilità di errore umano insito nelle operazioni fatte *a mano*;
* *riproducibilità*: se l'analisi è automatizzata, è più facile da riprodurre, ed il protocollo di ricerca è più facile da replicare


## Strutturare il processo di ricerca



* modularità
* automazione
* standardizzazione (interna, esterna)
* sicurezza (dei dati)
* trasparenza


Sicurezza dei dati

* salvare i dati grezzi su più supporti distinti: hd esterno, in cloud

Trasparenza

* scrivi codice facile da leggere (*write code for humans, write data for computer*), sia per te stesso/a (quando andrai a rileggere il codice) che per gli altri (collaborazione, replicabilità)
	* documenta e commenta ampiamente il codice; usa il codice come documentazione
* salva i dati, compresi i dati e i risultati intermedi, in formati aperti e standard
	* salva gli oggetti grafici con cui crei i plot
* rendi esplicito il legame fra l'analisi dei dati e la loro interpretazione (ad esempio attraverso l'uso di rMarkdown)

Standardizzazione

* usa pacchetti consolidati e testati

Modularità

* crea un'unica directory con tutto il materiale (dati, codice, testi)
* adotta degli standard per organizzare il materiale, ad esempio salvando in sottodirectory separate i dati (grezzi ed elaborati), il codice, le parti testuali / le parti in rMarkdown, i risultati
* documenta le versioni del software (in R, usando `session_info()`)
* opzionale: crea una macchina virtuale
* in rStudio, creare un progetto
* negli script usa percorsi relativi per caricare e salvare dati e figure
* trasforma gli script che usi più di frequente in funzioni (se possibile), moduli, eventualmente pacchetti

Tracciabilità

* tieni nota dell'origine e della versione dei dati
* usa un sistema di versioning (ad esempio git) per tenere traccia dell'evoluzione degli script

Replicabilità

* fa in modo che statistiche, tabelle e figure siano il risultato di script di calcolo
* per ogni risultato, tieni traccia di come è stato prodotto
* se usi delle funzioni di randomizzazione, stabilisci e salva il *random seed*
* automazione: evita (o minimizza) processi di pulizia e trasformazione manuali dei dati
* rendi pubblici i dati grezzi e puliti, gli script, i risultati.

Fonti:

* @sandve2013ten
* [Reproducible Research Using RMarkdown](https://rpubs.com/marschmi/105639)
* [Best Practice for good documented reproducible analysis - RStudio Community](https://community.rstudio.com/t/best-practice-for-good-documented-reproducible-analysis/1995/2)
* [Tools for Reproducible Research - Organizing projects; exploratory data analysis](https://kbroman.org/Tools4RR/assets/lectures/06_org_eda.pdf)

