※1 回目~7 回目のプログラムは下記アドレスに添付にて送ること. その

情報処理概論Ⅰ 6・7 回目
「簡単な統計処理を行う」
2011 年 5 月 26 日および 6 月 2 日
溝端
1.今回と次回の内容
前回と同様,3 列目の CTD 塩分値を使って,簡単な統計処理を行ってみる.
5 月 26 日の目標は平均値,分散,標準偏差(シグマ)の算出.
6 月 2 日の目標はある水深の範囲,かつ平均値±シグマ以内のデータの抽出.
※1 回目~7 回目のプログラムは下記アドレスに添付にて送ること.
そのときの注意事項は,
件名:「2011 情報処理概論 学籍番号 名前」 とすること.
メールアドレス:[email protected]
2.平均値(5 月 26 日)
前回使った「DO ループ」を使用する.平均値は言うまでもなく,
「合計(総和)/データ数」
で計算され,前回はデータの合計を行っているのでかなり簡単なはず.
3.分散・標準偏差 (5 月 26 日)
標準偏差は分散の平方根なので,分散の計算がわかっていればよい.分散は「平均か
らどれだけ離れているか」というデータの散らばり具合の指標である.まず残差平方
和を求め,さらに分散を計算する.残差平方和とはその名の通り,(データ-平均値)
の 2 乗の総和である.分散を求めた後はその平方根を求めるだけで,標準偏差が求ま
る.
残差平方和
分散
塩分値
塩分平均値
残差平方和
標準偏差
---(1)
---(2)
データの個数
---(3)
分散
数式にするとかなりあっさりする.(1)式を DO ループで制御してやればよい.
(2)式の「データの個数」であるが,データの総数である「n」を代入する場合と「n-1」
を代入する場合では意味が異なる.前者では得られた分散を「標本分散」
,後者では得
られた分散を「不偏分散または母分散」という.
不偏分散により(3)式から得られるものは,標準誤差と呼ばれる.詳しくは統計の教科
書に譲る.
5 月 26 日のお題は平均値および(1)~(3)を求めるプログラムを書くこと.
1
情報処理概論Ⅰ 6・7 回目
「簡単な統計処理を行う」
2011 年 5 月 26 日および 6 月 2 日
溝端
(5 月 26 日分のヒント)
1)残差平方和の計算
平均値はすでに計算され,変数 heikin に代入されているとする.
新たな変数を宣言する.残差平方和なのに
real(8) bunsan
bunsan としているのは,残差平方和を後で使う
do k=1,ic
のではなく,分散が保存できていればいいから.
bunsan=(csal(k) – heikin)**2
enddo
**2で二乗を表す.
4.標準偏差によるデータの品質管理(6 月 2 日)
標準偏差はデータのばらつきを表す指標であり,データの品質管理を行う際に用いる.
25
20
頻度
15
500-1000m水深における
塩分データの頻度分布
確率密度分布はある程度
正規分布に従う.
例えば
平均±1シグマ※の
範囲のデータだけを
抽出するなど
頻度が少ないデータは
確率的に怪しいとして
データから排除する
場合がある.
※シグマとは前に
求めた標準偏差のこと
10
5
0
図1:500~1000m 水深の塩分データのみを抽出し,頻度分布を描いたもの.点線はデー
タの確率密度分布.ある程度は正規分布している.シグマ(σ)とは標準偏差のこと.
2
情報処理概論Ⅰ 6・7 回目
「簡単な統計処理を行う」
2011 年 5 月 26 日および 6 月 2 日
溝端
図 2:正規分布曲線の例.95%は
平均値±2σに入る.例えば,平
均値から 2σ以上離れているもの
を異常値として扱い,排除するな
どして,データの品質管理を行
う.ちなみに2σ,3σというの
は自分がデータのばらつきをど
こまで許容するかで決定する.
参照:http://homepage1.nifty.com/QCC/sqc2/gauss3.gif
6 月 2 日のお題は
① まず水深 500~1000m の CTD 塩分値だけ抽出する.
② ①で抽出した塩分値から平均値・標準偏差(シグマ,もしくはσ)を求める.
③ ①で抽出したデータから,平均±2σのデータのみの抽出を行う.
の 3 点.
(6 月 2 日分のヒント)
1)
水深 500~1000m の CTD 塩分値を抽出したいので,まずは抽出した CTD 塩分値
のための変数を宣言する.
real(8) csal2(345) ←
本当は 345 個入る変数は必要ないが,いくつあるのかわから
ないのでとりあえず最大値にしておく.
2)
DO ループと IF 文で,指定した水深のデータを抽出する.
ic2=1
do k=1,ic
if(dpt(k).○○.500.and.dpt(k).□□.1000)then
csal2(ic2)=csal(k)
変数 dpt が 500 以上で 1000 以下
という条件文を書く
ic2=ic2+1
endif
enddo
a) ○○,□□の部分は前回の資料から調べてみること.
b) 変数 ic2 は csal2 に新しく書き込む毎に一つずつ増えていく.概念図は
次ページにある.コンセプトは 2 回目の時に説明した,
「もうひとつの
ファイルの読み方」と同じ.
3
情報処理概論Ⅰ 6・7 回目
「簡単な統計処理を行う」
2011 年 5 月 26 日および 6 月 2 日
溝端
c) 「変数宣言していないのになぜ ic2 が使えるのか?」という疑問は抱か
な い だ ろう か ?こ れは暗 黙 の 型宣 言 とい うもの で あ る. 頭 文字 が
i,j,k,l,m,n の場合は,整数型の変数だというルールがある.
3)
抽出した CTD 塩分値である変数 csal2 の平均値・標準偏差(σ)を求める.
前回やった残差平方和~標準偏差を求める方法を応用すればよい.
4)
また DO ループと IF 文を使って,平均値±2σの範囲内のデータを抽出する.
4