Analizza le tendenze del ghiaccio artico con Python

Analyze Arctic ice trends with Python.

Indagare le previsioni passate

Iceberg islandese inclinato (immagine dell'autore)

La misurazione è la base di tutte le scienze. Senza di essa, come potremmo testare le nostre ipotesi?

Python, come linguaggio di programmazione preminente per la scienza dei dati, rende semplice raccogliere, pulire e dare un senso ai dati di misurazione. Con Python, possiamo testare le previsioni, convalidare i modelli e tenere responsabili i prognostici.

L’anno scorso, un meme obsoleto che derideva Al Gore è apparso nel mio feed LinkedIn, contrassegnato dall’hashtag “#catastrophizing”. L’argomento erano i suoi commenti del 2007 e del 2009 secondo cui il Mare Artico sarebbe stato privo di ghiaccio estivo entro sette anni. Diversi siti di fact-checking hanno verificato questa affermazione come “per lo più vera” e si sono riferiti alla seguente citazione:

“Alcuni modelli suggeriscono al dott. (Wieslav) Maslowski che ci sia una probabilità del 75% che l’intera calotta di ghiaccio polare settentrionale, durante alcuni mesi estivi, potrebbe essere completamente priva di ghiaccio nei prossimi cinque-sette anni.”

-Al Gore, dicembre 2009

Mentre molte persone accettano i meme come verità assoluta, i data scientist possiedono la capacità di approfondire i dati e trarre le proprie conclusioni. In questo progetto di Data Science di successo rapido, utilizzeremo le librerie pandas e Matplotlib di Python per scrutare il comportamento del ghiaccio marino dell’Artico negli ultimi quattro decenni e mettere alla prova i commenti e i meme.

Un commento sul cambiamento climatico

Notare che questo non è un articolo né contro né a favore del cambiamento climatico antropogenico, ma un articolo a favore dei dati. Indipendentemente da come la si pensi riguardo al cambiamento climatico antropogenico, spero che si sia d’accordo sul fatto che sia nell’interesse di tutti validare i modelli e confermare le previsioni.

È anche importante che i leader di pensiero su argomenti critici si astengano dal fare affermazioni stravaganti o affrettate che sono facilmente confutabili. Ciò non solo compromette la credibilità ma politizza anche la materia, rendendo le discussioni razionali difficili se non impossibili.

In questo caso, Al Gore è stato abbastanza saggio da cercare di mitigare i suoi commenti con probabilità e parole come “suggerire” e “potrebbe”. Purtroppo, queste precauzioni vengono facilmente messe da parte quando si creano i meme.

Centro dati neve e ghiaccio nazionale

Per confermare o confutare la “previsione” di Gore, dobbiamo conoscere l’estensione minima del ghiaccio marino nel periodo in questione. Fortunatamente, abbiamo accesso a un completo set di dati pubblici compilati dal Centro dati neve e ghiaccio nazionale, una parte dell’Istituto cooperativo per la ricerca nelle scienze ambientali (CIRES) dell’Università del Colorado, Boulder [1]. Questo set di dati utilizza immagini satellitari per seguire e monitorare i cambiamenti nel ghiaccio marino dell’Artico.

Estensione del ghiaccio marino di settembre 2022 basata su immagini satellitari (cortesia del Centro dati neve e ghiaccio nazionale, Università del Colorado, Boulder [1])

I dati sono forniti sia in incrementi mensili che giornalieri. In genere, i totali mensili sono raccomandati per guardare le tendenze nel ghiaccio marino. Tuttavia, per assicurarsi di catturare l’estensione misurata minima per ogni mese, useremo i dati giornalieri e selezioneremo il giorno con il valore più basso per rappresentare l’intero mese.

Mentre il set di dati in incrementi giornalieri è accessibile in formato CSV tramite il link fornito, ho già preparato il file e lo ho archiviato in questo Gist per facilità d’uso.

Per affrontare la domanda in questione, utilizzeremo pandas per preparare i dati e Matplotlib per rappresentarli come un grafico a linee. Rappresenteremo tutti i dati, ma ci concentreremo principalmente sui valori minimi che si verificano ogni estate.

Il codice

Il seguente codice è stato inserito in JupyterLab e viene descritto per cella.

Importazione delle librerie

Per questo progetto, tutto ciò di cui abbiamo bisogno sono le solide librerie di Matplotlib e pandas. È possibile installarle con conda utilizzando:

conda install matplotlib pandas

e con pip usando:

pip install matplotlib

pip install pandas

Il modulo mdates di Matplotlib ci aiuterà ad annotare il nostro grafico con il periodo di tempo durante il quale Gore ha ipotizzato un mare Artico senza ghiaccio. Ecco gli import:

import pandas come pdimport matplotlib.pyplot come pltimport matplotlib.dates come mdates

Caricamento e preparazione dei dati

Il codice commentato seguente utilizza la libreria pandas per caricare i dati dal Gist e prepararli per il tracciamento. Inoltre, genera una media mobile annuale per catturare le tendenze a lungo termine delle misurazioni.

# Leggi i dati:URL = 'https://bit.ly/3NLoDzx'df = pd.read_csv(URL, skiprows=[1])# Rimuovi il whitespace iniziale dai nomi delle colonne:df.columns = df.columns.str.strip()# Elimina le colonne non necessarie:df = df.drop(df.columns[[4, 5]], axis=1)# Raggruppa per estensione minima mensile del ghiaccio:df = df.groupby(['Anno', 'Mese']).agg({'Estensione': ['min']}).reset_index()# Crea una colonna 'data' dalle colonne 'Anno' e 'Mese':cols = ['Anno', 'Mese']df['data'] = df[cols].apply(lambda x: '-'.join(x.values.astype(str)),                             axis="columns")df['data'] = pd.to_datetime(df['data'])# Imposta la colonna 'data' come indice del DataFrame:df = df.set_index(df['data'])# Elimina le colonne non necessarie di anno, mese e data:df = df.drop(df.columns[[0, 1, 3]], axis=1)# Calcola la media mobile annuale:df['media_mobile_annuale'] = df.Estensione.rolling(12).mean()# Controlla i risultati:df.tail(3)
The end of the DataFrame (image by the author)

Tracciamento dei dati

Il codice commentato seguente traccia i dati di estensione minima mensile e la media mobile annuale come un grafico a linea. Il periodo di sette anni dopo le osservazioni di Al Gore del 2009 è evidenziato in rosso e etichettato come “I prossimi 7 anni di Gore”.

# Crea il grafico:fig, ax = plt.subplots(figsize=(12, 6))ax.set_title('Estensione mensile MINIMA del ghiaccio marino artico', size=15)ax.plot(df['Estensione'], lw=2)ax.plot(df['media_mobile_annuale'], color='k')ax.set_ylim([0, 20])ax.tick_params(axis='both',                which='major',                labelsize=12)ax.grid()# Aggiungi una legenda:ax.legend(['Estensione del ghiaccio (10^6 km^2)', 'Media Mobile Annuale'],           frameon=True,           loc=3,           prop={'size': 14},           facecolor='#a1c9f4',           edgecolor='k',           fancybox=True,           shadow=True,           framealpha=1)# Aggiungi uno span ombreggiato per la previsione di Gore:ax.axvspan(*mdates.datestr2num(['2009-12-14', '2016-1-1']),            color='red',            alpha=0.3)# Annota il periodo di 7 anni menzionato da Gore nel 2009:ax.text(0.655, 0.8,         "I prossimi 7 anni di Gore",         transform=ax.transAxes,         fontsize=14)# Imposta le etichette x e y:font1 = {'family': 'arial',          'color': 'black',          'size': 15}ax.set_xlabel('Anno', fontdict=font1)ax.set_ylabel('Estensione del ghiaccio marino artico (10^6 km^2)',               fontdict=font1)plt.show()
The final line plot (image by the author)

La linea blu a dente di sega nel grafico segue l’estensione minima del ghiaccio marino artico per ogni mese. Il picco di ogni oscillazione rappresenta l’estensione minima invernale (di solito più alta in marzo). Il punto più basso di ogni oscillazione rappresenta l’estensione minima estiva (di solito più bassa in settembre). La linea nera è la media mobile annuale, che filtra il “rumore” stagionale per mostrare la tendenza generale dell’estensione del ghiaccio marino nel periodo di 44 anni.

Perché stiamo usando i valori minimi registrati ogni mese, anziché i valori medi o mediani mensili più tipici, questo grafico potrebbe non corrispondere esattamente ad altri che troverete online.

L’esito

Nei sette anni successivi al 2009, il Mar Glaciale Artico non è diventato privo di ghiaccio, anche se ha raggiunto un nuovo minimo di 3,34 milioni di chilometri quadrati il 16 settembre 2012. Questo era notevolmente inferiore al minimo di settembre 1981 di 6,9 milioni di chilometri quadrati e persino al minimo del 2009 di 5,0 milioni di chilometri quadrati. Infatti, c’è stata una costante traiettoria discendente dal 2009 al 2012.

Dopo il 2012, i valori sembravano stabilizzarsi un po’ e nell’estate del 2021, la curva della media mobile era in aumento.

Anche se Al Gore non ha “azzeccato”, la sua dichiarazione ha lasciato spazio per l’esito effettivo. I modelli a cui ha fatto riferimento includevano una probabilità del 25% che qualche ghiaccio rimanesse nel Mar Glaciale Artico durante l’estate.

Una cosa che dovremmo imparare da questo è che il clima della Terra è una bestia complicata. Le previsioni specifiche e a breve termine sul suo comportamento dovrebbero essere considerate con molta attenzione. Anche se creare un senso di urgenza può essere importante, questo può facilmente ritorcersi contro, portando al ridicolo e alla riduzione della credibilità.

Citazioni

[1] Fetterer, F., K. Knowles, W. N. Meier, M. Savoie, and A. K. Windnagel. Sea Ice Index, Version 3. 2017, distribuito dal National Snow and Ice Data Center. https://doi.org/10.7265/N5K072F8 . Data di accesso 06-18-2022.

I siti web specifici dei prodotti di dati di origine per questo progetto erano http://nsidc.org/data/nsidc-0081.html e http://nsidc.org/data/nsidc-0051.html (intervallo di dati: ottobre 1978-giugno 2022).

Ulteriori dettagli sui dati sono elencati nel foglio sottostante:

Scheda dati NSIDC Sea Ice Index v3 (cortesia del National Snow and Ice Data Center, University of Colorado, Boulder)

Secondo le politiche di citazione del NSIDC, le fotografie, le immagini o il testo dal sito web del NSIDC possono essere scaricati e utilizzati a meno che non siano specificamente indicati limiti per il loro utilizzo. Le immagini satellitari possono essere scaricate e utilizzate gratuitamente con il dovuto credito. Salvo diversa indicazione, le fotografie e le immagini possono essere utilizzate per scopi commerciali; tuttavia, non possono essere rivendute.

Molte immagini sul sito includono una didascalia e informazioni di credito specifiche. In caso contrario, il formato generale del credito dovrebbe essere: “Immagine/foto cortesia del National Snow and Ice Data Center, University of Colorado, Boulder”.

Grazie!

Grazie per aver letto e vi prego di seguirmi per altri progetti di Data Science di Successo Rapido in futuro.