Topへ戻る 

03: データの収集と加工(南方振動指数の計算1)


  http://www.data.kishou.go.jp/shindan/sougou/html/sum_2.3.html より

タヒチとダーウィンにおける海面気圧データの標準化(平均・分散・標準偏差)



(a)海面気圧の平均値
 各月における、タヒチの海面気圧データの平均値を計算する。
 ただし、
各月における1981年~2010年の平均値を求めること。これはNOAAのClimate Prediction Centerの方針


 平均値=各月の気圧の総和 /  サンプル数    ------(1)


 各月の平均値は、変数mslpd,mslpt に格納する。
 サンプルコードは以下の通り。

!------------------------------------
! calculate mean slp for each month
! CAUTION! PERIOD is strictly determined by NOAA
! FROM 1981 to 2010(この期間で各月の平均を計算)
! 計算する期間の条件はif文で定義する。
! 赤字部分は自分で記述すること。
!------------------------------------
      do i=1,12
      mslpt(i)=0; mslpd(i)=0 ! ゼロリセット
      do j=1,72
      if(
ここに1981年~2010年のみで以下の計算を行うという条件を書く)then
      mslpt(i)= !
タヒチの気圧の合計を計算する
      mslpd(i)= !
ダーウィンの気圧の合計を計算する
      endif
      enddo
      mslpt(i)= !
年数で割ってタヒチの気圧平均値を求める
      mslpd(i)= !
年数で割ってダーウィンの気圧平均値を求める
      write(*,*)'k=',k,'mslpd=',mslpd(k)
      write(*,*)'i=',i,'mslpt=',mslpt(i)
      enddo





(b)海面気圧の偏差
 次に各データの平均値からのずれ(偏差)を求める。


 
偏差=各月の気圧 ー 各月の平均値           ------(2)

 各月の偏差は、変数aTah,aDar に格納する。
 サンプルコードは以下の通り。


!------------------------------------
! calculate SLP deviation from mean
! 各データから上で求めた平均の気圧を引く
!------------------------------------
      do i=1,12
      do j=1,72
      aTah(i,j)
=タヒチ海面気圧の偏差を計算
      aDar(i,j)=ダーウィン海面気圧の偏差を計算
      enddo
      enddo

      write(*,*)" "
      write(*,*) "SLP Anomaly @ Darwin"
      do j=1,72
      write(*,100) iyear(j),(aDar(i,j),i=1,12)
      enddo
      write(*,*)" "
      write(*,*) "SLP Anomaly @ Tahiti"
      do j=1,72
      write(*,100) iyear(j),(aTah(i,j),i=1,12)
      enddo






(c)
海面気圧の標準偏差

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

標準偏差は、変数sTah,sDar に格納する。
サンプルコードは以下の通り。




!------------------------------------
! calculate SLP STANDRAD DEV
! アノマリーの二乗和をデータ数で割り、平方根を取る。
!一気には計算できないので、まず偏差の二乗和を計算する
!次にデータ数で割ること。
!------------------------------------
      sTah=0; sDar=0; icount=0
      do j=1,72
      if(ここに1981年~2010年のみで以下の計算を行うという条件を書く)then
      do i=1,12
      sTah=sTah+ !二乗和の計算
      sDar=sDar+ !二乗和の計算
      icount=icount+1
      enddo
      endif
      enddo

!  ここで標準偏差を最終的に計算している
      sTah=
平方根の関数sqrtを使って記述。
      sDar=平方根の関数sqrtを使って記述。

      write(*,*)" "
      write(*,*) "Standard dev. of SLP @ Tahiti=",sTah
      write(*,*) "Standard dev. of SLP @ Darwin=",sDar
      write(*,*) "icount=",icount





(d)海面気圧の標準化

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




!------------------------------------
! Normalized SLP @ Darwin and Tahiti
! アノマリーを上で求めた標準偏差で割って正規化する。
!------------------------------------
      wirte(*,*) "Normalized SLP@ Tahiti"
      do j=1,72
      do i=1,12
      nTah(i,j)= !アノマリーを標準偏差で割る
      nDar(i,j)= !アノマリーを標準偏差で割る
      enddo
      !write(*,100) iyear(j),(nTah(i,j),i=1,12)
      enddo


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