「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
を使えば モデル当てはめ → 診断 → リスク評価 → シミュレーション を 一気通貫で行えます。 気候変動インパクト評価やインフラ設計基準の策定など、 「想定外」を定量化したいプロジェクトでぜひ活用してみてください。
少しでも、あなたの解析が楽になりますように!!