結論:以下の図が描けます.
(アニメーションはわかりやすさのために別の処理を行ったものです.)
3次元の分布データに対し,周辺化した3つの2次元分布,3つの1次元分布の密度関数を図示しました.
内容
MATLABにはscatterhist
という便利な関数があります.
scatterhist 周辺ヒストグラムをもつ散布図
2次元の分布データを渡すと,散布図を描いてくれる上にそれぞれの変数に対して周辺化したヒストグラムも併記してくれます.オプションをつけると密度推定した密度関数としても描画してくれます.
研究テーマの中で,3次元空間に対してこれができるとうれしいな,と思い立ちましたが,ちょっと調べた感じだと出来合いの関数は無さそうです.
ので,作りました.MATLABのFileExchangeで公開済みです.
scatter3mpdf
名前のmpdfはMarginalized Probaibility Distribution Function(周辺化確率密度関数)の頭文字です.
やったこと
- 入力を3つの次元それぞれのデータベクトル
x, y, z
として,scatter3
で散布図を描く.この時各軸の範囲を保存しておく. - デフォルトの設定で見て奥の方の平面に,1つの次元を周辺化した2次元の度数分布を求める.度数分布を求めるのは
hist3
,色付き平面を描画するのはpcolor
とsurf
の組み合わせ. - 1つの変数に周辺化した(1つの変数のみ取り出せばよい!)確率密度関数を
ksdensity
(カーネル密度推定)で求めた.ヒストグラムを書きたかったけれども描画が面倒なので断念.
オプション
- ecdf(経験的累積度数関数)を描画できるようにしました.オプションで設定可能です.
- 1次元の密度関数を図示する幅を設定できます.少し狭くするとこんな見た目になります.
公開場所
MATLAB FileExchangeで公開中です.(大事なことなので繰り返し)