Vai al contenuto principale

Tutorial sulla correlazione in R

Introduzione alle basi della correlazione in R: scopri di più sui coefficienti di correlazione, le matrici di correlazione, la visualizzazione delle correlazioni e altro ancora.
Aggiornato 29 set 2026  · 13 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

correlation

In questo tutorial, esplorerai diversi metodi di visualizzazione dei dati e le statistiche alla loro base. In particolare, vedrai come identificare tendenze e relazioni tra variabili in un data frame.

Esatto: ti concentrerai su concetti come correlazione e regressione! Per prima cosa, farai un’introduzione alla correlazione in R. Poi, vedrai come tracciare matrici di correlazione in R usando pacchetti come ggplot2 e GGally. Infine, vedrai quali tipi di correlazioni esistono e perché contano per le analisi successive.

Se vuoi approfondire l’argomento, valuta di seguire il corso di DataCamp Correlation and Regression.

Contesto

Nell’esercitazione di oggi lavorerai con un set di dati sui film preso da Kaggle per scoprire come comprendere meglio le relazioni tra variabili.

Ho normalizzato leggermente i dati per rendere l’analisi omogenea, ad esempio assicurandomi che le valute fossero nella stessa unità. Senza questo passaggio, l’analisi statistica di variabili come gross, budget e profit sarebbe fuorviante. Puoi accedere al set di dati originale.

Importare i dati

Per accedere al set di dati movies e usarlo, puoi utilizzare la funzione read.csv() per importare i dati in un data frame e salvarli in una variabile dal nome incredibilmente originale: movies!

movies <- read.csv(url("http://s3.amazonaws.com/dcwoods2717/movies.csv"))

È tutto ciò che serve per iniziare!

Ispezione di base dei dati

Dopo aver importato un data frame, è una buona idea farsi un’idea di cosa contenga. Per prima cosa, controlla la struttura dei dati che stai esaminando. Qui sotto puoi vedere i risultati dell’uso di str(), una funzione semplicissima e utile:

str(movies)
## 'data.frame':    2961 obs. of  11 variables:
##  $ title              : Factor w/ 2907 levels "10 Cloverfield Lane",..: 1560 2143 34 2687 1405 1896 2633 894 1604 665 ...
##  $ genre              : Factor w/ 17 levels "Action","Adventure",..: 6 12 5 5 5 3 2 8 3 8 ...
##  $ director           : Factor w/ 1366 levels "Aaron Schneider",..: 474 472 781 828 175 1355 1328 1328 968 747 ...
##  $ year               : int  1920 1929 1933 1935 1936 1937 1939 1939 1940 1946 ...
##  $ duration           : int  110 100 89 81 87 83 102 226 88 144 ...
##  $ gross              : int  3000000 2808000 2300000 3000000 163245 184925485 22202612 198655278 84300000 20400000 ...
##  $ budget             : int  100000 379000 439000 609000 1500000 2000000 2800000 3977000 2600000 8000000 ...
##  $ cast_facebook_likes: int  4 109 995 824 352 229 2509 1862 1178 2037 ...
##  $ votes              : int  5 4546 7921 13269 143086 133348 291875 215340 90360 6304 ...
##  $ reviews            : int  2 107 162 164 331 349 746 863 252 119 ...
##  $ rating             : num  4.8 6.3 7.7 7.8 8.6 7.7 8.1 8.2 7.5 6.9 ...

In questo data frame, dalla console vedi che sono presenti 2961 osservazioni di 11 variabili.

Nota a margine: anche se ogni film durasse solo un’ora, dovresti guardarli ininterrottamente per oltre quattro mesi per vederli tutti!

La console elenca anche ogni variabile per nome, la classe di ciascuna variabile e alcuni valori di esempio. Questo ci dà una buona idea di cosa contenga il data frame, comprensione cruciale per le nostre analisi.

Un’altra ottima funzione per ottenere rapidamente una panoramica ad alto livello del data frame è summary(). Nota somiglianze e differenze rispetto all’output di str().

summary(movies)
##                          title            genre    
##  Home                       :   3   Comedy   :848  
##  A Nightmare on Elm Street  :   2   Action   :738  
##  Across the Universe        :   2   Drama    :498  
##  Alice in Wonderland        :   2   Adventure:288  
##  Aloha                      :   2   Crime    :202  
##  Around the World in 80 Days:   2   Biography:135  
##  (Other)                    :2948   (Other)  :252  
##               director         year         duration    
##  Steven Spielberg :  23   Min.   :1920   Min.   : 37.0  
##  Clint Eastwood   :  19   1st Qu.:1999   1st Qu.: 95.0  
##  Martin Scorsese  :  16   Median :2004   Median :106.0  
##  Tim Burton       :  16   Mean   :2003   Mean   :109.6  
##  Spike Lee        :  15   3rd Qu.:2010   3rd Qu.:119.0  
##  Steven Soderbergh:  15   Max.   :2016   Max.   :330.0  
##  (Other)          :2857                                 
##      gross               budget          cast_facebook_likes
##  Min.   :      703   Min.   :      218   Min.   :     0     
##  1st Qu.: 12276810   1st Qu.: 11000000   1st Qu.:  2241     
##  Median : 34703228   Median : 26000000   Median :  4604     
##  Mean   : 58090401   Mean   : 40619384   Mean   : 12394     
##  3rd Qu.: 75590286   3rd Qu.: 55000000   3rd Qu.: 16926     
##  Max.   :760505847   Max.   :300000000   Max.   :656730     
##                                                             
##      votes            reviews           rating     
##  Min.   :      5   Min.   :   2.0   Min.   :1.600  
##  1st Qu.:  19918   1st Qu.: 199.0   1st Qu.:5.800  
##  Median :  55749   Median : 364.0   Median :6.500  
##  Mean   : 109308   Mean   : 503.3   Mean   :6.389  
##  3rd Qu.: 133348   3rd Qu.: 631.0   3rd Qu.:7.100  
##  Max.   :1689764   Max.   :5312.0   Max.   :9.300  
## 

Con un solo comando, R ti restituisce alcune informazioni statistiche chiave per ogni variabile del data frame. Ora che sai con cosa stai lavorando, addentriamoci un po’ di più nei dati!

Feature Engineering: calcolare il profitto

Esaminando le variabili disponibili, sembra che alcune variabili numeriche possano essere manipolate per fornire nuove informazioni sul data frame.

Per esempio, hai le variabili gross e budget, quindi perché non usare un po’ di subsetting per calcolare il profitto di ogni film?

Puoi calcolare il profitto con la formula profit = gross - budget. Provalo nel blocco DataCamp Light qui sotto!

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdih1cmwoXCJodHRwOi8vczMuYW1hem9uYXdzLmNvbS9kY3dvb2RzMjcxNy9tb3ZpZXMuY3N2XCIpKSIsInNhbXBsZSI6IiMgRmlsbCBpbiB0aGUgYXBwcm9wcmlhdGUgdmFyaWFibGUgbmFtZXMgdG8gc3Vic2V0IVxucHJvZml0IDwtIG1vdmllcyQuLi4uLiAtIG1vdmllcyQuLi4uLlxuXG4jIENoZWNrIHRoZSByZXN1bHRcbnN1bW1hcnkocHJvZml0KSIsInNvbHV0aW9uIjoiIyBGaWxsIGluIHRoZSBhcHByb3ByaWF0ZSB2YXJpYWJsZSBuYW1lcyB0byBzdWJzZXQhXG5wcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldFxuXG4jIENoZWNrIHRoZSByZXN1bHRcbnN1bW1hcnkocHJvZml0KSIsInNjdCI6InRlc3Rfb2JqZWN0KFwicHJvZml0XCIsIHVuZGVmaW5lZF9tc2c9XCJEaWQgeW91IGNvcnJlY3RseSBkZWZpbmUgdGhlIHZhcmlhYmxlIGBwcm9maXRgP1wiLCBpbmNvcnJlY3RfbXNnID0gXCJOb3QgcXVpdGUhXCIpXG50ZXN0X2Vycm9yKClcbnN1Y2Nlc3NfbXNnKFwiRXhjZWxsZW50IVwiKSJ9

Fantastico!

Puoi notare che nel nostro data frame ci sono parecchi film che hanno fatto guadagnare molto e altri che sono stati dei buchi neri di denaro.

Il profit dei nostri film potrà tornare utile per analisi interessanti più avanti, quindi aggiungiamolo come nuova colonna al data frame.

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdihcImh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikiLCJzYW1wbGUiOiIjIEFkZCBhIGNvbHVtbiBmb3IgYHByb2ZpdGAgdG8gYG1vdmllc2AgXG5tb3ZpZXMkLi4uLi4gPC0gbW92aWVzJC4uLi4uIC0gbW92aWVzJC4uLi4uIiwic29sdXRpb24iOiIjIEFkZCBhIGNvbHVtbiBmb3IgYHByb2ZpdGAgdG8gYG1vdmllc2Bcbm1vdmllcyRwcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldCJ9

Correlazione

Ora che profit è stato aggiunto come nuova colonna del data frame, è il momento di guardare più da vicino le relazioni tra le variabili del set di dati.

Vediamo come profit varia in relazione al rating di ciascun film.

Per farlo puoi usare le funzioni integrate di R plot e abline: plot produce uno scatter plot e abline disegna una retta di regressione o “linea di miglior adattamento” grazie all’inclusione del modello lineare, come vedrai tra poco.

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdih1cmwoXCJodHRwOi8vczMuYW1hem9uYXdzLmNvbS9kY3dvb2RzMjcxNy9tb3ZpZXMuY3N2XCIpKVxubW92aWVzJHByb2ZpdCA8LSBtb3ZpZXMkZ3Jvc3MgLSBtb3ZpZXMkYnVkZ2V0XG5vcHRpb25zKHNjaXBlbiA9IDk5OSkiLCJzYW1wbGUiOiIjIENyZWF0ZSB0aGUgc2NhdHRlciBwbG90IHdpdGggYHJhdGluZ3NgIG9uIHRoZSB4LWF4aXMgYW5kIGBwcm9maXRgIG9uIHRoZSB5LWF4aXNcbnBsb3QobW92aWVzJC4uLi4sIG1vdmllcyQuLi4uKVxuXG4jIEFkZCBhIHJlZ3Jlc3Npb24gbGluZXdpdGggdGhlIGZvcm0gYGFibGluZShsbSh5IH4geCkpYFxuXG5hYmxpbmUobG0obW92aWVzJC4uLi4gfiBtb3ZpZXMkLi4uLikpIiwic29sdXRpb24iOiIjIENyZWF0ZSB0aGUgc2NhdHRlciBwbG90IHdpdGggYHJhdGluZ3NgIG9uIHRoZSB4LWF4aXMgYW5kIGBwcm9maXRgIG9uIHRoZSB5LWF4aXNcbnBsb3QobW92aWVzJHJhdGluZywgbW92aWVzJHByb2ZpdClcblxuIyBBZGQgYSByZWdyZXNzaW9uIGxpbmUgd2l0aCB0aGUgZm9ybSBgYWJsaW5lKGxtKHkgfiB4KSlgIFxuYWJsaW5lKGxtKG1vdmllcyRwcm9maXQgfiBtb3ZpZXMkcmF0aW5nKSkifQ==

L’output corrisponde più o meno a quello che ti aspettavi?

R regression

In generale, sembra che i film con rating più alto tendano ad avere profit più alto. Un altro modo per dirlo è che esiste una correlazione positiva tra rating e profit, almeno nel nostro data frame.

Detto ciò, anche un’occhiata veloce al grafico rivela che ci sono molti film molto apprezzati che non sono stati campioni d’incasso, e diversi film molto redditizi che hanno ottenuto valutazioni relativamente basse.

La correlazione NON implica causalità!

Un aneddoto per capire correlazione e causalità: gestisco un chiosco di gelati in spiaggia. Il numero medio di pedoni che attraversano fuori dalle strisce in città tende ad aumentare quando aumentano le mie vendite di gelati; ma sono i miei gelati a spingere le persone a ignorare il codice della strada, o c’è altro? I miei gelati sono indubbiamente fantastici, ma probabilmente è il sole a far venire voglia di gelato e a far sì che la gente non voglia aspettare ai semafori sotto il sole. Esiste una relazione (correlazione) tra le mie vendite e il numero di pedoni indisciplinati, ma non puoi affermare con certezza che sia una relazione causale.

Tieni a mente questo ragionamento mentre prosegui nel tutorial!

Calcolare la correlazione in R

Che tipi di relazioni esistono tra le variabili in movies e come puoi valutarle quantitativamente?

Un primo modo è calcolare correlazioni e matrici di correlazione con cor():

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdihcImh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIilcbm1vdmllcyRwcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldFxub3B0aW9ucyhzY2lwZW4gPSA5OTkpIiwic2FtcGxlIjoiIyBDb21wdXRlIFBlYXJzb24gY29ycmVsYXRpb25cbmNvcihtb3ZpZXMkcmF0aW5nLCBtb3ZpZXMkcHJvZml0KVxuXG4jIENvcnJlbGF0aW9uIE1hdHJpeFxuY29yKG1vdmllc1ssNDoxMF0pIn0=

Nota che puoi anche specificare il metodo per indicare quale coefficiente di correlazione calcolare. Fai attenzione, perché questi metodi fanno alcune assunzioni: i metodi Kendall e Spearman hanno senso solo per input ordinati. Significa che dovrai ordinare i dati prima di calcolare il coefficiente di correlazione.

Inoltre, il metodo predefinito, la correlazione di Pearson, assume che le variabili siano distribuite normalmente, che esista una relazione lineare tra ogni coppia di variabili e che i dati siano distribuiti normalmente attorno alla retta di regressione.

Nota anche che puoi usare rcorr(), parte del pacchetto Hmisc, per calcolare i livelli di significatività per le correlazioni di Pearson e Spearman.

Vedrai anche che la matrice di correlazione è in pratica una tabella che mostra i coefficienti di correlazione tra insiemi di variabili. È già un ottimo primo modo per capire quali relazioni esistono tra le variabili del set di dati; approfondiamo però nella prossima sezione.

Esplorare visivamente la correlazione: la matrice di correlazione in R

In questa esplorazione, traccerai una matrice di correlazione usando le variabili disponibili nel tuo data frame movies. Questo semplice grafico ti permetterà di visualizzare rapidamente quali variabili hanno una correlazione negativa, positiva, debole o forte con le altre.

Per riuscirci userai un pratico pacchetto chiamato GGally e una funzione chiamata ggcorr().

La chiamata avrà la forma ggcorr(df), dove df è il nome del data frame su cui richiami la funzione. L’output sarà una matrice a forma triangolare, codificata a colori e etichettata con i nomi delle variabili. Il coefficiente di correlazione di ciascuna variabile rispetto alle altre si legge scorrendo la matrice in orizzontale e/o in verticale, a seconda della posizione della variabile.

Può sembrare confuso, ma in pratica è semplicissimo: prova nel blocco di codice che segue!

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdih1cmwoXCJodHRwOi8vczMuYW1hem9uYXdzLmNvbS8vZGN3b29kczI3MTcvbW92aWVzLmNzdlwiKSlcbm1vdmllcyRwcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldFxubGlicmFyeShcIkdHYWxseVwiKSIsInNhbXBsZSI6IiMgUmVwbGFjZSB0aGUgXCIuLi4uLlwiIHdpdGggdGhlIG5hbWUgb2YgdGhlIGRhdGEgZnJhbWUgXG5nZ2NvcnIoLi4uLi4pIiwic29sdXRpb24iOiIjIFJlcGxhY2UgdGhlIFwiLi4uLi5cIiB3aXRoIHRoZSBuYW1lIG9mIHRoZSBkYXRhIGZyYW1lIFxuZ2djb3JyKG1vdmllcykifQ==

correlation coefficient

Nella matrice di correlazione che hai appena creato (ottimo lavoro!), puoi andare alla riga o alla colonna associata a una variabile, ad esempio year, e vedere il suo coefficiente di correlazione indicato dal colore della cella corrispondente a un’altra variabile.

Esaminando year, per esempio, vedi che c’è una correlazione positiva debole con budget e, in modo simile, una correlazione negativa debole con rating.

I coefficienti di correlazione sono sempre compresi tra -1 e 1, inclusi. Un coefficiente pari a -1 indica un adattamento perfetto e negativo, in cui i valori di y diminuiscono alla stessa velocità con cui i valori di x aumentano. Un coefficiente pari a 1 indica un adattamento perfetto e positivo, in cui i valori di y aumentano alla stessa velocità con cui aumentano i valori di x.

Nella maggior parte dei casi, come nell’esempio di year qui sopra, il coefficiente di correlazione sarà compreso tra -1 e 1.

Hai notato qualcosa di strano nelle variabili mostrate nella matrice di correlazione?

Non tutte le variabili di movies sono presenti!

È perché non tutte le variabili di movies sono numeriche. La funzione ggcorr ignora automaticamente le variabili non numeriche, risparmiandoti il tempo di doverle escludere prima di creare la matrice.

Se vuoi che la tua matrice di correlazione “salti all’occhio” (o magari sei un po’ daltonico, come me), ci sono alcune semplici modifiche per renderla più leggibile e carica di informazioni.

Nel blocco di codice che segue, è incluso l’argomento label, che può essere impostato su TRUE o FALSE. L’impostazione predefinita è FALSE, ma se aggiungi label = TRUE, in ogni cella viene mostrato il coefficiente di correlazione della relazione corrispondente. Così non devi indovinare i valori dai colori.

L’argomento label_alpha ti permette di aumentare o diminuire l’opacità di ciascuna etichetta in base all’intensità del coefficiente di correlazione. È molto utile per un’analisi visiva rapida.

Non fidarti sulla parola, provalo tu stesso!

Ora tracciamo una matrice di correlazione migliore:

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdih1cmwoXCJodHRwOi8vczMuYW1hem9uYXdzLmNvbS8vZGN3b29kczI3MTcvbW92aWVzLmNzdlwiKSlcbm1vdmllcyRwcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldFxubGlicmFyeShcIkdHYWxseVwiKSIsInNhbXBsZSI6IiMgRmlsbCBpbiBcIlRSVUVcIiBvciBcIkZBTFNFXCIgdG8gc2VlIGhvdyB0aGUgY29ycmVsYXRpb24gbWF0cml4IGNoYW5nZXNcbmdnY29ycihtb3ZpZXMsIFxuICAgICAgIGxhYmVsID0gLi4uLi4sIFxuICAgICAgIGxhYmVsX2FscGhhID0gLi4uLi4pIiwic29sdXRpb24iOiIjIEZpbGwgaW4gXCJUUlVFXCIgb3IgXCJGQUxTRVwiIHRvIHNlZSBob3cgdGhlIGNvcnJlbGF0aW9uIG1hdHJpeCBjaGFuZ2VzXG5nZ2NvcnIobW92aWVzLCBcbiAgICAgICBsYWJlbCA9IFRSVUUsIFxuICAgICAgIGxhYmVsX2FscGhhID0gVFJVRSkifQ==

correlation coefficient

Nei grafici che seguono, vedrai che quando c’è una correlazione “forte”, la pendenza della retta di regressione (x/y) è più vicina a 1/1 o -1/1, mentre in una correlazione “debole” la retta può avere una pendenza minima. Una pendenza più vicina a 1/1 o -1/1 implica che le due variabili rappresentate siano strettamente correlate.

Nel caso del nostro data frame movies, una retta di regressione può offrire indicazioni importanti sulla natura delle variabili e suggerire una loro interdipendenza.

Per esempio, nel tuo grafico precedente di profit rispetto a rating, la retta di regressione aveva una pendenza positiva moderata. Guardando la matrice di correlazione, vedi che il coefficiente tra queste due variabili è 0,3.

Torna tutto, no?

Tipi di correlazione

Vediamo ora altri grafici che illustrano i diversi tipi di correlazione che hai visto nella sezione precedente!

Correlazione forte: grafico di voti contro recensioni

Cominciamo tracciando due variabili con una correlazione positiva forte.

Guardando la matrice di correlazione, sembra che votes rispetto a reviews soddisfi i criteri, con un valore di correlazione di 0,8. Significa che la pendenza dovrebbe essere relativamente vicina a 1/1.

In questo esercizio e nei successivi userai il pacchetto ggplot2. ggplot2 è una cassetta degli attrezzi versatile per creare visualizzazioni efficaci dei dati.

In questo caso, userai la funzione qplot del pacchetto ggplot2, che può produrre molti tipi di grafici in base al tipo passato all’argomento geom (geometria).

Nel blocco di codice seguente, geom è impostato su un vettore con due geometrie, point e smooth: point produce uno scatter plot e smooth genera una linea di tendenza. Noterai anche che method è impostato su lm, il che significa che la linea di tendenza sarà la familiare retta di regressione già vista nel grafico di profit rispetto a years.

In breve, scoprirai quanto è facile creare visualizzazioni potenti in un attimo!

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkoXCJnZ3Bsb3QyXCIpXG5tb3ZpZXMgPC0gcmVhZC5jc3YodXJsKFwiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikpXG5tb3ZpZXMkcHJvZml0IDwtIG1vdmllcyRncm9zcyAtIG1vdmllcyRidWRnZXRcbm9wdGlvbnMoc2NpcGVuID0gOTk5KSIsInNhbXBsZSI6IiMgUGxvdCB2b3RlcyB2cyByZXZpZXdzXG5xcGxvdChtb3ZpZXMkLi4uLi4sIFxuICAgICAgbW92aWVzJC4uLi4uLCBcbiAgICAgIGRhdGEgPSAuLi4uLiwgXG4gICAgICBnZW9tID0gYyhcInBvaW50XCIsIFwic21vb3RoXCIpLCBcbiAgICAgIG1ldGhvZCA9IFwibG1cIiwgXG4gICAgICBhbHBoYSA9IEkoMSAvIDUpLCBcbiAgICAgIHNlID0gRkFMU0UpIiwic29sdXRpb24iOiIjIFBsb3Qgdm90ZXMgdnMgcmV2aWV3c1xucXBsb3QobW92aWVzJHZvdGVzLCBcbiAgICAgIG1vdmllcyRyZXZpZXdzLCBcbiAgICAgIGRhdGEgPSBtb3ZpZXMsIFxuICAgICAgZ2VvbSA9IGMoXCJwb2ludFwiLCBcInNtb290aFwiKSwgXG4gICAgICBtZXRob2QgPSBcImxtXCIsIFxuICAgICAgYWxwaGEgPSBJKDEgLyA1KSwgXG4gICAgICBzZSA9IEZBTFNFKSJ9

positive R correlation

Avrai riconosciuto l’argomento alpha incluso in qplot. L’uso di alpha in qplot applica un gradiente di opacità ai punti nello scatter plot, in modo simile a come cambiava l’opacità delle etichette dei coefficienti in ggcorr.

Nella configurazione usata, l’opacità totale si ottiene solo quando un punto è sovrapposto da altri 5 punti. Aumentare o diminuire il numero al denominatore di alpha cambia quanti punti sovrapposti servono per modificare l’opacità. Questo aiuto visivo può rendere più rapido individuare le concentrazioni di punti nel grafico, facendo emergere nuove intuizioni sui dati a colpo d’occhio.

Metti mano al codice e vedi come funziona!

Correlazione debole: grafico del profitto nel tempo

Ora vediamo come appare una correlazione “debole” e negativa tracciando profit rispetto a years. Questa volta non è stato specificato alcun method, quindi la linea di tendenza varierà in modo curvilineo in base ai dati (una curva adattata), che è l’impostazione predefinita della funzione. Noterai che lungo alcuni tratti della linea di tendenza c’è un’area grigia chiara che aumenta o diminuisce in base all’ampiezza dell’intervallo di confidenza della curva.

Se non conosci il concetto di intervallo di confidenza, non preoccuparti! R farà il lavoro per te, e il concetto sarà spiegato meglio dopo questo esercizio.

Per ora, completa gli spazi con il codice necessario e osserva!

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkoXCJnZ3Bsb3QyXCIpXG5tb3ZpZXMgPC0gcmVhZC5jc3YodXJsKFwiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikpXG5tb3ZpZXMkcHJvZml0IDwtIG1vdmllcyRncm9zcyAtIG1vdmllcyRidWRnZXRcbm9wdGlvbnMoc2NpcGVuID0gOTk5KSIsInNhbXBsZSI6IiMgUGxvdCBwcm9maXQgb3ZlciB5ZWFyc1xucXBsb3QobW92aWVzJHllYXIsIFxuICAgICAgbW92aWVzJHByb2ZpdCwgXG4gICAgICBkYXRhID0gbW92aWVzLCBcbiAgICAgIGdlb20gPSBjKFwicG9pbnRcIiwgXCJzbW9vdGhcIiksIFxuICAgICAgYWxwaGEgPSBJKDEgLyA1KSkiLCJzb2x1dGlvbiI6IiMgUGxvdCBwcm9maXQgb3ZlciB5ZWFyc1xucXBsb3QobW92aWVzJHllYXIsIFxuICAgICAgbW92aWVzJHByb2ZpdCwgXG4gICAgICBkYXRhID0gbW92aWVzLCBcbiAgICAgIGdlb20gPSBjKFwicG9pbnRcIiwgXCJzbW9vdGhcIiksIFxuICAgICAgYWxwaGEgPSBJKDEgLyA1KSkifQ==

weak correlation

Ora che hai visto intervallo di confidenza e curva di smoothing in azione, che osservazioni puoi fare?

  • Per prima cosa, nella parte iniziale del grafico, profit sembra aumentare di anno in anno (year).
  • In secondo luogo, noti che l’area grigia attorno alla curva di smoothing è inizialmente piuttosto ampia e il numero di punti (o osservazioni) è piuttosto ridotto.
  • In terzo luogo, quando la curva entra in una zona con una maggiore concentrazione di osservazioni, l’area grigia si riduce e praticamente “abbraccia” la curva, che poi inizia a calare negli ultimi year.

In conclusione, tracciare l’intervallo di confidenza insieme alla curva di smoothing ci permette di vedere la quantità di incertezza associata alla retta di regressione. Tale incertezza aumenta con meno osservazioni e diminuisce con più osservazioni.

Questo è molto utile per visualizzare come il rapporto tra variabili cambi all’interno del data frame e come le concentrazioni di osservazioni modifichino la curva tracciata.

La nota dolente è che il grafico può risultare un po’ fuorviante, perché è difficile capire visivamente se la correlazione tra le variabili sia positiva o negativa.

Tracciamo ora profit rispetto a year nello stesso modo in cui hai tracciato votes contro reviews: sostituisci semplicemente i “…..” in ciascun argomento così che gli anni siano sull’asse x e profit sull’asse y. Assicurati di specificare quale data frame passi come “data”!

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkoXCJnZ3Bsb3QyXCIpXG5tb3ZpZXMgPC0gcmVhZC5jc3YodXJsKFwiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikpXG5tb3ZpZXMkcHJvZml0IDwtIG1vdmllcyRncm9zcyAtIG1vdmllcyRidWRnZXRcbm9wdGlvbnMoc2NpcGVuID0gOTk5KSIsInNhbXBsZSI6IiMgUGxvdCB0aGUgeWVhcnMgb24gdGhlIHgtYXhpcywgcHJvZml0IG9uIHRoZSB5LWF4aXNcbnFwbG90KG1vdmllcyQuLi4uLiwgXG4gICAgICBtb3ZpZXMkLi4uLi4sIFxuICAgICAgZGF0YSA9IC4uLi4uLCBcbiAgICAgIGdlb20gPSBjKFwicG9pbnRcIiwgXCJzbW9vdGhcIiksIFxuICAgICAgbWV0aG9kID0gXCJsbVwiLCBcbiAgICAgIGFscGhhID0gSSgxIC8gNSksIFxuICAgICAgc2UgPSBGQUxTRSkiLCJzb2x1dGlvbiI6IiMgUGxvdCB0aGUgeWVhcnMgb24gdGhlIHgtYXhpcywgcHJvZml0IG9uIHRoZSB5LWF4aXNcbnFwbG90KG1vdmllcyR5ZWFyLCBcbiAgICAgIG1vdmllcyRwcm9maXQsIFxuICAgICAgZGF0YSA9IG1vdmllcywgXG4gICAgICBnZW9tID0gYyhcInBvaW50XCIsIFwic21vb3RoXCIpLCBcbiAgICAgIG1ldGhvZCA9IFwibG1cIiwgXG4gICAgICBhbHBoYSA9IEkoMSAvIDUpLCBcbiAgICAgIHNlID0gRkFMU0UpIn0=

negative correlation

Guardando la matrice di correlazione, vedi che il coefficiente di correlazione di profit e year è -0,1, valore forse più facile da visualizzare nel grafico con la linea di miglior adattamento che non nel grafico con la curva adattata.

Ricapitolando

Vediamo ora un’altra potente funzione disponibile in GGally chiamata ggpairs. Questa funzione è ottima perché consente di creare una matrice che mostra il coefficiente di correlazione di più variabili insieme a uno scatter plot (con linea di miglior adattamento e intervallo di confidenza) e a un grafico di densità.

Con un’unica funzione, puoi combinare efficacemente tutto ciò che hai visto in questo tutorial in modo conciso e facilmente comprensibile.

Nel blocco di codice seguente, scegli le tue tre variabili preferite dal data frame (senza bisogno di subsetting!), inseriscile e divertiti!

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkoXCJnZ3Bsb3QyXCIpXG5saWJyYXJ5KFwiR0dhbGx5XCIpXG5tb3ZpZXMgPC0gcmVhZC5jc3YodXJsKFwiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikpXG5tb3ZpZXMkcHJvZml0IDwtIG1vdmllcyRncm9zcyAtIG1vdmllcyRidWRnZXRcbm9wdGlvbnMoc2NpcGVuID0gOTk5KSIsInNhbXBsZSI6IiMgUGx1ZyBpbiB5b3VyIHRocmVlIGZhdm9yaXRlIHZhcmlhYmxlcyBhbmQgdGlua2VyIGF3YXkhXG5nZ3BhaXJzKG1vdmllcywgXG4gICAgICAgIGNvbHVtbnMgPSBjKFwiLi4uLi5cIiwgXCIuLi4uLlwiLCBcIi4uLi4uXCIpLCBcbiAgICAgICAgdXBwZXIgPSBsaXN0KGNvbnRpbnVvdXMgPSB3cmFwKFwiY29yXCIsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDEwKSksIFxuICAgICAgICBsb3dlciA9IGxpc3QoY29udGludW91cyA9IFwic21vb3RoXCIpKSIsInNvbHV0aW9uIjoiIyBQbHVnIGluIHlvdXIgdGhyZWUgZmF2b3JpdGUgdmFyaWFibGVzIGFuZCB0aW5rZXIgYXdheSFcbmdncGFpcnMobW92aWVzLCBcbiAgICAgICAgY29sdW1ucyA9IGMoXCJjYXN0X2ZhY2Vib29rX2xpa2VzXCIsIFwiYnVkZ2V0XCIsIFwicHJvZml0XCIpLCBcbiAgICAgICAgdXBwZXIgPSBsaXN0KGNvbnRpbnVvdXMgPSB3cmFwKFwiY29yXCIsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDEwKSksIFxuICAgICAgICBsb3dlciA9IGxpc3QoY29udGludW91cyA9IFwic21vb3RoXCIpKSJ9

correlation R matrix

Come avrai intuito, ci sono molti scenari in cui un tipo di grafico è ideale: la chiave è conoscere le tecniche di visualizzazione disponibili, come usarle e cosa significa il risultato finale!

Prossimi passi

Hai coperto un sacco di argomenti in questo tutorial, quindi complimenti per essere arrivato alla fine!

Spero che tu possa mettere al lavoro questi concetti nelle tue avventure analitiche! Queste sono davvero le basi dell’esplorazione dei dati in R e c’è molto altro che puoi fare per capire bene i tuoi dati prima di iniziare ad analizzarli e modellarli. Perché non fare un passo in più e iniziare il corso di DataCamp Exploratory Data Analysis?

Nel frattempo, ti invito a fare un salto su Kaggle e trovare un set di dati ricco e interessante tutto tuo da esplorare, se non vuoi continuare con il set di dati movies!

Argomenti
R
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