14  Le fasi del progetto di analisi dei dati

In questo capitolo imparerai a
  • 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
Prerequisiti
  • 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.
Preparazione del Notebook
# Carica il file _common.R per impostazioni di pacchetti e opzioni
here::here("code", "_common.R") |> 
  source()

14.1 Introduzione

Nel contesto della ricerca psicologica, dove i dati rappresentano il tramite principale tra ipotesi teoriche e risultati empirici, la cura nella gestione delle informazioni raccolte è parte integrante del processo scientifico. Una gestione accurata dei dati non è solo una questione organizzativa: è una condizione necessaria per garantire l’affidabilità delle analisi e la credibilità delle conclusioni che ne derivano.

Affinché un dataset possa effettivamente sostenere un’analisi rigorosa, è indispensabile che esso sia strutturato in modo chiaro, privo di ambiguità, e accompagnato da una documentazione precisa delle operazioni effettuate. Questo vale non solo per la fase iniziale di raccolta dei dati, ma anche per tutte le successive trasformazioni — pulizia, codifica, fusione di fonti diverse — che spesso accompagnano il lavoro empirico. In assenza di tracciabilità, anche un’analisi tecnicamente corretta può risultare opaca o difficilmente replicabile.

Proprio la riproducibilità rappresenta oggi uno degli standard più elevati della buona ricerca scientifica. Disporre di dati ben documentati significa permettere ad altri studiosi — o a sé stessi in un secondo momento — di ricostruire il percorso analitico seguito, verificarne la solidità, e, se necessario, estenderlo o correggerlo. In questo senso, la qualità dei dati e la qualità dell’analisi non sono separabili.

La complessità crescente dei dati psicologici, spesso raccolti con strumenti digitali, in formato longitudinale o provenienti da più fonti, rende ancora più urgente adottare pratiche di gestione strutturate e coerenti. Un dataset non è mai un oggetto neutro: riflette scelte teoriche, operative, e tecniche. Riuscire a mantenere queste scelte visibili e accessibili nel tempo è ciò che permette di trasformare l’analisi dei dati in un processo scientificamente trasparente.

In questo capitolo, ci concentreremo su come impostare un progetto di analisi dei dati in modo da favorire fin dall’inizio chiarezza, rigore e tracciabilità. L’obiettivo non è solo tecnico, ma epistemologico: una buona gestione dei dati non serve solo a “fare funzionare il codice”, ma a costruire una relazione affidabile tra osservazione empirica e inferenza scientifica.

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 flusso di lavoro in R: strategie per progetti sostenibili

14.2.1 L’importanza della pianificazione iniziale

Affrontare un progetto di analisi dei dati senza una pianificazione accurata è come condurre un esperimento psicologico senza un’ipotesi chiara: si rischia di procedere in modo confuso, accumulando errori, ripensamenti e soluzioni improvvisate che rendono il lavoro inefficiente e difficile da mantenere nel tempo. Contrariamente a quanto si possa pensare, scrivere codice rappresenta solo una parte marginale del lavoro analitico. Gran parte dello sforzo risiede infatti nella definizione degli obiettivi, nella scelta degli strumenti più adatti, nella costruzione di un percorso analitico coerente e nella prevenzione dei cosiddetti “debiti tecnici”, ovvero quelle scorciatoie momentanee che poi si rivelano difficili da correggere.

Un approccio poco strutturato può portare, ad esempio, a importare i dati in modo disordinato, a mischiare versioni intermedie con file originali o a trascurare la documentazione delle trasformazioni applicate. In queste condizioni, anche un’ottima analisi rischia di diventare fragile e poco trasparente, rendendo difficile, se non impossibile, la replicazione dei risultati.

14.2.2 Costruire un flusso di lavoro efficace

Un progetto ben impostato parte da una fase iniziale di progettazione concettuale in cui si chiariscono le domande di ricerca, si identificano le variabili chiave e si ipotizzano i passaggi fondamentali dell’analisi. Anche uno schema semplice, disegnato su carta, può aiutare a visualizzare il flusso di lavoro: dalla pulizia dei dati all’inferenza statistica, fino alla comunicazione dei risultati. Questo tipo di rappresentazione, per quanto preliminare, fornisce un riferimento utile per evitare deviazioni inutili e mantenere la coerenza tra le fasi successive.

Parallelamente, è utile suddividere il lavoro in unità gestibili e definite, stimando in modo realistico il tempo necessario per ciascuna fase e specificando gli obiettivi in termini concreti. Ad esempio, invece di pianificare genericamente “l’analisi preliminare”, può essere più efficace definire l’obiettivo come “esplorare la distribuzione dei punteggi tra il gruppo sperimentale e quello di controllo, producendo un grafico interpretabile e documentato”. Questo tipo di specificità aiuta a monitorare i progressi e a distribuire i compiti in progetti collaborativi.

Anche la scelta degli strumenti richiede attenzione: investire tempo all’inizio per selezionare i pacchetti R più adatti alle proprie esigenze, come “janitor” per la pulizia dei dati o “report” per la generazione automatica di output in stile APA, permette di evitare soluzioni artigianali poco sostenibili. Ma è la pratica quotidiana della documentazione a fare la differenza: annotare le motivazioni delle scelte nel codice, descrivere le trasformazioni effettuate e integrare il tutto in un documento Quarto che unisce testo, codice ed evidenza empirica rappresenta un potente alleato della trasparenza scientifica.

Infine, un aspetto centrale ma spesso trascurato è la riproducibilità: organizzare il progetto secondo una struttura chiara, con cartelle distinte per dati, script, output e report, rende più semplice orientarsi nel tempo, collaborare con altri e condividere il lavoro in modo robusto. In quest’ottica, anche i dettagli apparentemente minori, come l’uso di nomi descrittivi per le variabili o la coerenza nell’indentazione, contribuiscono alla leggibilità e alla qualità complessiva del progetto.

14.2.3 Prevenire e gestire il debito tecnico

Man mano che il progetto cresce, diventa inevitabile confrontarsi con i problemi di manutenzione del codice. È importante, quindi, ritagliarsi del tempo, anche durante lo sviluppo, per semplificare le strutture ridondanti, riorganizzare gli script troppo lunghi e trasformare i blocchi ripetitivi in funzioni riutilizzabili. Un codice ben scritto non solo riduce il rischio di errori, ma facilita anche la collaborazione tra i membri del team e la futura espansione del progetto.

Un’altra abitudine preziosa è mantenere la coerenza tra codice e commenti: ogni modifica significativa dovrebbe essere accompagnata da un aggiornamento delle annotazioni per evitare che il codice racconti una storia diversa da quella riportata nei commenti. Prima di condividere il progetto, è utile predisporre una verifica finale: controllare che i dati originali siano conservati separatamente, che l’ambiente di lavoro sia documentato (ad esempio, salvando l’output di sessionInfo()), e che ogni script sia leggibile e corredato delle spiegazioni necessarie.

In definitiva, pianificare un flusso di lavoro in R non significa complicare il lavoro, ma creare le condizioni per un’analisi più efficace, chiara e duratura. L’organizzazione del progetto, la cura nella scrittura del codice e l’adozione di buone pratiche tecniche non sono elementi opzionali, ma il fondamento di un approccio scientifico che mira a comprendere e non solo a calcolare.

14.3 Capacità di gestione dei dati in R

Dopo aver compreso l’importanza di una pianificazione strategica, il passo successivo è dotarsi di strumenti affidabili per gestire, analizzare e documentare i dati in modo efficace. In questo contesto, R si rivela uno strumento prezioso. Si tratta di un ambiente di programmazione concepito per accompagnare l’intero ciclo di vita dei dati: dalla loro importazione alla loro trasformazione, dall’analisi statistica alla produzione di report riproducibili. La sua versatilità lo rende uno strumento centrale in qualsiasi flusso di lavoro orientato alla qualità e alla trasparenza, in particolare nel settore psicologico, dove la complessità dei dataset richiede flessibilità e rigore metodologico.

R consente, innanzitutto, di importare ed esportare dati in molti formati, grazie a pacchetti come readr e rio, che semplificano l’interazione con file CSV, database o persino fonti web. Una volta acquisiti, i dati possono essere rapidamente puliti e trasformati con strumenti come dplyr, tidyr e stringr, che offrono un linguaggio espressivo e intuitivo per filtrare osservazioni, ristrutturare tabelle, modificare valori testuali e preparare i dati per l’analisi. La fase esplorativa può quindi contare su strumenti come ggplot2 per la visualizzazione e il riconoscimento di pattern nei dati e per la sintesi di indicatori descrittivi in modo elegante e conciso.

Ma la vera forza di R emerge quando si tratta di documentare il processo analitico. Grazie a R Markdown e Quarto, è possibile integrare in un unico documento codice, testo esplicativo, tabelle e grafici, creando report dinamici che illustrano l’intero processo analitico e ne consentono la riproduzione semplice da parte di altri (o di sé stessi a distanza di tempo). A ciò si aggiunge la possibilità di utilizzare sistemi di controllo di versione come Git, direttamente integrati in RStudio, che consentono di tracciare le modifiche al codice, collaborare in modo strutturato e garantire la trasparenza del processo di analisi.

L’integrazione tra strategia progettuale e strumenti tecnici rende R una piattaforma particolarmente adatta a chi desidera lavorare in modo affidabile, efficiente e metodologicamente solido. In progetti che coinvolgono dati complessi, questa combinazione rappresenta una garanzia per la qualità e la sostenibilità delle analisi.

14.4 Configurare l’ambiente R

Per trarre il massimo vantaggio dall’uso di R, è fondamentale configurare correttamente l’ambiente di lavoro. RStudio, in particolare, offre un’interfaccia potente ma personalizzabile che consente di controllare con precisione il comportamento delle sessioni di lavoro. Un primo passo consiste nel disattivare il salvataggio automatico dell’ambiente: accedendo alle impostazioni generali (Tools > Global Options > General), è consigliabile deselezionare l’opzione di caricamento automatico del file .RData all’avvio e impostare la voce relativa al salvataggio del workspace su Never. Questo accorgimento incoraggia l’uso sistematico degli script come unico riferimento per l’analisi, evitando che i residui delle sessioni precedenti possano influenzare i risultati in modo incontrollato. In altre parole, si favorisce una gestione del lavoro basata su un codice esplicito e documentato piuttosto che su ambienti temporanei e invisibili.

Un ambiente ben configurato deve includere anche i pacchetti essenziali per un’analisi efficace. Tra questi, tidyverse rappresenta un vero e proprio ecosistema integrato per la manipolazione, la visualizzazione e l’analisi dei dati: include strumenti come dplyr, ggplot2, readr e altri ancora, tutti progettati secondo una filosofia coerente e orientata alla leggibilità del codice. Il pacchetto here, invece, semplifica la gestione dei percorsi relativi, consentendo di scrivere script portabili che funzionano correttamente indipendentemente dal sistema operativo o dalla struttura dei file locali.

Per assicurarsi che questi strumenti siano disponibili, è sufficiente installarli (una sola volta) con la funzione install.packages(), e poi caricarli all’inizio di ogni script. Un esempio di setup iniziale potrebbe essere il seguente:

# install.packages(c("here", "tidyverse"))  # solo la prima volta
library(here)
library(tidyverse)

Adottare fin da subito queste buone pratiche di configurazione non solo aiuta a evitare errori, ma anche a creare un ambiente di lavoro solido, coerente e adatto alla produzione di analisi ripetibili e condivisibili. È in questa direzione che si sviluppa il metodo scientifico nell’era dei dati: attraverso strumenti in grado di coniugare potenza tecnica e trasparenza metodologica.

14.5 Gestione dei Progetti

In RStudio, l’utilizzo dei progetti è una pratica essenziale per mantenere l’ordine e la coerenza nel proprio lavoro. Ogni progetto crea un ambiente isolato e dedicato in cui tutti i file (dati, script, output e documentazione) sono raccolti all’interno di una singola directory. Questo approccio riduce notevolmente il rischio di confusione tra i file appartenenti a progetti diversi e favorisce una gestione più chiara dei percorsi relativi. Per creare un nuovo progetto, è sufficiente selezionare “File > New Project”, scegliere la directory desiderata e salvare al suo interno tutti i file pertinenti.

Lavorare all’interno di un progetto non è solo una questione di ordine, ma anche una strategia per rafforzare la riproducibilità e l’efficienza del processo analitico. Ogni progetto diventa un’unità autosufficiente e replicabile, facilitando anche la collaborazione con altri ricercatori.

14.6 Il Ciclo di Vita di un Progetto di Data Science

Una volta predisposto un ambiente di lavoro stabile e ben strutturato, è possibile affrontare con metodo le diverse fasi di un progetto di Data Science. Secondo la proposta di Yu & Barter (2024), un progetto ben condotto segue un ciclo di vita articolato in cinque fasi fondamentali: la formulazione della domanda di ricerca, la preparazione e l’analisi esplorativa dei dati, l’eventuale modellazione inferenziale o predittiva, la valutazione dei risultati e, infine, la comunicazione degli esiti.

Non tutti i progetti prevedono una fase di modellazione vera e propria, ma tutti traggono vantaggio da un approccio ordinato che attraversi in modo coerente ciascuna di queste fasi. Questo approccio non solo migliora la qualità delle analisi, ma riduce anche il rischio di errori e ambiguità interpretative.

14.6.1 Formulazione del Problema e Raccolta dei Dati

La prima fase consiste nella definizione chiara degli obiettivi del progetto. In ambito applicativo, ciò può tradursi nella necessità di redigere un report su un intervento specifico senza particolari ambizioni teoriche. In ambito accademico, invece, è fondamentale che le domande di ricerca siano ancorate alla letteratura e che le scelte metodologiche siano coerenti con le teorie di riferimento. In entrambi i casi, è essenziale che le domande siano precise e che si possano realisticamente affrontare con i dati disponibili.

La raccolta dei dati può avvenire attingendo a fonti già esistenti, come dataset pubblici o archivi di laboratorio, oppure tramite nuove rilevazioni. Qualunque sia la loro origine, è importante pianificare con attenzione le analisi prima di acquisire i dati, in modo da evitare la raccolta di informazioni superflue o, peggio, inadeguate rispetto agli obiettivi. È inoltre indispensabile documentare le modalità di raccolta e dichiarare eventuali limitazioni.

14.6.2 Pulizia, Preprocessing e Analisi Esplorativa

Una volta acquisiti i dati, è necessario importarli in R in un formato analizzabile, solitamente sotto forma di data frame. Il pacchetto rio semplifica questa operazione, mentre here facilita la gestione dei percorsi relativi, rendendo i progetti più portabili e riproducibili. I dati grezzi dovrebbero essere conservati separatamente rispetto a quelli puliti, idealmente in cartelle distinte all’interno del progetto.

La fase di pulizia è cruciale: bisogna individuare e correggere gli errori, gestire i valori mancanti o anomali, rimuovere i duplicati e uniformare le formattazioni. I file originali non devono mai essere modificati direttamente, ma tutte le trasformazioni devono essere effettuate tramite script per garantire la tracciabilità.

Il preprocessing consiste nell’adattare i dati alle esigenze delle analisi successive. Alcune tecniche richiedono, ad esempio, la standardizzazione delle variabili o la generazione di nuove variabili derivate. Ogni trasformazione deve essere documentata con attenzione, in quanto può influire in modo significativo sull’interpretazione dei risultati.

L’analisi esplorativa rappresenta un momento di osservazione attenta, durante il quale si calcolano statistiche descrittive, si effettuano visualizzazioni e si individuano pattern e anomalie. Si tratta di un passaggio fondamentale per comprendere la struttura dei dati e orientare le scelte metodologiche future.

14.6.3 Analisi Predittiva e Inferenziale

Quando previsto, il cuore del progetto può consistere nella costruzione di modelli statistici o predittivi. In ambito psicologico, si ricorre spesso a regressioni, test parametrici e non parametrici, modelli misti o tecniche di classificazione. L’obiettivo può essere inferenziale (trarre conclusioni su una popolazione) o predittivo (stimare il comportamento futuro di una variabile). In entrambi i casi, è essenziale che le scelte modellistiche siano motivate e che le ipotesi siano verificate.

14.6.4 Valutazione dei Risultati

L’interpretazione dei risultati richiede un duplice livello di attenzione: da un lato, la valutazione statistica, tramite test, intervalli di confidenza o misure di bontà del modello; dall’altro, la coerenza con la teoria o con il contesto applicativo. È importante ricollegarsi agli obiettivi iniziali e interrogarsi sull’eventuale presenza di limiti o ambiguità.

14.6.5 Comunicazione dei Risultati

La fase finale riguarda la comunicazione, che può assumere forme diverse a seconda del pubblico di riferimento: articoli accademici, report aziendali, presentazioni pubbliche. Qualunque sia il formato, è necessario presentare le analisi in modo chiaro, motivato e trasparente. L’uso di visualizzazioni curate e di un linguaggio accessibile contribuisce a rendere il lavoro più comprensibile e più utile per chi lo riceve.

14.7 Organizzazione del Progetto

Per favorire la riproducibilità e la gestione a lungo termine, è buona norma strutturare il progetto in modo ordinato. RStudio consente di creare file .Rproj che definiscono una directory principale da cui partono tutti i percorsi relativi. Aprire il progetto tramite questo file garantisce coerenza e facilita la navigazione tra i file.

Una struttura consigliata, ispirata al modello proposto da Yu & Barter (2024), prevede una directory principale contenente i dati (suddivisi in grezzi ed elaborati), la documentazione analitica, gli script e un file README che spieghi la struttura del progetto. La documentazione può essere realizzata in Quarto, Jupyter o altri formati, e organizzata in sottocartelle per una maggiore chiarezza. Ad esempio:

nome_progetto/
├── nome_progetto.Rproj
├── data/
│   ├── raw/
│   │   └── my_data.csv
│   ├── processed/
├── src/
│   ├── 01_data_cleaning.qmd
│   ├── 02_analysis.qmd
│   └── functions/
└── README.md

Una simile struttura favorisce l’efficienza, la tracciabilità delle operazioni e la collaborazione tra più persone. La separazione dei dati grezzi da quelli elaborati, la creazione di script modulari e la descrizione chiara delle scelte analitiche permettono di affrontare con rigore anche progetti complessi e di facilitarne la diffusione e la verifica.

14.8 Riflessioni conclusive

Uno dei principali vantaggi dell’uso del codice per l’analisi dei dati è la possibilità di ottenere risultati stabili e riproducibili nel tempo. In un ambiente ben configurato, l’esecuzione di uno script sugli stessi dati porta sempre agli stessi risultati. Questo aspetto, apparentemente tecnico, ha in realtà implicazioni profonde: si tratta del principio di riproducibilità computazionale, un pilastro della pratica scientifica contemporanea. In psicologia, come in tutte le scienze empiriche, la possibilità di risalire con precisione al processo analitico che ha condotto a una certa conclusione è una condizione necessaria per la trasparenza, la valutazione critica e l’accumulo di conoscenza.

La riproducibilità, tuttavia, non è solo un requisito per la comunicazione scientifica, ma anche uno strumento prezioso per il ricercatore stesso. In assenza di un flusso di lavoro tracciabile, anche lo stesso autore rischia di non riuscire più a interpretare correttamente il proprio lavoro a distanza di tempo. Tornare a un’analisi svolta mesi prima e trovare un codice leggibile, organizzato e funzionante significa poter rapidamente riappropriarsi del significato delle scelte fatte, correggere eventuali errori o estendere il progetto a nuovi dati o a nuove domande.

La condivisione di un progetto ben strutturato permette inoltre ad altri ricercatori di verificare, adattare e riutilizzare procedure analitiche già testate, evitando sprechi di tempo e favorendo un circolo virtuoso di apprendimento. In questo senso, la riproducibilità è anche una forma di collaborazione implicita: rendere chiaro il proprio processo analitico contribuisce a una scienza più cumulativa e aperta.

Tuttavia, affinché ciò sia possibile, è necessario adottare abitudini e strumenti coerenti con questi obiettivi. La cura nella documentazione, la definizione di una struttura di progetto chiara, l’uso del controllo di versione e l’attenzione all’integrità e alla trasformazione dei dati sono tutte pratiche che, anche se inizialmente possono sembrare secondarie rispetto alla statistica in senso stretto, costituiscono la base operativa di un’analisi di qualità. Queste non sono regole astratte, ma condizioni pratiche che rendono possibile un lavoro analitico credibile e duraturo.

Nel percorso finora affrontato, abbiamo visto come l’intero ciclo di vita di un’analisi, dalla raccolta dei dati alla loro esplorazione, dalla modellazione alla comunicazione dei risultati, richieda uno sguardo progettuale e non solo esecutivo. Un progetto ben condotto non è quello che produce semplicemente un risultato “corretto”, ma quello che può essere riutilizzato, aggiornato e compreso anche da chi non ha partecipato alla sua realizzazione.

In definitiva, la riproducibilità non è un vincolo esterno imposto dalla comunità scientifica, ma un investimento nella qualità del proprio pensiero. Rendere esplicite le fasi del lavoro, rendere trasparente il codice e usare strumenti come R in un ambiente ben organizzato non significa solo essere più ordinati, ma anche allenarsi a ragionare in modo più preciso, critico e consapevole. È in questo senso che la data analysis diventa a pieno titolo parte integrante del metodo scientifico.

Un problema cruciale della 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 completamente 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.9 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à.

  1. 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.
  2. 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.
  3. 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?
  4. 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 pacchetto here.
    • Come puoi esportare un dataset modificato in una cartella dedicata ai dati processati?
  5. 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?
  6. 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.
  7. 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?

1. Gestione del progetto di analisi

  • Fasi principali del progetto di analisi dei dati (Yu, 2024):
    1. Formulazione del problema e raccolta dei dati
    2. Pulizia, preprocessing e analisi esplorativa
    3. Analisi predittiva e/o inferenziale (se applicabile)
    4. Valutazione dei risultati
    5. Comunicazione dei risultati
  • 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”
  • 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:

    library(here)
    library(rio)
    df <- rio::import(here("data", "raw", "my_data.csv"))
  • Esportare dati modificati:

    rio::export(df, here("data", "processed", "my_data_processed.csv"))

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
  • Strumenti di dplyr per pulizia e trasformazione:

6. Analisi esplorativa dei dati (EDA)

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
  • Strumenti di Quarto:
    • Permette di combinare testo, codice e output in documenti riproducibili
    • Supporta citazioni automatiche e gestione delle bibliografie

Informazioni sull’Ambiente di Sviluppo

sessionInfo()
#> R version 4.5.1 (2025-06-13)
#> Platform: aarch64-apple-darwin20
#> Running under: macOS Sequoia 15.6
#> 
#> Matrix products: default
#> BLAS:   /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/lib/libRblas.0.dylib 
#> LAPACK: /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.12.1
#> 
#> locale:
#> [1] C/UTF-8/C/C/C/C
#> 
#> time zone: Europe/Zagreb
#> tzcode source: internal
#> 
#> attached base packages:
#> [1] stats     graphics  grDevices utils     datasets  methods   base     
#> 
#> other attached packages:
#>  [1] thematic_0.1.7   MetBrewer_0.2.0  ggokabeito_0.1.0 see_0.11.0      
#>  [5] gridExtra_2.3    patchwork_1.3.1  bayesplot_1.13.0 psych_2.5.6     
#>  [9] scales_1.4.0     markdown_2.0     knitr_1.50       lubridate_1.9.4 
#> [13] forcats_1.0.0    stringr_1.5.1    dplyr_1.1.4      purrr_1.1.0     
#> [17] readr_2.1.5      tidyr_1.3.1      tibble_3.3.0     ggplot2_3.5.2   
#> [21] tidyverse_2.0.0  rio_1.2.3        here_1.0.1      
#> 
#> loaded via a namespace (and not attached):
#>  [1] generics_0.1.4     stringi_1.8.7      lattice_0.22-7    
#>  [4] hms_1.1.3          digest_0.6.37      magrittr_2.0.3    
#>  [7] evaluate_1.0.4     grid_4.5.1         timechange_0.3.0  
#> [10] RColorBrewer_1.1-3 fastmap_1.2.0      rprojroot_2.1.0   
#> [13] jsonlite_2.0.0     mnormt_2.1.1       cli_3.6.5         
#> [16] rlang_1.1.6        withr_3.0.2        tools_4.5.1       
#> [19] parallel_4.5.1     tzdb_0.5.0         pacman_0.5.1      
#> [22] vctrs_0.6.5        R6_2.6.1           lifecycle_1.0.4   
#> [25] htmlwidgets_1.6.4  pkgconfig_2.0.3    pillar_1.11.0     
#> [28] gtable_0.3.6       glue_1.8.0         xfun_0.52         
#> [31] tidyselect_1.2.1   rstudioapi_0.17.1  farver_2.1.2      
#> [34] htmltools_0.5.8.1  nlme_3.1-168       rmarkdown_2.29    
#> [37] compiler_4.5.1

Bibliografia

Collaboration, O. S. (2015). Estimating the reproducibility of psychological science. Science, 349(6251), aac4716.
Yu, B., & Barter, R. L. (2024). Veridical data science: The practice of responsible data analysis and decision making. MIT Press.