Pythonを使用して北極の氷の傾向を分析する

Analyze Arctic ice trends using Python.

過去の予測を調べる

著者による傾いたアイスランドの氷山の画像

測定はすべての科学の基盤です。それがなければ、私たちは自分たちの仮説をどのようにテストできるでしょうか?

データサイエンスにおける最も優れたプログラミング言語としてのPythonは、測定データを収集、クリーン化、整理することが容易になっています。Pythonを使うと、予測をバックテストしたり、モデルを検証したり、予測者を責任を追及することができます。

昨年、Al Goreを嘲笑する古いミームが私のLinkedInのフィードに現れました。この件については、「#catastrophizing」というハッシュタグが付けられています。その内容は、2007年と2009年に彼が発言した北極海が7年間で夏の氷から解放されるというコメントでした。数多くのファクトチェックサイトがこの発言を「ほとんど真実」と認め、以下の引用を示しました。

「いくつかのモデルは、Dr. (Wieslav) Maslowskiに示唆しています。次の5〜7年以内に、夏のいくつかの月に、北極の氷帽子全体が完全に氷のない状態になる可能性が75%ある」と

-Al Gore、2009年12月

多くの人々がミームをそのまま受け入れる中、データサイエンティストはデータに深く入り込み、自分たち自身の結論を導くことができます。このQuick Success Data Scienceプロジェクトでは、PythonのpandasとMatplotlibライブラリを使用して、過去40年間の北極海の氷の振る舞いを詳しく調べ、コメントやミームをテストします。

気候変動に関するコメント

これは反対派でも賛成派でもない、データに基づく記事です。人為的な気候変動についてどう感じようとも、モデルを検証し、予測を確認することが全員の利益になると思います。

また、重要な問題についての思想リーダーは、容易に反論される誇張や衝動的な主張をすることを避けることが重要です。これは信頼性を損なうだけでなく、合理的な議論を困難にします。

この場合、Al Goreは確率や「示唆」と「可能性」という言葉を使用して彼のコメントを慎重にしました。残念ながら、これらの慎重さはミームを作るときに簡単に誤用されます。

National Snow and Ice Data Center

Goreの「予測」を確認または反論するためには、当該期間における海氷の最小範囲を知る必要があります。幸いにも、アメリカ合衆国コロラド大学ボルダー校の環境科学研究協力機構(CIRES)の一部であるNational Snow and Ice Data Centerが編集した包括的な公共データセットにアクセスできます[1]。このデータセットは、衛星画像を利用して北極海の変化を追跡・監視しています。

衛星画像に基づく2022年9月の海氷範囲(National Snow and Ice Data Center、コロラド大学ボルダー校[1]提供)

このデータは、月次データと日次データの両方で提供されています。通常、海氷の傾向を見る場合は月次合計が推奨されます。ただし、各月の最小値を表す最も低い値を選択して、各月の最小測定範囲を捉えるようにするために、日別データを使用します。

日次インクリメントのデータセットは、提供されたリンクを介してCSV形式でアクセスできますが、私はすでにファイルを準備して、このGistに保存しました。

今回の問題に対処するために、pandasを使用してデータを準備し、Matplotlibを使用して折れ線グラフとしてプロットします。すべてのデータをプロットしますが、夏に発生する最小値に主に焦点を当てます。

コード

以下のコードはJupyterLabに入力され、セルによって説明されています。

ライブラリのインポート

このプロジェクトでは、Matplotlibとpandasの堅実なライブラリが必要です。condaを使用してインストールできます。

conda install matplotlib pandas

そしてpipを使用して:

pip install matplotlib

pip install pandas

Matplotlibのmdatesモジュールを使用して、ゴアが氷のない北極海を予測した期間にわたる時間スパンでプロットに注釈を付けることができます。以下にインポートが示されています:

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

データの読み込みと準備

以下のコメント付きのコードでは、pandasライブラリを使用してデータをGistから読み込み、プロットのために準備し、さらに、長期的な傾向を捉えるために年間移動平均を生成します。

# データを読み込む:URL = 'https://bit.ly/3NLoDzx'df = pd.read_csv(URL, skiprows=[1])# 列名の先頭の空白を削除する:df.columns = df.columns.str.strip()# 不要な列を削除する:df = df.drop(df.columns[[4, 5]], axis=1)# 月次の最小氷床面積でグループ化する:df = df.groupby(['Year', 'Month']).agg({'Extent': ['min']}).reset_index()# 'Year'と'Month'の列から'date'列を作成する:cols = ['Year', 'Month']df['date'] = df[cols].apply(lambda x: '-'.join(x.values.astype(str)),                             axis="columns")df['date'] = pd.to_datetime(df['date'])# 'date'列をDataFrameのインデックスに設定する:df = df.set_index(df['date'])# 不要な年、月、日の列を削除する:df = df.drop(df.columns[[0, 1, 3]], axis=1)# 年間移動平均を計算する:df['yearly_ma'] = df.Extent.rolling(12).mean()# 結果を確認する:df.tail(3)
The end of the DataFrame (image by the author)

データのプロット

以下のコメント付きのコードは、月次の最小面積データと年間移動平均を折れ線グラフとしてプロットします。アル・ゴア氏の2009年の発言後の7年間を赤でハイライト表示し、「Gore’s Next 7 Years」とラベル付けします。

# プロットを作成する:fig, ax = plt.subplots(figsize=(12, 6))ax.set_title('北極海氷床面積 月次の最小値', size=15)ax.plot(df['Extent'], lw=2)ax.plot(df['yearly_ma'], color='k')ax.set_ylim([0, 20])ax.tick_params(axis='both',                which='major',                labelsize=12)ax.grid()# 凡例を追加する:ax.legend(['氷床面積 (10^6 km^2)', '年間移動平均'],           frameon=True,           loc=3,           prop={'size': 14},           facecolor='#a1c9f4',           edgecolor='k',           fancybox=True,           shadow=True,           framealpha=1)# ゴアの予測のための影を追加する:ax.axvspan(*mdates.datestr2num(['2009-12-14', '2016-1-1']),            color='red',            alpha=0.3)# ゴアが2009年に言及した7年間の範囲に注釈を付ける:ax.text(0.655, 0.8,         "Gore's Next 7 Years",         transform=ax.transAxes,         fontsize=14)# xラベルとyラベルを設定する:font1 = {'family': 'arial',          'color': 'black',          'size': 15}ax.set_xlabel('年', fontdict=font1)ax.set_ylabel('北極海氷床面積 (10^6 km^2)',               fontdict=font1)plt.show()
The final line plot (image by the author)

プロット中のノコギリ波模様の青い線は、各月の北極海氷床面積の最小値を追跡します。各振動のピークは、冬季の最小値を表します(通常、3月が最高)。各振動の谷は、夏季の最小値を表します(通常、9月が最低)。黒い線は、季節的な「ノイズ」をフィルタリングして、44年間にわたる海氷の面積の全体的な傾向を示す年間移動平均です。

月ごとの平均値や中央値ではなく、各月の最小値を使用しているため、このプロットはオンラインで見つかる他のものと完全に一致しない場合があります。

結果

2009年以降の7年間、北極海は氷のない状態にはなりませんでしたが、2012年9月16日には新記録の3.34百万平方キロメートルに達しました。これは、1981年9月の6.9百万平方キロメートルや2009年の5.0百万平方キロメートルよりも大幅に減少しています。実際、2009年から2012年にかけては着実に下降していました。

2012年以降、その値はある程度安定したようで、2021年夏には移動平均曲線が実際に増加していました。

アル・ゴアは「正しい予測をしなかった」が、彼の発言は実際の結果に余地を残しました。彼が参照したモデルには、夏季に北極海に一部の氷が残る可能性が25%含まれていました。

私たちがこれから学ぶべきことは、地球の気候は複雑なものであるということです。その振る舞いについての特定の短期的な予測は非常に注意深く検討される必要があります。緊急性を感じさせることが重要である場合がありますが、これは簡単に逆効果になり、嘲笑や信憑性の低下につながる可能性があります。

引用

[1] Fetterer, F., K. Knowles, W. N. Meier, M. Savoie, and A. K. Windnagel. Sea Ice Index, Version 3. 2017, Distributed by National Snow and Ice Data Center. https://doi.org/10.7265/N5K072F8 . Date Accessed 06–18–2022.

このプロジェクトの特定のソースデータ製品のウェブサイトは、http://nsidc.org/data/nsidc-0081.html および http://nsidc.org/data/nsidc-0051.html です(データ範囲:1978年10月-2022年6月)。

データに関する詳細は、以下のシートに記載されています:

NSIDC Sea Ice Index v3 data sheet (courtesy of the National Snow and Ice Data Center, University of Colorado, Boulder)

NSIDCの引用ポリシーによると、NSIDCウェブサイトの写真、画像、またはテキストは、その使用に関する制限が特に明示されていない限り、ダウンロードして使用できます。適切なクレジットを付与することで、衛星画像を無料でダウンロードして使用できます。写真や画像は、特に指定されていない限り、商業目的に使用できます。ただし、再販売することはできません。

サイトの多くの画像には、キャプションと特定のクレジット情報が含まれています。それ以外の場合は、「Image/photo courtesy of the National Snow and Ice Data Center, University of Colorado, Boulder.」のような一般的なクレジット形式を使用してください。

ありがとうございます!

読んでいただきありがとうございます。今後もクイックサクセスデータサイエンスプロジェクトを引き続きフォローしてください。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more