マイクロソフトエクセル(上級編)     元へ戻る               

 南方振動指数(Southern Oscillation Index)は,南太平洋のタヒチとオーストラリアの都市ダーウィンとの気圧差を指数化したもの.貿易風の強さの目安となり,ENSOの大気側の指標としてよく使われる.一般的にはエルニーニョ時に負の値,ラニーニャ時に正の値となる.
 
http://www.data.kishou.go.jp/shindan/sougou/html/sum_2.3.html より


@エクセルで南方振動指数を計算

 ウェブサイトからデータをダウンロードして南方振動指数を計算する(最大値・最小値,データの検索・並び替え,MIN・MAX,COUNTIF)
 南方振動指数の計算方法
(参考:http://www.cpc.ncep.noaa.gov/data/indices/Readme.index.shtml#SOICALC
    http://www.ncdc.noaa.gov/teleconnections/enso/indicators/soi/)

【具体的な計算手順】
1)海面気圧の標準化 
海面気圧データは以下のリンク先にある。
 タヒチの海面気圧データ
 ダーウィンの海面気圧データ


以降はタヒチの海面気圧を例に示す。

a) タヒチの海面気圧データをダウンロード(エクセルのシートに貼り付け)


b)平均値
 各月における、タヒチの海面気圧データの平均値を計算する。
 ただし、
各月における1981年〜2010年の平均値を求めること。これはNOAAのClimate Prediction Centerの方針
 サンプル数はカウント関数を使えばよい。

 平均値=各月の気圧の総和 /  サンプル数                      ------(1)
c)偏差
 次に新しいシートを作成し、そのシート上で各データの平均値からのずれ(偏差)を求める。

 
偏差=各月の気圧 ー 平均値                             ------(2)
d)タヒチの海面気圧の標準偏差
 偏差の二乗の値を求め、1981年1月〜2010年12月の値の総和を求める。この総和をサンプル数で割り、平方根をとる。
  
 タヒチの海面気圧の標準偏差 = (偏差の二乗の総和/サンプル数)の平方根        ------(3)

e)タヒチの海面気圧の標準化

 
標準化されたタヒチの海面気圧
  =(各月の気圧 ー 各月の平均気圧)/ ((3)で求めた海面気圧の標準偏差)     ------(4)
 

 ダーウィンの海面気圧も同様に標準化すること。



先週ついてこれなかった人のためのファイル



2)月平均標準偏差(MSD)の計算 
 a) まず標準化されたタヒチとダーウィンの気圧差の二乗和を求める。

 b)二乗和をサンプル数で割って月平均標準偏差MSDを求める。
     ただし、
各月における1981年〜2010年の平均値を求めること。



南方振動指数の計算

  SOI=(標準化されたタヒチの海面気圧 ー 標準化されたダーウィンの海面気圧)/ 月平均標準偏差(MSD)------(5)


(答え合わせ) NOAAによる南方振動指数





A海面水温データとの比較(グラフ作成,近似直線,相関係数の計算)
各月の南方振動指数(SOI)と、上図にある各監視域(NINO3など)における海面水温と比較する。

前準備)シートが多くなってきたので、新規のエクセルファイルを開く。
    シート名を「SOI」に変更し、先週計算したSOIの値を形式を選択して「値」だけ貼り付ける。
    ※計算できていない人は、NOAAによる南方振動指数から
    (STAND TAHITI - STAND DARWIN) SEA LEVEL PRESS STANDARDIZED DATA 以下の値をコピーして、貼り付けること。

1) 海面水温データのダウンロード

 Monthly OISST v2ダウンロードする。
  
OISSTという名前のシートを作り、前回の海面気圧と同様に、データを貼り付ける。 データは区切り位置を指定すること。

   C1〜J1のセルは以下のように書き換えておく。

NINO1+2 NINO1+2 ANOM NINO3 NINO3 ANOM NINO4 NINO4 ANOM NINO3.4 NINO3.4 ANOM


2) SOIと各領域の水温との比較

 
2)−1 新たにシートを作り、SOIを時系列に並べる。
 データ並び替えはOFFSET関数を使って行う。
 A列は「年」、B列は「月」、C列は「SOI」、D列は「YYYY-MMM」とする。
 
 ・A2のセル=1951+INT((ROW(A2)-2)/12)
  この後769行までオートフィルで値を埋める。

 ・B2~B13に1〜12の数値を入力。
  その後、1〜12の数値を指定する。
  次にCtrlキーを押しながら、右下のオートフィルハンドルを769行までドラッグする。
  これで1〜12の連番が入力される。

 ・C2のセル=OFFSET(SOI!$B$2,INT((ROW(C2)-1)/12-(ROW($C$2)-1)/12),INT(MOD(ROW(C2)-2,12)))

 ・D2のセル=DATE(A2,B2,15)


 2)−2 SOIと海面水温を比較するシートを作る。
  新たに「比較」というシート作り、そのシート上でSOIと各監視域の海面水温を比較する。
  以下の図は「比較」シートの例。
  データは1982年から2014年までを使用する。



  A列は年、B列は月、C列はSOI、D列は比較したい変数となっている。
  
D列のデータはG1のセルの数値を変えることで可変にする。

  @まずF1〜G12のセルにある文字列・数値を記述する。
   タイトルと軸ラベルのところは以下の通り。

   G14のセル=C1&" vs. "&D1
   G15のセル=C1
   G16のセル=D1

  AA列〜C列の2行目以降はSOIを時系列に並び替えたシートから貼り付けるか、リンク貼り付けすればよい。

  
BD1のセル→OFFSET関数を使う。考えてみよう。



1982年から2014年までのSOIとNino3.4の海面水温アノマリーを比較すると以下のようになる。

 


では散布図を作成してみよう。
SOIとNINO3.4アノマリーとの比較は下のようになる。



・近似直線(線形回帰直線)を描く。さらに回帰式と決定係数を加える。
 回帰式の傾きと切片の求め方は知らなくてもできてしまうが、勉強しておきましょう。
 →情報処理概論Tのレジュメ
 


SOIを並び替えたデータ


SSTを並び替えたデータ


B
SOI(南方振動指数)時系列データ解析:1951年1月〜2014年12月

 1)南方振動指数から、エルニーニョの特徴的な時間スケールを見る。




  上の図は、
  灰色:南方振動指数
  黒点線:121ヶ月移動平均値を取り除いた値
  赤線:121ヶ月移動平均値を取り除いた値に、さらに13ヶ月移動平均を施した値

  移動平均はAVERAGE関数を使って自分で計算する。
  SOIのような気候データの移動平均を計算する場合、ある時間tに対して前後のデータを平均する。
  121ヶ月平均の場合、計算の開始は1956年1月からとなり、
  1951年1月〜1961年1月のデータを平均したものが最初の計算値となる。

  平均する範囲が広ければ広いほど、高周波成分が取り除かれていく。

2)自己相関係数を計算し,周期性を調べる。(使用する関数:CORREL).








(参考になるウェブサイト)
エルニーニョ現象とは(気象庁)
El Nino Theme page (NOAA, 米国大気海洋局)
(参考図書)
松山洋・谷本陽一「UNIX/Windows/Machintoshを使った 実践!気候データ解析」古今書院