![Tidyverse e la statistica descrittiva in R header](https://www.meccanismocomplesso.org/wp-content/uploads/2024/03/Tidyverse-e-la-statistica-descrittiva-in-R-header-1024x194.jpg)
La statistica descrittiva è una fase cruciale nell’analisi dei dati, fornendo una panoramica dettagliata delle caratteristiche principali di un dataset. R, con il suo vasto ecosistema di pacchetti, offre una soluzione potente e coerente per affrontare questa fase. Tra questi, spicca Tidyverse, un insieme di pacchetti progettati per migliorare la manipolazione, l’analisi e la visualizzazione dei dati in R.
Tidyverse
Tidyverse è un insieme di pacchetti R progettati per lavorare insieme in modo coerente, offrendo uno stile di programmazione coerente e intuitivo per l’analisi dei dati. È stato sviluppato dallo statistico Hadley Wickham e dalla sua squadra. Tidyverse include diversi pacchetti che sono comunemente utilizzati per l’analisi dei dati e la manipolazione di frame di dati. Alcuni dei pacchetti più importanti inclusi sono:
- ggplot2: Un pacchetto per la creazione di grafici eleganti e flessibili basati sulla grammatica dei grafici. È molto potente per la creazione di visualizzazioni di dati.
- dplyr: Fornisce un insieme di funzioni per la manipolazione dei dati, come la selezione di colonne, la filtrazione di righe, la creazione di nuove variabili, l’aggregazione di dati e altro ancora.
- tidyr: Utile per la gestione della forma dei dati, come la trasposizione, la ricomposizione e la manipolazione di dati in formato “tidy”, che è un formato tabellare organizzato in modo ordinato.
- readr: Un pacchetto per la lettura e l’importazione efficiente dei dati da diversi formati, inclusi CSV, TSV, e altri.
- purrr: Fornisce strumenti per la programmazione funzionale, consentendo operazioni avanzate su dati e strutture dati.
- tibble: Una versione moderna del dataframe di base di R, che offre funzionalità migliorate, come la stampa più pulita e l’indicizzazione delle colonne per nome.
- stringr: Utile per la manipolazione di stringhe e la pulizia dei dati testuali.
- forcats: Un pacchetto per la gestione efficiente dei fattori nelle analisi.
tutti i pacchetti inclusi e potrai utilizzare le loro funzionalità in modo integrato per analizzare e visualizzare i dati in modo più efficiente e coerente.
Installazione e Caricamento del Tidyverse
Per utilizzare tidyverse su R, è necessario installarlo inserendo il seguente comando:
install.packages("tidyverse")
L’operazione di scarico dei pacchetti e della loro installazione richiederà qualche minuto. Al termine, puoi caricare tidyversecon il comando:
library(tidyverse)
Dopo aver caricato tidyverse, avrai accesso a tutti i pacchetti inclusi e potrai utilizzare le loro funzionalità in modo integrato per analizzare e visualizzare i dati in modo più efficiente e coerente.
Utilizzare Tidyverse per la Statistica Descrittiva
Tidyverse è estremamente utile nella statistica descrittiva. I pacchetti contenuti al suo interno sono stati progettati per facilitare la manipolazione, l’analisi e la visualizzazione dei dati in modo coerente. Vediamo insieme una serie di step che descrivono in breve un processo di studio di un dataset.
Manipolazione dei dati con dplyr
Il pacchetto dplyr
offre un insieme di funzioni chiare e coerenti per filtrare, selezionare, aggregare e manipolare i dati. Queste operazioni sono fondamentali nella fase di preparazione dei dati per l’analisi descrittiva.
Ad esempio, possiamo utilizzare il dataset mtcars
che è disponibile di default in R. Questo dataset contiene informazioni su diverse auto. Ecco un esempio di come iniziare con dplyr
utilizzando il dataset mtcars
:
# Load the mtcars dataset
data(mtcars)
# Display the first few rows of the dataset
head(mtcars)
Eseguendo i due comandi si otterrà il risultato seguente:
Ora che abbiamo caricato il dataset, possiamo dare un’occhiata rapida a cosa contiene. Abbiamo una serie di modelli di auto in cui sono riportati i valori di alcune caratteristiche come il numero dei cilindri, il peso, il numero delle marce, ecc. Questo dataset è infatti abbastanza semplice ed intuitivo, ottimo per cominciare a prendere dimestichezza con la manipolazione dei dati.
Per fare questo esiste il pacchetto dplyr che è specifico per questo tipo di lavoro. Ad esempio, possiamo selezionare solo alcune colonne, filtrare le righe in base a una condizione, e aggregare i dati. Cominciamo con il selezionare solo tre colonne del dataset a cui siamo interessati: mpg, cyl e disp.
# Load the dplyr package
library(dplyr)
# Select only specific columns
mtcars_selected <- mtcars %>%
select(mpg, cyl, disp)
head(mtcars_selected)
Si ottiene:
Come si vede dal risultato abbiamo rimosso tutte le colonne di dati che non ci interessavano. Proseguiamo con la selezione, eliminando questa volta tutti i modelli le cui caratteristiche non rispettano alcune condizioni. Per esempio, se volessimo selezionare tutti i modelli di auto che hanno un numero di cilindri superiore a 4, possiamo utilizzare i comandi seguenti:
# Filter rows based on a condition (e.g., cars with more than 4 cylinders)
mtcars_filtered <- mtcars_selected %>%
filter(cyl > 4)
print(mtcars_filtered)
Questa volta, dato il numero esiguo di modelli di macchine selezionate, possiamo sostituire head() con print() che stamperà in output tutti i modelli presenti nel dataset, e non più i primi 6 modelli.
Adesso che abbiamo selezionato i dati sia per riga che per colonna, un’altra operazione tipica sarà quella di raggruppare i modelli aventi una caratteristica in comune da cui estrarre per ciascun gruppo una statistica. Per esempio potremmo raggruppare i modelli aventi lo stesso numero di cilindri, e conoscere quale sia la media degli altri due valori (mpg e disp).
# Group by and calculate the mean for each number of cylinders
mean_per_cyl <- mtcars_filtered %>%
group_by(cyl) %>%
summarise(mean_mpg = mean(mpg),
mean_disp = mean(disp))
# Display the results
print(mean_per_cyl)
Eseguendo si ottengono i risultati desiderati:
Questo è solo un esempio di come iniziare con dplyr
. Puoi esplorare ulteriormente le molte funzioni offerte da dplyr
, come mutate()
, arrange()
, rename()
, e altre, per manipolare e trasformare i dati in base alle tue esigenze specifiche. La sintassi %>%
(pipe) è utilizzata per concatenare le operazioni, rendendo il codice più leggibile e sequenziale.
Visualizzazione dei dati con ggplot2
Il pacchetto ggplot2 è uno strumento potente per creare grafici informativi e comprensibili. Nella statistica descrittiva, la visualizzazione dei dati è fondamentale per comprendere la distribuzione e la struttura dei dati.
In precedenza, abbiamo eseguito sul dataset mtcars una serie di operazioni di manipolazione dati con dplyr
. Ora, possiamo passare alla visualizzazione dei dati utilizzando ggplot2
. Utilizzeremo il risultato ottenuto prima, mean_per_cyl
, per creare alcuni grafici. Ecco un esempio di come creare un grafico a barre per visualizzare la media di mpg
e disp
per ciascun numero di cilindri (cyl
):
# Load the ggplot2 package
library(ggplot2)
# Grafico a barre della media di mpg e disp per ogni numero di cilindri
ggplot(mean_per_cyl, aes(x = factor(cyl))) +
geom_bar(aes(y = mean_mpg, fill = "Mean MPG"), stat = "identity",
width=0.3, position = position_nudge(x = 0.15)) +
geom_bar(aes(y = mean_disp, fill = "Mean Disp"), stat = "identity",
width=0.3, position = position_nudge(x = - 0.15)) +
labs(title = "Mean MPG and Mean Disp by Number of Cylinders",
x = "Number of Cylinders", y = "Mean Value") +
scale_fill_manual(values = c("Mean MPG" = "blue", "Mean Disp" = "red")) +
theme_minimal()
Questo codice crea un grafico a barre che mostra la media di mpg
e disp
per ciascun numero di cilindri. Puoi personalizzare ulteriormente il grafico secondo le tue preferenze utilizzando le funzioni di ggplot2
. Eseguendo otterrai quindi il seguente istogramma a barre:
Per quanto riguarda invece il dataset mtcars è possibile avere diverse forme di visualizzazioni ggplot2
. Possiamo creare diversi tipi di grafici a seconda delle informazioni che desideriamo rappresentare. Ecco alcuni esempi.
Istogramma di mpg
ggplot(mtcars, aes(x = mpg)) +
geom_histogram(binwidth = 2, fill = "blue", color = "black") +
labs(title = "Histogram of MPG", x = "MPG", y = "Frequency")
Eseguendo si ottiene il seguente istogramma con le informazioni sulla distribuzione dei valori di MPG per i vari modelli suddivisi in intervalli di 5.
Scatter plot di mpg rispetto a disp
ggplot(mtcars, aes(x = disp, y = mpg)) +
geom_point(color = "darkgreen") +
labs(title = "Scatter Plot of MPG vs. Displacement", x = "Displacement", y = "MPG")
Eseguendo otterremo tutti la distribuzione di tutti i modelli riportati in rapporto tra mpg e disp
Boxplot di mpg per ogni numero di cilindri
ggplot(mtcars, aes(x = factor(cyl), y = mpg, fill = factor(cyl))) +
geom_boxplot() +
labs(title = "Boxplot of MPG by Number of Cylinders", x = "Number of Cylinders", y = "MPG") +
scale_fill_manual(values = c("red", "blue", "green"))
Gestione efficiente dei dati con tibble
Il pacchetto Tibble può essere utilizzato per gestire efficientemente i dati, fornendo una struttura di dati migliorata rispetto ai dataframe di base di R.
Se andiamo a controllare il valore mean_per_cyl
calcolato in precedenza vedremo che è già in formato tibble.
print(mean_per_cyl)
Questo perchè alcuni metodi, come summarise()
utilizzato per ottenere questo valore, già producono risultati in questo formato. Partiamo quindi da un dataset che non è in formato tibble come mtcars_filtered
.
Per convertire questo dataset in formato tibble è molto semplice, si può utilizzare as_tibble()
come funzione.
mtcars_filtered_tibble = as_tibble(mtcars_filtered)
print(mtcars_filtered_tibble)
Eseguendo la conversione, vedremo in stampa una formattazione differente dei dati.
La principale differenza tra un dataframe di base di R e un tibble riguarda la visualizzazione dei dati e alcuni comportamenti durante l’analisi.
Ecco alcune delle differenze pratiche tra un dataframe e un tibble:
- Stampa più pulita: Quando visualizzi un tibble in R, ottieni un’output più conciso rispetto a un dataframe di base. I tibble mostrano solo le prime 10 righe e tutte le colonne che si adattano a schermo, rendendo più agevole esplorare i dati.
- Colonne di tipo coerente: I tibble sono progettati per trattare le colonne con tipi di dati coerenti in modo più affidabile rispetto ai dataframe. Ad esempio, un tibble non converte automaticamente le stringhe in fattori.
- Risultati coerenti nelle operazioni di
dplyr
: Alcuni comportamenti didplyr
possono variare tra dataframe e tibble. Ad esempio, l’uso diselect
su un dataframe può restituire un dataframe con colonne di tipo carattere, mentre con un tibble mantiene il tipo di colonna originale. - Gestione di caratteri speciali: I tibble gestiscono in modo più consistente i caratteri speciali nelle etichette delle colonne, evitando conversioni automatiche.
- Attributi aggiuntivi: I tibble possono contenere attributi aggiuntivi, come nomi di colonna più informativi e la possibilità di specificare il tipo di dati.
- Funzioni di confronto e testo coerenti: I tibble forniscono risultati coerenti quando confrontati o stampati, rendendo più agevole lavorare con essi in un ambiente interattivo come una console R o uno script.
In generale, mentre i tibble sono progettati per mantenere una maggiore coerenza e pulizia durante l’esplorazione e la manipolazione dei dati, entrambi possono essere utilizzati in modo simile nella maggior parte delle operazioni di base. La scelta tra dataframe e tibble dipende spesso dalle preferenze personali e dai requisiti specifici del progetto.
Conclusione
In conclusione, il tidyverse
si rivela uno strumento essenziale per chiunque sia coinvolto nella statistica descrittiva con R. La sintassi coerente, le funzioni potenti e la filosofia di dati “tidy” semplificano il flusso di lavoro, consentendo analisi più efficienti e visualizzazioni più chiare. La combinazione di dplyr
, ggplot2
, tibble
e altri pacchetti all’interno del tidyverse
offre una suite completa di strumenti per esplorare e comprendere i dati in modo dettagliato.