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 |
ダーウィンの海面気圧も同様に標準化すること。 |