Vai al contenuto principale

Funzione R sd(): deviazione standard in R

Impara a misurare la variabilità dei tuoi dati con la funzione sd() di R. Scopri esempi pratici e tecniche essenziali per gestire valori mancanti e dati raggruppati.
Aggiornato 29 set 2026  · 5 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

La deviazione standard è uno dei modi più comuni per riassumere quanto sono dispersi i tuoi dati. In R, la funzione sd() ti offre un modo rapido per calcolare questa misura di variabilità, che tu stia lavorando con vettori, data frame o dati raggruppati. 

In questo articolo vedremo le basi dell'uso di sd() in R, come gestire i valori mancanti e come calcolare le deviazioni standard per gruppi usando funzioni come tapply() e pacchetti come dplyr.

Cosa fa sd() in R?

In R, la funzione sd() del base R calcola la deviazione standard di un vettore numerico o di una colonna di un data frame. Misura quanto i valori nei tuoi dati si discostano dalla media, dandoti un'idea della variabilità o dispersione.

Se conosci il concetto di varianza, la deviazione standard è semplicemente la sua radice quadrata e, per come è calcolata (prendendo la radice quadrata della media degli scarti quadratici), resta sulla stessa scala dei dati originali. Questo la rende più facile da interpretare in termini pratici.

Un semplice esempio con sd()

Supponi di avere un insieme di numeri e di voler sapere quanto variano rispetto alla media.

Ecco come farlo in R:

exam_scores <- c(75, 80, 85, 90, 95) 
sd(exam_scores) 

L'output ti restituisce la deviazione standard, che quantifica la distanza media di ciascun punteggio dalla media.

Puoi usare sd() con qualsiasi vettore numerico, compresi integer, double o i risultati di calcoli. Ora, forse sai che R tratta i vettori logici come numerici (TRUE come 1, FALSE come 0), quindi la funzione sd() funzionerebbe tecnicamente anche su vettori logici (puoi provarlo se vuoi), ma l'idea di deviazione standard ha più senso per dati numerici continui.

Gestire i valori mancanti con sd()

I dataset reali spesso contengono valori mancanti, quindi vale la pena menzionarlo: se i tuoi dati includono valori NA, sd() restituirà NA per impostazione predefinita.

Considera questo esempio:

heights <- c(170, 175, NA, 180, 185)
sd(heights)

Il risultato è NA.

Per ignorare i valori mancanti e calcolare la deviazione standard dei numeri disponibili, usa l'argomento na.rm = TRUE. In alternativa, puoi ripulire i valori NA dal tuo dataset, ma te lo consiglierei solo se ha senso farlo.

sd(heights, na.rm = TRUE) 

Ora otterrai la deviazione standard per 170, 175, 180 e 185.

Calcolare la deviazione standard per i data frame in R

Puoi calcolare facilmente la deviazione standard di una colonna specifica di un data frame usando l'operatore $. Supponi di avere un data frame con i pesi dei prodotti:

product_data <- data.frame( weight = c(1.2, 1.5, 1.3, 1.7, 1.4), price = c(10, 12, 11, 13, 12) ) 
sd(product_data$weight)

Questo ti restituisce la deviazione standard della colonna weight. Ricorda, sd() è pensata per vettori numerici, non per interi data frame. Seleziona sempre la colonna appropriata.

sd() e deviazioni standard per gruppi

Spesso vorrai misurare la variabilità all'interno di gruppi, ad esempio per categoria, regione o un altro fattore. R offre diversi modi per calcolare le deviazioni standard per gruppi. Te ne mostro tre:

Usare tapply() per deviazioni standard raggruppate

Supponi di avere dati di vendita per regioni diverse e di voler calcolare la deviazione standard per ciascuna regione:

sales_amount <- c(200, 220, 210, 250, 240, 230) 
region <- c("North", "North", "South", "South", "North", "South") 
tapply(sales_amount, region, sd)

tapply() applica sd() a ciascun gruppo definito dalla regione.

Usare aggregate() per deviazioni standard raggruppate

Se preferisci i risultati in un data frame "tidy", aggregate() fa al caso tuo:

sales_data <- data.frame( region = c("North", "North", "South", "South", "North", "South"), amount = c(200, 220, 210, 250, 240, 230) ) 
aggregate(amount ~ region, data = sales_data, sd)

Questo produce un data frame riepilogativo con la deviazione standard per ciascuna regione.

Usare dplyr per deviazioni standard raggruppate

Con il pacchetto dplyr, i calcoli per gruppi sono ancora più leggibili. Usa summarize() dopo il raggruppamento:

library(dplyr) 

sales_data %>% 
   group_by(region) %>% 
   summarize(sd_amount = sd(amount))

Questo approccio è particolarmente utile per dataset più grandi o quando concateni più trasformazioni dei dati. (O se semplicemente preferisci usare l'operatore pipe, come me.)

Errori comuni e consigli

Anche una funzione semplice come sd() può creare problemi se non fai attenzione. Ecco alcune trappole comuni:

  • Dati non numerici: sd() funziona solo con vettori numerici. Se i tuoi dati includono caratteri o fattori, otterrai un errore. Usa is.numeric() per verificare i tuoi dati.

  • Valori mancanti: Un singolo NA farà sì che sd() restituisca NA. Usa sempre na.rm = TRUE se vuoi ignorare i valori mancanti.

  • Campioni piccoli: sd() usa n-1 al denominatore (deviazione standard campionaria). Per vettori di lunghezza 1, sd() restituisce NA, non 0.

Quell'ultimo aspetto in particolare, secondo me, è interessante. È una differenza meno nota e può trarti in inganno se passi da Python a R, dato che Python divide per la deviazione standard della popolazione, non per quella campionaria.

Varianti utili e funzioni correlate in R

R offre diverse funzioni correlate per misurare la variabilità e riassumere i dati:

  • var(): Calcola la varianza, che è il quadrato della deviazione standard.

  • apply(), sapply(), lapply(): Utili per applicare sd() su righe o colonne di matrici e data frame.

  • mad(): Calcola la deviazione assoluta mediana, un'altra misura interessante e più robusta della variabilità.

Ti mostro sd() usata con apply(), già che l'ho menzionata: ecco come usare apply() per ottenere la deviazione standard di ciascuna colonna in una matrice. Come prima, creerò la matrice al volo.

measurement_matrix <- matrix(1:9, nrow = 3) 
apply(measurement_matrix, 2, sd)

Questo restituisce la deviazione standard per ciascuna colonna, dandoti una panoramica rapida della variabilità tra più variabili.

Conclusione

La funzione sd() in R è relativamente semplice (è una sola riga di codice). Ma se ti capita di usarla per report o presentazioni e ti senti un po' incerto sui dettagli, iscriviti al career track Statistician in R. In statistica e analisi dei dati c'è molta sfumatura, quindi assicurati di avere solide basi.


Josef Waples's photo
Author
Josef Waples

Sono uno scrittore e editor di data science, con contributi a articoli di ricerca su riviste scientifiche. Sono particolarmente interessato ad algebra lineare, statistica, R e affini. Inoltre, gioco anche parecchio a scacchi! 

Argomenti
R

Impara R con DataCamp

Corso

Introduzione a R

4 ore
3.1M
Impara le basi dell'analisi dei dati in R, compresi vettori, liste e data frame, e fai pratica con R con set di dati reali.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro