GIS実習オープン教材の学習(その16)

今回は、第9回点データの分析の課題3(カーネル密度推計)を行います。
参考URLは、以下になります。
https://gis-oer.github.io/gitbook/book/materials/tasks/t_14.html

課題の内容

今回の課題を以下に示します。

大阪市内の保育施設のデータ(kindergarden.shp)を用いて、カーネル密度分析を実行してください。また、カーネル密度推計について、バンド幅を広くとったカーネルと狭くとったカーネルによる分析結果の違いについて300字程度で回答してください。

第9回・点データの分析課題3· GIS実習オープン教材

カーネル密度推計とは、いくつかの標本点を使って特定の影響関数なし(ノンパラメトリック)で、全体の分布を推定したものといえます。
Wikipediaでは、以下のように説明されています。

出典元:Wikipedia カーネル密度推定

上図は、標本点が6か所(-2.1、-1.3、-0.4、1.9、5.1、0.2)で、バンド幅(標本点からの片側の影響範囲)が1.6程度だと思われます。
標本点から”バンド幅”を使ってヒストグラムを作成(赤点線)し、それらの総和を作成(青実線)します。
一旦バンド幅を使って平滑化(赤点線)した後、更に平滑化しているため完成したカーネル密度推計(青実線)は、非常に滑らかな図(曲線)となります。

カーネル密度推計のもう少し詳しい概要説明は、下記サイトを参考にしてください。

課題の実施

それでは、課題に取り組みましょう。手順は以下となります。
1.データの確認とQGISへの読み込み
2.バンド幅(半径)500mでカーネル密度推計の実施
3.バンド幅250m、1,000mでカーネル密度推計の実施
4.バンド幅による結果の違いについて考察

1.データの確認とQGISへの読み込み
今回の課題では、大阪のシェープファイルの以下のデータを使用します。
・kindergarten.shp(大阪市の幼稚園、保育所データ、510件)
上記ファイルをQGISへ読み込みます。毎度ですが、エンコーディングはUTF-8としてください。
以下のような地図が表示されるはずです。

QGISにkindergarten.shpを読み込んだ状態

2.バンド幅(半径)500mでカーネル密度推計の実施
カーネル密度推計(以降、ヒートマップと呼びます)を実行するためには、ツールボックスからヒートマップ作成を指定し、バンド幅と反映単位であるピクセル数を指定して実行します。
手順は、メニューの[プロセシング]、[ツールボックス]を選択するか、ツールボックスアイコン(下図)を選択すると、画面右にドッキングした形で”プロセシングツールボックス”が表示されます。

ツールボックスアイコンを指定

プロセシングツールボックスから、メニュー一覧の下にある[内挿]、[ヒートマップ(カーネル密度推定)]を選択(ダブルクリック)すると、”ヒートマップ(カーネル密度推定)”ダイアログが表示されます。

ツールボックスから[内挿]、[ヒートマップ]を指定

ヒートマップダイアログから以下の指定を行い”実行”ボタンを押下します。
・点レイヤ:kindergarten
・半径:500メートル
・ピクセルサイズX:20
・ピクセルサイズY:20

ヒートマップダイアログでパラメータを指定

実行が成功すると、以下のように新規のラスタレイヤとしてヒートマップが追加表示されます。

作成されたヒートマップ

デフォルトで作成された地図(ラスターレイヤ)は、黒くて判別しにくいので、別な色を設定してみましょう。
レイヤの”プロパティ”を以下のように指定して”適用”ボタンを押下します。
・レンダリングタイプ:単バンド疑似カラー
・最小:0(デフォルトはマイナス値が設定されていると思います。)
・補間方法:離散(範囲内は同じ色)
・分類モード:等間隔分類

レイヤプロパディを設定

表示される地図は、以下のようになります。先ほどの黒い地図とは色のパターンが逆ですが、見やすくなっていると思います。

緑のグラデーションで表現したバンド幅500mのヒートマップ

3.バンド幅250m、1,000mでカーネル密度推計の実施
同様にして、バンド幅250メートル、1,000メートルのヒートマップを作成します。

バンド幅250mのヒートマップ
バンド幅1,000mのヒートマップ

1,000mのヒートマップ作成中に少し気になったことがありましたので記載しておきます。下図の赤丸部分のように、明らかに点が密集しているにも関わらず、ランキング色が塗られない場合がありました。
これは、該当箇所がランキングの最大値(9.25702)を超えていると思われますので、プロパティ画面から最大値(この場合、10くらいに設定)を変更することで、解消できます。

ランキング色が塗られずに色ぬけしたヒートマップ

4.設問への回答
設問は、”バンド幅を広くとったカーネルと狭くとったカーネルによる分析結果の違い について300字程度で述べよ”でした。
この回答を作成するにあたって、最初に以下の地図を作成してみました。
・大阪市の区を65歳未満の人口でランキング表示
・その上にバンド幅1,000mのヒートマップを重ね合わせ
・さらに実際の保育施設を重ね合わせ

バンド幅1,000mを評価するための地図

65歳未満の人口とヒートマップの濃い部分がおおむね重なっていることがわかります。あくまで分析結果ではありますが、北区が少し保育施設が足りないかも?ということも直感的にわかります。
以下のような記事もありました。

同様に、250mのヒートマップを評価のため同様の地図を作成してみます。

バンド幅250mを評価するための地図

保育施設の点情報と大差ありませんね。カーネル密度推計によるデフォルメ効果が得られていない感じです。
バンド幅による違いをより明確にするため、バンド幅3,000mのヒートマップも評価してみましょう。

バンド幅3,000mを評価するための地図

この地図は、250mのヒートマップよりは有意のように思われますが、住之江区の保育施設の集まりが着色されていなかったりしており、ちょっとデフォルメされ過ぎのように思われます。

さて、結論ですが、以下のような回答を作成してみました。

ヒートマップは、標本点の密集度をデフォルメ表示した地図で、デフォルメの度合いをバンド幅として定義している。
このことから、バンド幅を広くし過ぎると1つの標本点の影響範囲が広がり強いデフォルメが起こって密集度の地図表現が広く薄くなってしまう。逆にバンド幅を狭めすぎると、標本点相互の影響が薄くなるため密集度の地図表現が狭く標本点と大差ないものとなってしまう。
これらの地図では、ヒートマップの本来の目的である標本点の適切なデフォルメによる直感的に理解しやすい濃淡表現が満たされなくなってしまう。
バンド幅を適切な距離で設定すれば、標本点相互が適度に影響を与えあうヒートマップが作成できる。

まとめ

ここまで、以下を学習しました。

  • カーネル密度推計の概要理解
  • ヒートマップの作成
  • バンド幅の異なるヒートマップの得失評価

ヒートマップの存在は知っていましたが、今回初めて作成しました。
私の担当業務は、地図を高速で表示したり地図上にリアルタイムな情報を表示したり するシステム開発や保守ですので、分析とは無縁でした。
ヒートマップは、バックグラウンドに何らかの計算モデルがあるわけではない(ノンパラメトリック)ので、正直、誰がどんな目的で使うのかなという疑問が湧いています。