確率雨量シリーズでは,これまで対数正規法,高瀬法(積率法)および岩井法で確率雨量を求めました. シリーズ最終回となる本記事ではガンベル・チャウの方法を紹介したいと思います. ・対数正規法 ・高瀬法(積率法) ・岩井法 ・ガンベル・チャウの方法
【確率雨量】シリーズ一覧
【確率雨量】100年に1度の大雨ってどうやって計算しているの? ―第1回 対数正規法― 【確率雨量】100年に1度の大雨ってどうやって計算しているの? ―第2回 高瀬法(積率法)― 【確率雨量】100年に1度の大雨ってどうやって計算しているの? ―第3回 岩井法― 【確率雨量】100年に1度の大雨ってどうやって計算しているの? ―第4回 ガンベル・チャウの方法―
正直,筆者はこの方法の名前をあまり聞いたことがありません. ガンベル・チャウ(Gumbel・Chow)は,非対称分布に関する解析が,どの方法でも次式で与えられることを示したそうです.
ただし,
\(K_{G}\)は度数係数と呼ばれるそうです.
一つ確かなことは他の方法(対数正規法,高瀬法(積率法),岩井法)に比べて,計算がとても楽ということです. プログラムも短いです(むしろエクセル関数のみで事足ります).
計算に用いたデータおよび計算結果をエクセルシートにまとめています.
入力データはエクセルのC列2行目〜21行目(雨量データ)のみです.
計算結果はエクセルのV列〜X列に出力されます.
確率雨量シリーズ第3回(岩井法)の記事でも載せていますが,確率雨量の計算方法の結果は上図のようになります. こうしてみると,やっぱり岩井法だけが異質なのがわかりますね.
計算用エクセルファイルは下記URLからダウンロードできます. ご自由にお使いください. 1水文統計.xlsm
Option Explicit
Function FNE(x As Double)
FNE = Exp(-x ^ 2)
End Function
Function swap(ByRef val1 As Double, ByRef val2 As Double)
'2津の変数を交換する関数
Dim temp As Double
temp = val1
val1 = val2
val2 = temp
End Function
Function BubbleSort(ByRef Array1() As Double, ByVal N As Integer, ByVal SortDirection As String)
'変数の定義
Dim cnt As Integer, i As Integer, j As Integer, k As Integer
'変数の初期化
cnt = 1
'エラー防止
If SortDirection <> "descending" And SortDirection <> "ascending" Then
MsgBox ("引数に誤りがあります.")
End
End If
Select Case SortDirection
'昇順並べ替え
Case Is = "ascending"
k = N - 1
Do While k >= 0
j = -1
i = 1
Do
If Array1(i) > Array1(i + 1) Then
j = i - 1
Call swap(Array1(i), Array1(i + 1))
End If
i = i + 1
Loop While i <= k
k = j
Loop
'降順並べ替え
Case Is = "descending"
k = N - 1
Do While k >= 0
j = -1
i = 1
Do
If Array1(i) < Array1(i + 1) Then
j = i - 1
Call swap(Array1(i), Array1(i + 1))
End If
i = i + 1
Loop While i <= k
k = j
Loop
End Select
End Function
Sub Gumbel_Chow_Method()
'最終更新日:2020/7/19
'川村三郎:土木工学プログラム集 水文・水理1,森北出版,1984に準拠
'*********************プログラム起動時のメッセージを出力*********************
Debug.Print "ガンベル・チャウの方法"
Debug.Print Format(Date) & " " & Hour(Time) & "時" & Minute(Time) & "分" & Second(Time) & "秒(S.K)"; " 計算開始"
Worksheets("水文統計").Activate
Application.ScreenUpdating = False
'*********************変数の定義*********************
Dim N As Integer 'データ数Number
Dim TS As Double '再現期間の初期値Time Start(年)
Dim TE As Double '再現期間の最終値Time End(年)
Dim SY As Double '再現期間のキザミStep Year(年)
Dim m As Integer 'ξデータの数
Dim slct As Integer '入力データの種類(雨量or流出量)の判別用
Dim R() As Double '降水量データを格納する配列
'普遍定数など
Dim p As Double '円周率
Dim PL As Double 'ln10
'集計用変数
Dim k As Integer, i As Integer, cnt As Integer
'確率雨量全般に関する変数
Dim x As Double '式(1.2.4)の左辺のx,つまり,T年確率降水量
Dim t As Double '再現期間
'ガンベル・チャウの方法に固有の変数
Dim xm As Double '式(1.5.1)の第一項
Dim sigma As Double '式(1.5.1)の第二項のσ
Dim KG As Double '式(1.5.1)の第二項のKG 度数係数
'*********************定数などの定義*********************
m = 56 'ξデータの数
p = 3.14159 '円周率
PL = 2.30259 'ln10(10の自然対数)
'*********************データ数および計算条件の入力*********************
N = InputBox("降雨または流量のデータ数を入力してください.")
TS = InputBox("再現期間の初期値(年)を入力してください.")
TE = InputBox("再現期間の最終値(年)を入力してください.")
SY = InputBox("再現期間のキザミ(年)を入力してください.")
'*********************入力データの種類(雨量or流出量)の入力と計算条件の出力*********************
Do
slct = InputBox("雨量なら1を,流出量なら2を入力してください.")
If slct = 1 Then
Debug.Print "R:降雨(mm)"
ElseIf slct = 2 Then
Debug.Print "R:流出量(m3/s)"
End If
Loop Until slct = 1 Or slct = 2
Debug.Print "再現期間の初期値(年)TS="; TS; "(year)"
Debug.Print "再現期間の最終値(年)TE="; TE; "(year)"
Debug.Print "再現期間のキザミ(年)SY="; SY; "(year)"
Debug.Print ""
Debug.Print "ORIGINAL DATA"
Debug.Print "データ数N="; N
'*********************xmを求める*********************
xm = 0
For k = 1 To N
xm = xm + Cells(k + 1, 3)
Next k
xm = xm / N
'*********************σを求める*********************
For k = 1 To N
sigma = sigma + (Cells(k + 1, 3) - xm) ^ 2
Next k
sigma = Sqr(sigma / N)
Debug.Print "xm="; xm
Debug.Print "sigma="; sigma
'*********************計算結果用ラベル*********************
Cells(1, 22) = "ガンベル・チャウの方法"
Cells(2, 22) = "T(year)"
Cells(2, 23) = "KG"
Cells(2, 24) = "R(mm)"
'*********************度数係数KG求める*********************
cnt = 1
For t = TS To TE Step SY
If t <> 1 Then
KG = -6 ^ 0.5 / p * (0.5772 + Log(Log(t / (t - 1))))
x = xm + sigma * KG
Cells(cnt + 2, 23) = KG
Cells(cnt + 2, 24) = x
End If
Cells(cnt + 2, 22) = t
cnt = cnt + 1
Next t
End Sub
さて,この確率雨量シリーズもいよいよ最後のまとめになります. 記事の内容はいかがだったでしょうか? 筆者のブログ経験が乏しいため,読みにくい点も多々あったと思いますが,最後までお付き合いいただきありがとうございました.
今後も農業農村工学(農業土木)に関する記事をいろいろと執筆していきたいと思います. リクエスト等も受け付けておりますので,ご遠慮なく連絡ください. Twitterアカウント:エビぐんかん@6LxAi9GCOmRigUI メール:nnCreatorCircle@gmail.com
本記事の執筆にあたり,書籍の内容について紹介することを快く承諾いただいた森北出版の皆様と,何より書籍の著者である河村三郎先生には心より感謝いたします. 確率雨量シリーズの第1回でも紹介しましたが,本記事の執筆にあたり,以下の書籍を参考にしました.この場を借りて厚く御礼申し上げます. 本記事で公開するプログラムは河村先生の書籍に書かれているもの(Basic)を元に,筆者がVBAで書いたものです. ミスには細心の注意を払っておりますが,完璧を保証するものではありませんので,以下の書籍をお手元にご用意いただくことをお勧めいたします.
【確率雨量】シリーズ一覧
【確率雨量】100年に1度の大雨ってどうやって計算しているの? ―第1回 対数正規法― 【確率雨量】100年に1度の大雨ってどうやって計算しているの? ―第2回 高瀬法(積率法)― 【確率雨量】100年に1度の大雨ってどうやって計算しているの? ―第3回 岩井法― 【確率雨量】100年に1度の大雨ってどうやって計算しているの? ―第4回 ガンベル・チャウの方法―
河村三郎:土木工学プログラム集1 水文・水理1 実用プログラムとグラフィック表示,森北出版,1984 岩井重久,石黒政儀:応用水文統計学,森北出版,1970 石村園子:やさしく学べるラプラス変換・フーリエ解析 増補版,共立出版,2010
検索用Key Words: 確率雨量,確率降水量,降雨,降水,水文事象,水文学,水文統計学,降雨事象,水利施設,設計,確率水文量,水文諸量,超過確率,非超過確率,リターンピリオド(return period),T年確率値,事象値,Gumbel Chow,ガンベル・チャウ,ダム,河川堤防,防災,計算方法,解き方,プログラム,マクロ,やり方