Rで解析:極値統計解析「extRemes」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

extRemes」パッケージはブロック最大値の一般化極値分布 (GEV) や閾値超過の一般化パレート分布 (GPD) を中心に、 依存性診断・非定常モデル・リスク評価まで ワンストップで提供する極値統計解析パッケージです。

パッケージバージョンは2.2-1。実行コマンドはR version 4.5.0で確認しています。

対象読者:風水害リスク評価、金融 VaR、 品質管理など「滅多に起こらない大きな値」を 定量化したい統計解析者・データサイエンティスト。


スポンサーリンク

インストールと読み込み

下記、コマンドを実行してください。

# パッケージのインストール
install.packages("extRemes")

# パッケージの読み込み
library("extRemes")

主な機能と代表的関数

詳細はパッケージのヘルプを確認してください。

区分関数概要
モデル当てはめfevd()GEV / GPD / PP モデルを推定
診断プロットplot.fevd()QQ・PP・RL など 10 種類を自動描画
リターンレベルreturn.level(), erlevd()再現期間に対応する極値を計算
閾値選択mrlplot(), threshrange.plot()平均残余図/閾値範囲プロット
依存性診断taildep(), extremalindex()末端依存度 χ・極値指数 θ
クラスタリングdecluster()POT の連続超過を独立化
非定常モデルlocation.fun などGEV/GPD パラメータを共変量でモデル化
シミュレーションrextRemes()フィット済みモデルから乱数生成

1 – ブロック最大値から GEV モデル

# 例:年最大気温データ
data(PORTw)               # パッケージ同梱データ
z <- PORTw$TMX1           # 冬季日最高気温の年最大値

# 極値分布(EVD)をデータに当てはめる
fit_gev <- fevd(z, type = "GEV", units = "deg C")

# パラメータ推定値
summary(fit_gev)          
[1] "Estimation Method used: MLE"
 Negative Log-Likelihood Value:  172.7426 
 Estimated parameters:
  location      scale      shape 
15.1406132  2.9724952 -0.2171486 
 Standard Error Estimates:
  location      scale      shape 
0.39745119 0.27521741 0.07438302 
 Estimated parameter covariance matrix.
            location       scale        shape
location  0.15796745  0.01028664 -0.010869596
scale     0.01028664  0.07574462 -0.010234809
shape    -0.01086960 -0.01023481  0.005532834
 AIC = 351.4853 
 BIC = 358.1438 

# QQ・PP・RL など診断図をプロット
plot(fit_gev)             

2 – 閾値超過 (POT) と GPD

# 例:年最大気温データ
data(PORTw)               # パッケージ同梱データ
z <- PORTw$TMX1           # 冬季日最高気温の年最大値

# 欠損を除去
z_cln <- na.omit(z)

# 超過数を見ながら閾値を決める
mrlplot(z_cln)             # 平均残余図
u <- quantile(z_cln, 0.95) # 95パーセンタイルなど

# 3) 推定
fit_gpd <- fevd(
  z_cln,
  threshold  = u,
  type       = "GP",
  time.units = "365.25/year",
  method     = "MLE",
  use.phi    = TRUE)

# 4) 診断プロット
plot(fit_gpd, type = "rl")


実行例(オリジナルデータ)

乱数 rgev() を用いて 500 サンプルを作成し、 GEV へのフィットと 100 年リターンレベルを推定しています。 実データに置き換えれば同じフローで極値リスクを評価できます。

# --- 擬似データを生成して GEV フィット ---
set.seed(20250519)

# evdパッケージの読み込み
# evdパッケージがなければインストール
if(!require("evd", quietly = TRUE)){
  install.packages("evd");require("evd")
}

sim <- rgev(500, loc = 0, scale = 1, shape = .2)

fit_sim <- fevd(sim, type = "GEV")
return.level(fit_sim, return.period = 100)

plot(fit_sim, "rl")        # 100 年 RL と 95% CI を確認

よくあるエラーと対処法

症状原因解決策
Error: Optimization failedパラメータ初期値が不適切control=list(init.pars = …) で手動初期値を設定
Non-finite values in mrlplot欠損値や Inf を含む前処理で na.omit() 等を適用
RL 図の CI が極端に広いサンプルサイズ不足/閾値が低すぎデータ期間を延ばす or 閾値を見直す

おわりに

extRemes を使えば モデル当てはめ → 診断 → リスク評価 → シミュレーション を 一気通貫で行えます。 気候変動インパクト評価やインフラ設計基準の策定など、 「想定外」を定量化したいプロジェクトでぜひ活用してみてください。


少しでも、あなたの解析が楽になりますように!!

タイトルとURLをコピーしました