14 Le fasi del progetto di analisi dei dati
- gestire il ciclo di vita di un progetto di analisi: dalla definizione della domanda di ricerca alla comunicazione dei risultati
- organizzare i file del progetto per garantirne portabilità e condivisione
- Leggere Veridical Data Science (Yu & Barter, 2024) focalizzandoti sul primo capitolo, che introduce le problematiche della data science, e sul quarto capitolo, che fornisce le linee guida dettagliate sull’organizzazione di un progetto di analisi dei dati.
14.1 Introduzione
Una gestione accurata ed efficace dei dati è fondamentale in molte discipline, inclusa la psicologia, dove l’analisi di dataset complessi rappresenta un aspetto centrale della ricerca. Garantire che i dati siano raccolti con precisione, organizzati in modo chiaro e facilmente accessibili per analisi e verifiche è essenziale per preservare l’integrità del lavoro scientifico e promuoverne la riproducibilità. Una gestione rigorosa dei dati assicura qualità e affidabilità in tutte le fasi di un progetto, dalla raccolta alla documentazione dei processi di elaborazione e delle eventuali modifiche apportate.
Dati ben organizzati e documentati non solo semplificano e rendono più efficiente il processo di analisi, ma riducono anche il rischio di errori, migliorando l’utilizzabilità e l’interpretazione delle informazioni. Questo è particolarmente rilevante quando si lavora con dataset provenienti da fonti eterogenee o con strutture complesse. Inoltre, la trasparenza e la completezza nella gestione dei dati rappresentano una condizione imprescindibile per garantire la riproducibilità della ricerca, un pilastro fondamentale della scienza. La possibilità per altri ricercatori di replicare i risultati utilizzando gli stessi dati e metodi rafforza la credibilità delle conclusioni e contribuisce a costruire un progresso scientifico condiviso e solido. Di conseguenza, una gestione dei dati responsabile non è solo una buona pratica, ma una necessità per la produzione di conoscenze affidabili e sostenibili.
Prima di immergerti nella lettura di questo capitolo, prenditi un momento per riflettere sulle seguenti domande. Quali risposte daresti prima di leggere il materiale?
- Perché è importante organizzare e documentare accuratamente i dati in un progetto di ricerca?
- Quali problemi possono emergere se si inizia a scrivere codice senza una pianificazione adeguata?
- Quali vantaggi offre R per la gestione dei dati rispetto ad altri strumenti?
- Quali strategie potrebbero migliorare la riproducibilità del tuo lavoro?
- Come struttureresti un progetto di analisi dati per mantenerlo chiaro e facilmente replicabile?
Ora, mentre leggi il capitolo, confronta le tue risposte con i concetti discussi.
14.2 Pianificazione del workflow in R: strategie per progetti sostenibili
14.2.1 L’importanza della pianificazione iniziale
Affrontare un progetto di analisi dati senza una pianificazione è come iniziare un esperimento psicologico senza ipotesi: si rischia di perdersi in tentativi disordinati. I programmatori esperti sanno che scrivere codice è solo il 20% del lavoro (Gillespie & Lovelace, 2016). Il restante 80% consiste nel definire obiettivi, prevenire errori e organizzare il processo.
Berkun (2005) sintetizza questo concetto con una massima: “Una preparazione intelligente minimizza il lavoro”. Approcci casuali, come scrivere codice senza strategia e correggere errori “al volo”, non solo sono inefficienti, ma espongono al rischio di debito tecnico (Kruchten et al., 2012) – l’accumulo di soluzioni temporanee che complicano il progetto nel lungo termine.
Esempio 14.1 Immaginate di dover analizzare dati di un esperimento sull’attenzione. Senza pianificazione, potreste:
- Importare i dati in modo disorganizzato, mischiando file RAW e modificati.
- Utilizzare funzioni non ottimali (es.:
merge()
invece di*_join()
didplyr
), rallentando l’analisi.
- Dimenticare di documentare passaggi critici, rendendo impossibile replicare i risultati.
14.2.2 Cinque pilastri per un workflow efficiente
Gillespie & Lovelace (2016) propone un framework basato su cinque principi, adattabili a progetti di psicologia:
-
Disegnare prima di programmare
- Utilizzare strumenti analogici (carta, lavagna) o digitali (Miro, draw.io) per:
- Mappare le variabili chiave dell’esperimento.
- Schematizzare il flusso di analisi (es.: “Dati grezzi → Pulizia → Inferenza → Grafici → Report”).
- Mappare le variabili chiave dell’esperimento.
- Esempio: Per uno studio longitudinale, tracciare una timeline delle fasi di raccolta dati e analisi.
- Utilizzare strumenti analogici (carta, lavagna) o digitali (Miro, draw.io) per:
-
Suddividere il lavoro in “chunk”
- Frammentare il progetto in task gestibili, usando il metodo SMART:
-
Specifico: “Creare un grafico a boxplot per il gruppo controllo vs sperimentale”.
-
Misurabile: “Il grafico deve includere valori p e intervalli di confidenza”.
-
Assegnabile: Delegare la pulizia dati a un collaboratore usando script condivisi.
-
Realistico: Stimare 3 ore per l’analisi preliminare, non un intero pomeriggio.
- Temporalizzato: “Completare l’importazione dati entro venerdì”.
-
Specifico: “Creare un grafico a boxplot per il gruppo controllo vs sperimentale”.
- Frammentare il progetto in task gestibili, usando il metodo SMART:
-
Selezionare i pacchetti con criterio
- Investire tempo nella ricerca di strumenti ottimali prima di iniziare:
-
janitor
per pulire nomi di colonne (es.:clean_names()
).
-
report
per generare automaticamente testi statistici in APA style.
-
- Investire tempo nella ricerca di strumenti ottimali prima di iniziare:
-
Documentazione continua
-
Integrare annotazioni direttamente nel codice:
# Pulizia dati: rimuovere partecipanti con >50% risposte mancanti (protocollo Smith et al., 2020) dati_puliti <- dati_raw %>% filter(complete.cases(.) >= 0.5)
Utilizzare Quarto per creare report dinamici che uniscono codice, risultati e interpretazioni.
-
-
Riproducibilità come priorità
-
Strutturare il progetto in cartelle chiaramente organizzate. Per esempio:
/progetto_psicologia ├── data/ ├── script/ ├── output/ └── report/
-
14.2.3 Strumenti di pianificazione visiva in R
Per progetti articolati, DiagrammeR consente di creare diagrammi di Gantt direttamente in R. Per esempio:
library(DiagrammeR)
mermaid("
gantt
title Progetto di analisi dei dati per Psicometria
section Raccolta Dati
Reclutamento partecipanti :a1, 2025-03-15, 7d
Sessioni di raccolta dati :a2, after a1, 14d
section Analisi
Pulizia dati :a3, after a2, 3d
Analisi esplorativa :a4, after a3, 5d
Inferenza frequentista :a5, after a4, 7d
Inferenza bayesiana :a6, after a5, 7d
section Report
Creazione report :c7, after a6, 2d
")
14.2.4 Gestire il debito tecnico
Anche in piccoli progetti, è cruciale adottare buone pratiche per mantenere il codice leggibile e gestibile nel tempo. Ecco alcune strategie utili:
1. Refactoring periodico
- Dedica del tempo ogni settimana (ad esempio 1 ora) per riorganizzare il codice.
- Sostituisci soluzioni complesse o ridondanti con alternative più efficienti e leggibili (es.: semplificare cicli for
con funzioni come map()
in R).
- Rimuovi codice non utilizzato o obsoleto.
2. Commenti chiari e utili
- Scrivi commenti esplicativi sopra ogni blocco di codice complesso per renderlo comprensibile anche a chi non ha scritto il progetto.
Esempio:
# Normalizza i dati usando la tecnica Min-Max scaling
normalized_data <- (data - min(data)) / (max(data) - min(data))
- Evita commenti ovvi (es.:
# Importa tidyverse
quando scrivilibrary(tidyverse)
).
- Aggiorna i commenti se modifichi il codice, per mantenerli coerenti con le modifiche.
3. Strutturare il progetto
Organizza il tuo progetto in cartelle e file ben definiti.
4. Checklist pre-consegna del progetto
Prima di consegnare o condividere il progetto, verifica:
- La presenza di commenti utili nei punti critici del codice.
- Che i dati originali siano conservati intatti nella cartella dedicata (
dati_raw/
).
- Che l’ambiente di lavoro sia documentato (es.: salva l’output di
sessionInfo()
in R).
5. Migliorare la leggibilità del codice
- Usa nomi di variabili descrittivi (es.:
media_punteggi
invece dix
).
- Mantieni una struttura coerente per indentazione e spaziatura.
- Dividi il codice in funzioni modulari per evitare script troppo lunghi e difficili da seguire.
14.3 Capacità di Gestione dei Dati in R
Una volta compresi i benefici di una pianificazione strategica, è importante disporre di strumenti adeguati per gestire, analizzare e documentare i dati. In questo capitolo ci concentreremo sul ruolo di R in un workflow efficiente di analisi dei dati. R è uno strumento potente e versatile, pensato per supportare tutte le fasi del ciclo di vita dei dati, dalla raccolta alla documentazione, risultando così un alleato indispensabile per chiunque lavori con dataset complessi. Le sue principali funzionalità includono:
-
Importazione ed esportazione dei dati: Pacchetti come
readr
erio
semplificano l’importazione di dati da fonti diverse (file CSV, database, API web) e l’esportazione in formati adatti a svariati utilizzi.
-
Pulizia e preparazione dei dati: Grazie a pacchetti come
dplyr
,tidyr
estringr
, R offre strumenti intuitivi per manipolare, trasformare e preparare i dati in modo efficiente, rendendoli pronti per l’analisi.
-
Esplorazione e sintesi: Con pacchetti come
dplyr
eggplot2
, R permette di calcolare statistiche descrittive, individuare pattern significativi e visualizzare distribuzioni e relazioni in modo chiaro e informativo.
-
Documentazione dinamica: Strumenti come R Markdown e Quarto consentono di integrare in un unico documento codice, analisi, testo esplicativo e risultati, facilitando la riproducibilità e la trasparenza del lavoro.
- Controllo delle versioni: L’integrazione di Git in RStudio offre un sistema di gestione delle versioni che consente di monitorare modifiche, collaborare con altri e garantire la tracciabilità del processo analitico.
La combinazione di pianificazione strategica e strumenti avanzati come R rappresenta un approccio vincente per affrontare progetti complessi. Le funzionalità di R, se utilizzate in modo appropriato, riducono al minimo il rischio di errori e massimizzano l’efficienza e l’affidabilità dei risultati.
14.4 Configurare l’Ambiente R
Per sfruttare al meglio le potenzialità di R è essenziale configurare correttamente RStudio e integrare i pacchetti fondamentali per la gestione dei dati. Una configurazione adeguata favorisce la riproducibilità e l’organizzazione del lavoro.
14.4.1 Workspace e Cronologia
Accedi a Tools > Global Options > General e modifica le seguenti impostazioni:
- Disabilita l’opzione Restore .RData into workspace at startup.
- Imposta Save workspace to .RData on exit su Never.
Queste scelte incoraggiano una gestione basata sugli script, rendendo il lavoro più trasparente e riducendo possibili conflitti tra sessioni diverse. Ogni analisi sarà così chiaramente documentata nel codice, evitando dipendenze da file temporanei o precedenti sessioni di lavoro.
14.4.2 Pacchetti Essenziali
R è composto da un modulo base che fornisce le funzionalità fondamentali del linguaggio, ma il suo potere deriva dall’ampio ecosistema di pacchetti. Per questo corso (e in generale per un workflow efficiente), utilizzeremo regolarmente i seguenti pacchetti:
-
here
: per la gestione ordinata dei percorsi relativi, evitando problemi con i percorsi assoluti.
-
tidyverse
: una raccolta di pacchetti (tra cuidplyr
,tidyr
,ggplot2
) essenziali per la manipolazione, l’analisi e la visualizzazione dei dati.
Assicurati di installarli e caricarli all’inizio di ogni script con i comandi:
14.4.3 Gestione dei Progetti
I progetti in RStudio rappresentano uno strumento chiave per mantenere il lavoro ben organizzato. Sfruttare i progetti consente di creare ambienti separati, in cui ogni progetto ha la propria directory dedicata.
Per creare un nuovo progetto:
- Vai su File > New Project.
- Seleziona la directory dove verrà creato il tuo progetto.
- Salva tutti i file correlati (script, dati, risultati) all’interno di questa directory.
Questo approccio previene confusione e facilita la navigazione, in quanto ogni progetto diventa un’unità autonoma, ideale per mantenere ordine e coerenza nel lavoro.
14.5 Il Ciclo di Vita di un Progetto di Data Science
Una volta configurato un ambiente stabile, organizzato e pronto per l’analisi, è possibile affrontare in modo sistematico le diverse fasi che caratterizzano tipicamente un progetto di Data Science. Secondo la proposta di (Yu & Barter, 2024), queste fasi sono:
-
Formulazione del problema e raccolta dei dati: Definizione delle domande di ricerca e acquisizione dei dataset.
-
Pulizia, preprocessing e analisi esplorativa: Preparazione dei dati per l’analisi attraverso trasformazioni e sintesi.
-
Analisi predittiva e/o inferenziale (opzionale): Modelli statistici o predittivi per rispondere alle domande di ricerca.
-
Valutazione dei risultati: Interpretazione e verifica delle conclusioni tratte.
- Comunicazione dei risultati: Presentazione dei risultati in forma visiva e narrativa.
Non tutti i progetti prevedono la fase di analisi predittiva, ma quasi tutti attraversano le altre fasi. Mantenere un approccio organizzato e ben strutturato lungo tutto il ciclo di vita riduce il rischio di errori e favorisce la riproducibilità.
14.5.1 Fase 1: Formulazione del Problema e Raccolta dei Dati
La definizione di una domanda di ricerca chiara e precisa rappresenta la base di qualunque progetto di data science. È cruciale stabilire con attenzione l’ambito dell’analisi:
Ambito Applicativo
In un contesto applicativo, l’obiettivo principale è spesso la realizzazione di un report descrittivo su un intervento o un’attività specifica (ad esempio, valutare l’efficacia di un programma di educazione sessuale rivolto agli adolescenti). In questo caso, l’attenzione si focalizza sulla descrizione dei risultati ottenuti, senza necessariamente approfondire i fondamenti teorici.Ambito della Ricerca Psicologica
In un contesto di ricerca, invece, diventa essenziale giustificare le scelte metodologiche, la selezione degli strumenti di misura e la formulazione delle domande di ricerca sulla base della letteratura esistente e di teorie consolidate. (Questo è oggetto di approfondimento nel Capitolo 3.)
14.5.1.1 Caratteristiche di una Buona Domanda di Ricerca
La domanda di ricerca deve essere formulata in modo che sia possibile rispondervi analizzando i dati a disposizione. Talvolta, la domanda iniziale può risultare troppo ampia o irrealistica rispetto ai dati disponibili, rendendo necessario un processo di revisione. L’obiettivo è assicurare che i dati raccolti (o da raccogliere) siano appropriati e sufficienti a fornire una risposta solida al quesito di partenza.
14.5.1.2 Raccolta dei Dati
In questa fase, è altrettanto cruciale identificare chiaramente i dati da utilizzare e comprenderne la provenienza. Esistono principalmente due scenari:
Utilizzo di Dati Esistenti
Alcuni progetti si basano su dataset già disponibili, reperiti da repository pubblici, database aziendali o esperimenti precedenti.Nuova Raccolta di Dati
Altri progetti richiedono la raccolta di dati ex novo. In entrambi i casi, è importante pianificare con cura le analisi prima di avviare la raccolta, onde evitare di ritrovarsi con dataset incompleti o non adatti agli obiettivi.
È inoltre essenziale documentare accuratamente le tecniche e procedure utilizzate per la raccolta dati, nonché valutare e dichiarare eventuali limitazioni che possano inficiare l’interpretazione dei risultati.
14.5.2 Fase 2: Pulizia dei Dati e Analisi Esplorativa
14.5.2.1 Importazione ed Esportazione dei Dati in R
Una volta individuati i dati, occorre importarli in R in un formato adatto all’analisi, tipicamente in un data frame. Il pacchetto rio
fornisce la funzione universale import()
, che rende superfluo l’uso di funzioni specifiche per ciascun formato (es. .csv
, .xlsx
, .json
, ecc.). Per organizzare al meglio i file, si consiglia di creare una struttura di cartelle chiara (es. data/raw
per i dati grezzi e data/processed
per i dati elaborati) e di usare percorsi relativi attraverso il pacchetto here.
Esempio di importazione:
Per esportare i dati elaborati:
Questa strategia migliora la portabilità (il progetto può essere facilmente trasferito su altri computer) e la riproducibilità (poiché non è necessario modificare manualmente i percorsi dei file).
14.5.2.2 Pulizia dei Dati
Dopo avere definito la domanda di ricerca e recuperato i dati, il passo successivo è la pulizia. Un dataset “pulito” è ordinato, coerente e privo di ambiguità, così che sia comprensibile sia per il computer sia per l’analista. La pulizia dei dati implica l’individuazione di valori anomali, formattazioni errate, duplicati, incongruenze e valori mancanti, per poi sistemarli in modo appropriato (con codice, senza alterare i file dei dati grezzi originali).
La pulizia dei dati è una fase cruciale: aiuta a sviluppare una comprensione più approfondita del dataset e delle sue eventuali limitazioni. L’obiettivo è creare una versione dei dati che rifletta il più fedelmente possibile la realtà e che sia interpretata correttamente dal computer.
14.5.2.3 Preprocessing
Il preprocessing consiste nell’effettuare quelle trasformazioni sui dati puliti che sono richieste da specifici algoritmi di analisi o di modellazione. Ad esempio, alcuni modelli possono richiedere variabili su scale comparabili oppure l’assenza di valori mancanti. Durante il preprocessing, si possono anche generare nuove variabili ritenute utili all’analisi.
Non esiste una procedura di preprocessing “universale”: ogni scelta va documentata e motivata, poiché implica decisioni soggettive che influiscono sull’interpretazione finale dei risultati.
14.5.2.4 Analisi Esplorativa dei Dati
Dopo l’importazione, la pulizia e il preprocessing, è il momento di esplorare il dataset. L’Analisi Esplorativa dei Dati (Exploratory Data Analysis, EDA) comprende:
- Calcolo di statistiche descrittive (misure di tendenza centrale, dispersione, etc.)
- Identificazione di pattern e distribuzioni insolite
- Creazione di tabelle di contingenza e diagrammi (istogrammi, boxplot, scatterplot, ecc.)
L’obiettivo principale è far familiarizzare il ricercatore con la struttura dei dati e fornire ipotesi da verificare nelle fasi successive.
14.5.3 Fase 3: Analisi Predittiva e Inferenziale
A seconda degli obiettivi del progetto, l’analisi può includere modelli statistici o algoritmi di machine learning orientati all’inferenza e/o alla previsione. In psicologia, ciò può tradursi nell’uso di modelli di regressione, test statistici, modelli misti o metodi di classificazione e clustering. L’obiettivo è rispondere a domande di ricerca specifiche o fare inferenze su una popolazione più ampia. Nei contesti applicativi, può riguardare la costruzione di modelli predittivi per stimare il comportamento di variabili di interesse sulla base dei dati storici.
14.5.4 Fase 4: Valutazione dei Risultati
In questa fase si valuta la bontà dei risultati ottenuti, sia dal punto di vista quantitativo (applicando metriche appropriate o test statistici) sia qualitativo (interpretazione teorica o pratica dei risultati). È il momento di ricollegarsi alla domanda di ricerca iniziale, per verificare se gli obiettivi sono stati raggiunti e quali implicazioni emergono.
14.5.5 Fase 5: Comunicazione dei Risultati
L’ultima fase consiste nella comunicazione dei risultati a un pubblico più ampio, che può essere composto da ricercatori, committenti, stakeholder o utenti finali. È essenziale presentare i risultati in maniera chiara e accessibile, evitando di dare per scontata una profonda conoscenza del progetto o del gergo tecnico. Si può optare per:
-
Articoli scientifici: per condividere le scoperte con la comunità accademica.
-
Report interni: per informare un team di lavoro o un ente finanziatore.
- Presentazioni: per trasmettere rapidamente i risultati a un pubblico non specialistico.
Una comunicazione efficace richiede di spiegare in modo comprensibile le analisi e le figure mostrate, fornendo una guida interpretativa. L’uso di grafici e diagrammi ben curati può facilitare molto la fruizione delle informazioni.
14.6 Organizzazione del Progetto
Un aspetto fondamentale per il successo e la riproducibilità di un progetto di analisi dati è l’organizzazione efficiente dei file, che include dati, codice e documentazione. Questi file dovrebbero essere riuniti all’interno di una singola cartella (o directory) dedicata al progetto.
14.6.1 Home Directory
In RStudio, è possibile creare un file nome_del_progetto.Rproj
, che definisce la cartella principale (home directory) da cui R avvia il lavoro. Basta aprire RStudio cliccando su questo file per lavorare automaticamente all’interno dell’ambiente del progetto, rendendo più agevole l’uso di percorsi relativi e la gestione di script, dati e output.
14.6.2 Struttura di un Progetto
Yu & Barter (2024) propone un template per organizzare in modo chiaro un progetto di analisi dati:
nome_progetto/
├── nome_progetto.Rproj
├── data/
│ ├── raw/
│ │ └── my_data.csv
│ ├── processed/
├── dslc_documentation/
│ ├── 01_data_cleaning.qmd
│ ├── 02_analysis.qmd
│ └── functions/
└── README.md
-
data/
:-
raw/
: contiene i dati grezzi, mai modificati;
-
processed/
: ospita i dati puliti ed elaborati, pronti per l’analisi;
- Importante inserire un codebook per documentare il significato delle variabili e le unità di misura.
-
-
dslc_documentation/
:- Contiene i file necessari per l’analisi (in Quarto
.qmd
, Jupyter Notebook.ipynb
, o altro).
- Può includere una sottocartella
functions/
con script.R
o.py
contenenti funzioni personalizzate.
- Contiene i file necessari per l’analisi (in Quarto
-
README.md
:- Descrive la struttura del progetto, gli obiettivi e i passaggi per replicare le analisi.
14.6.2.1 Vantaggi di questa struttura
-
Organizzazione Chiara: separare i dati grezzi da quelli elaborati riduce la confusione e il rischio di modifiche involontarie ai dati originali.
-
Riproducibilità: la presenza di documentazione completa (codebook, file di analisi, README) consente di comprendere e replicare i risultati anche a distanza di tempo o da parte di terzi.
-
Portabilità: lavorando con percorsi relativi (es. grazie al pacchetto here in R), l’intero progetto può essere trasferito da un computer all’altro senza bisogno di modificare il codice.
-
Efficienza: la sottocartella
functions/
permette di riutilizzare codice e funzioni personalizzate, evitando duplicazioni negli script principali.
14.7 Riflessioni Conclusive
La forza e la bellezza del codice risiedono nella sua riusabilità: una volta scritto, può essere eseguito infinite volte per ottenere risultati coerenti. Se l’ambiente di lavoro è configurato correttamente, lo stesso codice applicato agli stessi dati fornirà sempre gli stessi output. Questo principio, chiamato riproducibilità computazionale, è essenziale per garantire trasparenza e affidabilità nel lavoro scientifico.
La riproducibilità offre numerosi benefici:
Monitorare le modifiche del progetto
La capacità di riprodurre il lavoro facilita il monitoraggio dell’evoluzione del progetto e delle scelte implementative nel tempo.Riprodurre il proprio lavoro
Il primo vero vantaggio della riproducibilità è per chi ha sviluppato il codice: tornare a distanza di mesi (o anni) su un progetto e ritrovare un flusso di lavoro chiaro e replicabile agevola enormemente la revisione o l’estensione delle analisi.Condivisione e crescita collettiva
Mettere a disposizione il proprio lavoro in forma riproducibile consente ad altri ricercatori di validare e ampliare i risultati, stimolando un progresso scientifico collettivo e robusto.
Rendere il proprio lavoro riproducibile richiede attenzione alla documentazione, un’organizzazione solida del progetto e l’uso di strumenti adeguati per garantire la stabilità dell’ambiente. I metodi e le tecniche esplorate in questo capitolo – dalla pianificazione strategica alla pulizia dei dati, dalla struttura delle cartelle al controllo di versione – sono tutti tasselli fondamentali per realizzare analisi rigorose, verificabili e di valore duraturo.
In sintesi, un progetto di Data Science di successo richiede sia un’accurata pianificazione strategica – per evitare debiti tecnici e massimizzare l’efficacia del proprio lavoro – sia l’uso di strumenti adeguati, come R e i relativi pacchetti, in un ambiente ben configurato. Seguire un ciclo di vita del progetto ben definito e mantenere un’organizzazione logica di dati, codice e documentazione consente di promuovere l’efficienza, ridurre i rischi di errore e favorire la riproducibilità, un valore fondante della scienza moderna.
Un problema cruciale nella psicologia contemporanea è la crisi di replicabilità, che evidenzia come molti risultati di ricerca non siano replicabili (Collaboration, 2015). La riproducibilità computazionale, pur avendo un obiettivo più ristretto, si concentra sulla possibilità di ottenere gli stessi risultati applicando lo stesso codice agli stessi dati. Questo approccio, sebbene non risolva interamente la crisi, rappresenta un passo fondamentale verso una scienza più trasparente e rigorosa.
Ora che hai completato il capitolo, confrontiamo le risposte alle domande iniziali con quanto appreso:
-
Perché è importante organizzare e documentare accuratamente i dati in un progetto di ricerca?
- Una gestione strutturata dei dati riduce il rischio di errori, facilita l’analisi e migliora la riproducibilità, rendendo il lavoro scientifico più affidabile e trasparente.
-
Quali problemi possono emergere se si inizia a scrivere codice senza una pianificazione adeguata?
- Senza una pianificazione strategica si rischia di incorrere nel “debito tecnico”, accumulando codice disordinato che richiede correzioni costose in termini di tempo e risorse. Inoltre, si potrebbero fare scelte subottimali che compromettono la scalabilità e manutenibilità del progetto.
-
Quali vantaggi offre R per la gestione dei dati rispetto ad altri strumenti?
- R fornisce strumenti avanzati per importazione, pulizia, analisi e visualizzazione dei dati, oltre a supportare la documentazione dinamica e il controllo delle versioni con Git. La sua ampia comunità e la disponibilità di pacchetti specializzati lo rendono particolarmente adatto per l’analisi statistica e la ricerca.
-
Quali strategie potrebbero migliorare la riproducibilità del tuo lavoro?
- Utilizzare strumenti come Quarto per documentare il codice e le analisi, adottare percorsi relativi con il pacchetto
here
, strutturare i dati in cartelle ben organizzate e integrare il controllo delle versioni con Git.
- Utilizzare strumenti come Quarto per documentare il codice e le analisi, adottare percorsi relativi con il pacchetto
-
Come struttureresti un progetto di analisi dati per mantenerlo chiaro e facilmente replicabile?
-
Adottando una struttura chiara, ad esempio:
nome_progetto/ ├── nome_progetto.Rproj ├── data/ │ ├── raw/ │ │ └── my_data.csv │ ├── processed/ ├── dslc_documentation/ │ ├── 01_data_cleaning.qmd │ ├── 02_analysis.qmd │ └── functions/ └── README.md
- Questa organizzazione separa i dati grezzi da quelli elaborati, include documentazione chiara e facilita la riproducibilità.
-
Conclusione: Riflettere in anticipo sui problemi e sulle strategie di gestione dei dati aiuta a costruire workflow più efficienti e affidabili. Se le tue risposte iniziali differivano da queste, quali nuovi spunti hai appreso da questo capitolo?
14.8 Esercizi
L’obiettivo di questo esercizio è comprendere il ciclo di vita di un progetto di analisi dei dati, l’organizzazione del progetto e la gestione della riproducibilità.
-
Gestione del progetto di analisi
- Quali sono le fasi principali di un progetto di analisi dei dati secondo Yu (2024)?
- Spiega il ruolo della fase di formulazione del problema e raccolta dei dati.
-
Organizzazione del workspace in R
- Quali impostazioni devono essere modificate in RStudio per favorire la riproducibilità?
- Perché è importante usare percorsi relativi nei progetti in RStudio?
- Descrivi il ruolo del pacchetto
here
nella gestione dei percorsi dei file.
-
Struttura dei progetti in R
- Quali sono i vantaggi dell’utilizzo dei progetti in RStudio?
- Quali sono le cartelle principali in una struttura organizzata di un progetto?
- Perché è utile separare i dati grezzi dai dati processati?
-
Importazione ed esportazione dei dati
- Quali pacchetti di R possono essere utilizzati per importare ed esportare dati?
- Scrivi un esempio di codice per importare un file CSV usando
rio
e il pacchettohere
.
- Come puoi esportare un dataset modificato in una cartella dedicata ai dati processati?
- Quali pacchetti di R possono essere utilizzati per importare ed esportare dati?
-
Pulizia e preprocessing dei dati
- Qual è la differenza tra pulizia e preprocessing dei dati?
- Quali strumenti di
dplyr
sono comunemente usati per pulire e trasformare i dati?
- Qual è la differenza tra pulizia e preprocessing dei dati?
-
Analisi esplorativa dei dati (EDA)
- Quali sono alcuni strumenti utilizzati in R per effettuare un’analisi esplorativa dei dati?
- Scrivi un breve esempio di codice in R per calcolare statistiche descrittive di base su un dataset.
- Quali sono alcuni strumenti utilizzati in R per effettuare un’analisi esplorativa dei dati?
-
Riproducibilità e comunicazione dei risultati
- Perché la riproducibilità è un elemento chiave nella scienza dei dati?
- Quali strumenti offre Quarto per la documentazione e la condivisione dei risultati di un’analisi?
- Perché la riproducibilità è un elemento chiave nella scienza dei dati?
1. Gestione del progetto di analisi
-
Fasi principali del progetto di analisi dei dati (Yu, 2024):
- Formulazione del problema e raccolta dei dati
- Pulizia, preprocessing e analisi esplorativa
- Analisi predittiva e/o inferenziale (se applicabile)
- Valutazione dei risultati
- Comunicazione dei risultati
- Formulazione del problema e raccolta dei dati
-
Ruolo della fase di formulazione del problema:
Aiuta a definire gli obiettivi dell’analisi e a selezionare le fonti di dati adeguate. Una domanda di ricerca ben definita garantisce che i dati siano pertinenti e che le analisi siano mirate.
2. Organizzazione del workspace in R
-
Impostazioni da modificare in RStudio:
- Disabilitare Restore .RData into workspace at startup
- Impostare Save workspace to .RData on exit su “Never”
- Disabilitare Restore .RData into workspace at startup
Importanza dei percorsi relativi:
Permettono di rendere il progetto portabile e riproducibile, evitando problemi di percorsi assoluti specifici per un computer.Ruolo del pacchetto
here
Aiuta a gestire i percorsi relativi all’interno del progetto senza dover specificare percorsi assoluti.
3. Struttura dei progetti in R
Vantaggi dell’uso dei progetti in RStudio:
Mantengono ambienti separati, organizzano i file e facilitano la riproducibilità.-
Cartelle principali in una struttura organizzata:
-
data/raw/
→ Dati grezzi
-
data/processed/
→ Dati elaborati
-
dslc_documentation/
→ Documentazione e script
-
functions/
→ Funzioni personalizzate
-
Separare dati grezzi da dati processati:
Evita di modificare accidentalmente i dati originali, garantendo riproducibilità.
4. Importazione ed esportazione dei dati
-
Pacchetti per importazione/esportazione:
-
rio
: unifica funzioni di import/export
-
readr
: specifico per CSV e altri formati di testo
-
here
: gestisce percorsi relativi
-
-
Esempio di codice per importare dati CSV:
-
Esportare dati modificati:
5. Pulizia e preprocessing dei dati
-
Differenza tra pulizia e preprocessing:
- Pulizia: rimozione di errori, gestione dei dati mancanti, formattazione
- Preprocessing: trasformazione dei dati per adattarli a modelli specifici
- Pulizia: rimozione di errori, gestione dei dati mancanti, formattazione
-
Strumenti di
dplyr
per pulizia e trasformazione:
6. Analisi esplorativa dei dati (EDA)
-
Strumenti comuni:
-
Esempio di codice per statistiche descrittive:
summary(df)
7. Riproducibilità e comunicazione dei risultati
-
Importanza della riproducibilità:
- Facilita la verifica e il miglioramento degli studi
- Previene errori accidentali
- Consente a terzi di replicare e costruire su ricerche precedenti
- Facilita la verifica e il miglioramento degli studi
-
Strumenti di Quarto:
- Permette di combinare testo, codice e output in documenti riproducibili
- Supporta citazioni automatiche e gestione delle bibliografie
- Permette di combinare testo, codice e output in documenti riproducibili
Informazioni sull’Ambiente di Sviluppo
sessionInfo()
#> R version 4.4.2 (2024-10-31)
#> Platform: aarch64-apple-darwin20
#> Running under: macOS Sequoia 15.3.1
#>
#> Matrix products: default
#> BLAS: /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/lib/libRblas.0.dylib
#> LAPACK: /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/lib/libRlapack.dylib; LAPACK version 3.12.0
#>
#> locale:
#> [1] C/UTF-8/C/C/C/C
#>
#> time zone: Europe/Rome
#> tzcode source: internal
#>
#> attached base packages:
#> [1] stats graphics grDevices utils datasets methods base
#>
#> other attached packages:
#> [1] DiagrammeR_1.0.11 thematic_0.1.6 MetBrewer_0.2.0 ggokabeito_0.1.0
#> [5] see_0.10.0 gridExtra_2.3 patchwork_1.3.0 bayesplot_1.11.1
#> [9] psych_2.4.12 scales_1.3.0 markdown_1.13 knitr_1.49
#> [13] lubridate_1.9.4 forcats_1.0.0 stringr_1.5.1 dplyr_1.1.4
#> [17] purrr_1.0.4 readr_2.1.5 tidyr_1.3.1 tibble_3.2.1
#> [21] ggplot2_3.5.1 tidyverse_2.0.0 rio_1.2.3 here_1.0.1
#>
#> loaded via a namespace (and not attached):
#> [1] generics_0.1.3 stringi_1.8.4 lattice_0.22-6
#> [4] hms_1.1.3 digest_0.6.37 magrittr_2.0.3
#> [7] RColorBrewer_1.1-3 evaluate_1.0.3 grid_4.4.2
#> [10] timechange_0.3.0 fastmap_1.2.0 rprojroot_2.0.4
#> [13] jsonlite_1.9.1 mnormt_2.1.1 cli_3.6.4
#> [16] rlang_1.1.5 visNetwork_2.1.2 munsell_0.5.1
#> [19] yaml_2.3.10 withr_3.0.2 tools_4.4.2
#> [22] parallel_4.4.2 tzdb_0.4.0 colorspace_2.1-1
#> [25] pacman_0.5.1 vctrs_0.6.5 R6_2.6.1
#> [28] lifecycle_1.0.4 htmlwidgets_1.6.4 pkgconfig_2.0.3
#> [31] pillar_1.10.1 gtable_0.3.6 glue_1.8.0
#> [34] xfun_0.51 tidyselect_1.2.1 rstudioapi_0.17.1
#> [37] farver_2.1.2 htmltools_0.5.8.1 nlme_3.1-167
#> [40] rmarkdown_2.29 compiler_4.4.2