Rで解析:最適なビン幅・バンド幅を自動選択する「sshist」パッケージの紹介
密度分布を推定する際、ヒストグラムや核密度推定の「幅」を決めるには経験則に頼りがちですが、それを統計的に最適化したい場面があります。本パッケージは、島崎・篠本法を実装し、期待される誤差を最小限にする最適なパラメータを一括で計算してくれます。これにより、時系列データの変動率推定やデータの内在的な構造を探る作業が格段にスムーズになります。さらに OpenMP を活用した C++ バックエンドを採用しているため、大規模なデータでも高速に計算可能です。
パッケージバージョンは0.2.4。Windows 11 x64 (build 26200)のR version 4.6.1で確認しています。
<おすすめのRに関する書籍です>
Rユーザのためのtidymodels[実践]入門〜モダンな統計・機械学習モデリングの世界
著者: 松村 優哉, 瓜生 真也, 吉村 広志
パッケージのインストール
下記コマンドを実行してください。
# パッケージのインストール
install.packages("sshist")
# パッケージの読み込み
library("sshist")
# コマンド例実行で必要なパッケージを読み込み
library("ggplot2")スポンサーリンク
コマンド例
詳細はコメント、パッケージのヘルプを確認してください。
正規分布データに対する最適な二次元ビン数の推定と可視化:sshist_2dコマンド
| オプション | 意味 | 初期値 |
|---|---|---|
| x | 数値ベクトル、または2列の行列・データフレーム。X座標を指定 | |
| y | 数値ベクトル。Y座標を指定(xが行列の場合は無視) | NULL |
| n_min | 整数。軸あたりの最小ビン数を指定 | 2L |
| n_max | 整数またはNULL。軸あたりの最大ビン数を指定(データ解像度の限界と標本サイズにより自動的に制限される) | 200L |
# 乱数のシード値を設定する
set.seed(42)
# 正規分布からサンプルデータを生成する
x <- rnorm(500)
y <- rnorm(500)
# sshist_2d を実行して結果を格納する
res <- sshist_2d(x, y)
# 結果をヒートマップとしてプロットする
plot(res)
# ggplot2でプロット
ggplot(data.frame(x = x, y = y), aes(x, y)) +
# 最適化されたビン数を設定してヒートマップを描画する
geom_bin2d(bins = c(res$opt_nx, res$opt_ny)) +
# ビンの色を Viridis カラースケールで表現する
scale_fill_viridis_c() +
# グラフのタイトルを設定する
ggtitle(sprintf("Optimal 2D Bins: %dx%d", res$opt_nx, res$opt_ny)) +
# テーマを最小限に設定して描画する
theme_minimal()・結果をヒートマップとしてプロットする

・ggplot2でプロット

<おすすめのRに関する書籍です>
Rをはじめよう生命科学のためのRStudio入門
AmazonでAndrew P. Beckerman, Dylan Z. Childs, Owen L. Petchey, 富永 大介のRをはじめよう生命科学のためのRStudio入門。アマゾンならポイント還元本が多数。
この記事が誰かの役に立ちますように。
スポンサーリンク