| Top Page |

点過程解析用プログラム ppa-r:pair correlation 関数を計算する

Updated on 29 November 2004

※なんらかの(確率的なばらつきを含んだ)規則にしたがって 点が配置されているとき,この規則を点過程と呼びます. このページは,統計数理研究所の島谷健一郎さんが日本生態学会誌に書かれた 点過程についての総説を勉強して作成しました(末尾の参考文献を参照). もちろん,本ページ中のまちがいはすべて私の責任です. 詳しいことは島谷さんの総説をごらんください. とくに自分でこの解析法を試してみようというかたはぜひご一読を.

Pair correlation 関数とは

自然界で観察される分布パターンの背景に,どのような規則があるのかを 知りたいことがあります. そんな時,分布パターンの特徴をあらわすような定量的な指標があると便利です. そうした指標のひとつが pair correlation 関数 です. pair correlation は,平面上に配置された点のうち任意のひとつからまわりを見回したとき, ある距離はなれたところのほかの点のこみ具合を表すものです. 距離に対応して値が決る一種の関数なので,pair correlation 関数と呼びます. 点が集中しがちなら,個々の点の近くには平均よりも高い密度でほかの点がみつかるし, 点同士が排斥しあっているなら,点の近所の点密度は平均よりも低くなるはずです.

この関数の値を求めるには,まず,平面上のひとつひとつの点を中心にして, そこから距離 r の円周上の点の密度を調べます. その結果をすべての点について平均化して,任意の点から 距離 r のところの平均的な点密度を求めます. これを平面全体の点密度で割って標準化したものが pair correlationです.  全体の平均と同じなら 1, 平均より点の密度が低ければ 1 より小さい値(最低が 0), 平均よりも点が密にあるならば 1 より大きい値(上限はない)値が得られます. r を変えながら pair correlation を計算すれば, pair correlation 関数が得られます.

ところで,距離 r の円周上といっても,ぴったり r だけ離れたところに他の点が ある確率は限りなくゼロに近いので,距離にある幅を持たせたドーナッツ状の 面内の点の密度を求めます.このとき,r からの離れぐあいに応じた重みづけをします. 重みづけに使う関数は距離 r のところで極大となるような上に凸の二次関数です. この式は Epanechnikov kernel と呼ばれます.

適当なドーナッツの幅は点の密度によります.点の密度が低いのに幅が細すぎると, ほとんど点が引っかかってこなくなります.いっぽう,やたらと幅を広くすると 解像度が低くなります.実用上は,0.1 / (平均点密度の平方根) から 0.2 / (平均点密度の平方根) ぐらいが適当だとされているようです.

実際に観察されたデータは,ふつう有限の大きさの調査区内のものです. 区画の縁に近いところの点から見ると,距離 r の円周のかなりの部分が 区画の外に出てしまいます.縁の近くの点は解析対象にしないというのは ひとつの対処方法ですが,これではせっかくのデータ(と情報量)を捨てて しまうことになり,もったいないです. そこで,縁近くの点についても補正をして計算に組み込む方法がいろいろ 工夫されているます(たとえば Ohser の補正など. くわしいことは島谷さんの総説をご覧ください).

Pair correlation から分かること

pair correlation 関数は,点の分布が集中しているか,相互排除的か,ランダムかなどを 見分けるのに使えます.さらに,2種類以上の点のあいだの関係を調べるのにも使えます. たとえば,2種類の植物がまざってはえている場合,一方の種の個々の個体に 視点をおいて,距離 r のところの_他方の_種の密度を計算すれば, お互いに無関係なのか,排斥しあっているようなパターンなのか,それとも 同じところに集まっているのか,といった傾向を読み取ることができます.

点の分布データから pair correlation の値を計算して, ぴったり 1.0000なんてことはまずありえず,1 より大きかったり小さかったりするでしょう. そのずれが,なんらかの規則を反映したものなのかどうかが知りたくなります. まずは,単純な規則(たとえばすべての点はランダムに,たがいに無関係に配置されている) にしたがって生成される点の分布パターンから計算した pair correlation 関数が, どの程度の範囲のばらつきを持つかを計算してみましょう. データから計算した値が,このばらつき範囲からはずれていたら,想定した単純ルール (たとえばランダム)とは違う,なんらかのルールが存在する可能性が高いと考えられます. ランダムな分布を多数生成して,その pair correlation 関数の値の範囲を調べた例も載せました のでご覧ください.

※偶然では説明できなパターンがあったとして,ではその背景にある規則はなにか, というのはそれぞれの研究対象に応じて研究者が仮説をいろいろ考え,検証していく べきことです.pair correlation 関数はそこまでの答えは用意してくれません.

他の指標と比べて

これまでにも,調査地をさまざまな大きさの区画に分けてその中に 含まれる点の数から点の分布パターンを表す指標を計算する手法が いくつか提案され,使われてきました. こうした手法と比べて,点過程解析は,区画の切り方に依存せずに すべての点の位置関係を利用して分布の特徴を抽出するという特徴があります. つまり,むだに情報を捨てないし,区切り方の恣意性の影響を受けません.

pair correlation 関数のほか,点の空間分布パターンの特徴を定量的に表現する 関数に L 関数というものがあります.これは,「距離 r のあたりの点の密度」 ではなく,「距離 r 以内の範囲の点の密度」を表現するものです. pair correlation のほうが局所的な値, L 関数のほうが積算的な値です. 小さいスケールの集中分布がある場合,pair correlation 関数ならその分布斑の中では 高い値を示すけれど,その外に出てしまえばただちに低い値になります. いっぽう,L 関数は距離 0 からの積算なので,分布斑の大きさより遠くまで離れても, 円内に含む分布斑の影響を引きずることになります.

Pair correlation 関数の計算プログラム

島谷さんの総説を読んだ私は,まず L 関数を計算するプログラム ppa-L を 書いて公開しました(L 関数計算プログラムのページ). その後,もっと高い解像度でパターンを抽出できる pair correlation 関数の計算プログラム ppa-r も書いてみました. プログラムのソースファイルと,Windows 用バイナリ(実行ファイル)ppa-r.exe を公開します.

ppa-r は,ppa-L と同様,C++ で書いています. L 関数にしろ pair correlation 関数にしろ,点相互の距離を調べていくので, 点数の二乗に比例して計算量が(そして計算時間が)かかります. つまり,1000点の計算時間は,100 点の場合の100倍かかります. 実用的な範囲内の所要時間ですこしでも多くの点数でも計算できるように, スクリプト言語などではなく C++ での実装を選びました.

各ページへ

以下のページは作成予定ですがまだ作ってません.

参考文献

参考 URL

2000年の生態学会47回大会での自由集会 「計算生態学」 (企画者:久保拓弥さん) で,名波哲さんがL関数を使って樹木の分布パターンを解析した結果を 紹介されています.そのときの 発表資料 も参考になります.