地理空間加重回帰分析(Geographically Weighted Regression)(GWR) (空間統計解析)
図
使用法
-
地理空間加重回帰分析(GWR)では、各ターゲット フィーチャのバンド幅内にあるフィーチャの従属変数と説明変数を組み込んだデータセットにあるすべてのフィーチャについて、個別の方程式が構築されます。バンド幅の形状と範囲は、[カーネル タイプ]、[バンド幅手法]、[距離]、および [近傍数] の各パラメータに対するユーザ入力に依存しますが、これには 1 つの制約があります。近隣のフィーチャ数が 1000 を超えると、各局所方程式には最近隣の 1000 個だけが組み込まれます。
-
最善の結果となるよう、GWR は、数百のフィーチャを伴うデータセットに適用してください。この手法は、小さなデータセットへの使用には適していません。このツールをマルチポイント データに使用することはできません。
-
GWR ツールでは、出力フィーチャクラス、およびツール実行サマリ レポートの診断値が格納されたテーブルも生成されます。このテーブルの名前は、出力フィーチャクラス名の末尾に「_supp」を追加して自動生成されます。出力フィーチャクラスは、残余をモデリングできるよう、自動的に、ホット/コールド レンダリング方式が適用された状態で、コンテンツ ウィンドウに追加されます。各出力の詳細な説明については、「GWR 結果の解釈」をご参照ください。注意:
GWR ツールでは、各種出力を生成できます。[結果] ウィンドウのメッセージ項目を右クリックし、[表示] を選択すると、GWR ツール実行サマリ レポートが表示されます。
出力フィーチャクラスをフィーチャ データセット内で作成しない限り、_supp ファイルは常に出力フィーチャクラスと同じ場所に作成されます。出力フィーチャクラスがフィーチャ データセット内にある場合、_supp テーブルはフィーチャ データセットを含むジオデータベースに作成されます。
-
常に投影データを使用することを推奨します。特に、距離が分析の要素になっている場合には、[カーネル タイプ] に [FIXED] を選択すると、GWR にとっても距離が成分となるため、重要です。データの投影には、(地理座標系ではなく)投影座標系を使用することを強く推奨します。
-
GWR ツールによる計算の中には、パフォーマンス向上のために複数の CPU を利用するものもあり、この場合は自動的に最大 8 つのスレッド/CPU が処理に使用されます。
回帰分析は、必ず Ordinary_Least_Squares(OLS: 最小二乗法)から始めてください。まず、正しく指定した OLS モデルを特定したうえで、同じ説明変数を使って GWR を実行します(別の空間様式を表す「ダミー」の説明変数は除外します)。
-
従属変数と独立変数は、さまざまな値を含む数値フィールドである必要があります。GWR をはじめ、線形回帰法は、バイナリの結果(従属変数のすべての値が 1 または 0 など)の予想には適していません
-
最小二乗回帰(OLS)などのグローバルな回帰モデルの場合、2 つ以上の変数が多重共線性を示している(2 つ以上の変数が重複しているか、一緒に同じ「ストーリー」を示している)結果は信頼することができません。GWR では、データセットの各フィーチャについて、局所的な回帰方程式が構築されます。特定の説明変数の値が空間的にクラスタリングしている場合は、局所的な多重共線性が問題となっている可能性が非常に高いといえます。局所的な多重共線性のために不安定な結果になっているかどうかは、出力フィーチャクラスの条件数で確認できます。原則として、条件数が 30 を上回っている場合、NULL に等しい場合、またはシェープ ファイルの場合であれば -1.7976931348623158e+308 に等しい場合の結果には信頼性がありません。
-
GWR モデルに名義/カテゴリ データを含める場合には、注意してください。カテゴリが空間的にクラスタリングしているようなときには、局所的な多重共線性の問題が生じるリスクが上がります。局所的な共線性が問題となっているかどうかは、GWR 出力に含まれている条件数からわかります(条件数がゼロ未満、30 超、または NULL に設定されている場合)。局所的な多重共線性が存在する場合の結果は安定していません。
-
GWR モデルでは、別の空間様式を表す「ダミー」の説明変数を使用しないでください(都心外の国勢調査地区に 1 という値を割り当て、それ以外にはすべて 0 という値を割り当てるなど)。GWR では、説明変数の係数が異なっていてもよいため、このような空間様式の説明変数が不要です。これを含めてしまうと、局所的な多重共線性の問題が生じます。
-
説明変数の係数にみられる地域的なばらつきについて理解を深めるために、GWR によって作成されるオプションのラスタ係数サーフェスを確認します。これらのラスタ サーフェスは、出力ラスタ ワークスペースを指定していれば、この中に作成されます。ポリゴン データの場合は、出力フィーチャクラスの各係数フィールドにグラデーションの色やコールドからホットまでのレンダリングを使用して、分析範囲全体における変化を確認できます。
GWR は、予測位置フィーチャクラス(多くの場合、このフィーチャクラスは入力フィーチャクラスと同じです)、予測説明変数(Prediction explanatory variables)、および予測フィーチャクラス出力(Output prediction feature class)を供給して、予測を行う場合にも使用できます。回帰モデルのキャリブレーションに使用するフィールド([説明変数] フィールドに入力する値)と予測に使用するフィールド([予測説明変数(Prediction explanatory variables)] フィールドに入力する値)は、1 対 1 で対応している必要があります。これらの変数は、必ず同じ順序にしてください。たとえば、制限速度、道路状況、車線数、車両数の関数として、交通事故をモデリングしているとします。制限速度と道路状況を変更した新しい変数を作成すれば、制限速度の変更や道路の改善が交通事故にどのような影響を及ぼす可能性があるかを予測できます。既存の変数は、回帰モデルのキャリブレーションに使用され、また [説明変数] パラメータにも使用されます。変更後の変数は、予測に使用されるもので、[予測説明変数(Prediction explanatory variables)] として入力します。
-
予測位置フィーチャクラスが指定されている一方で、[予測説明変数(Prediction explanatory variables)] が指定されていない場合は、各位置について計算された係数のみ(予測なし)で [予測フィーチャクラス出力(Output prediction feature class)] が作成されます。
-
重要な説明変数が欠けていると、回帰モデルの指定に失敗します。回帰残余の空間的自己相関が統計的に有意である場合や、1 つ以上の説明変数の係数に予期せぬ空間的なばらつきがある場合は、モデルの指定に問題がある可能性が考えられます。欠けている重要な変数が何であるのかを特定し、これらをモデルに含められるよう、(OLS 残余分析や GWR 係数差異分析などを通じて)あらゆる努力を行ってください。
-
常に、説明変数を非定常とすることが理にかなっているかどうかを疑ってみてください。たとえば、ASPECT をはじめとするいくつかの変数を関数として、特定の植物種の密度をモデリングしているとします。ASPECT 変数の係数が分析範囲全体で変化する場合には、重要な説明変数(優勢な競合する植物など)が欠けているという事実を示している可能性が高いといえます。あらゆる努力を行って、回帰モデルにすべての重要な説明変数を含めてください。
-
計算結果が無限または未定義の場合、シェープファイル以外の結果は NULL に、シェープファイルの結果は -DBL_MAX = -1.7976931348623158e+308 になります。
AICc または CV のバンド幅手法 を選択すると、GWR によって、最適な距離(FIXED カーネルの場合)または最適な近傍数(ADAPTIVE カーネルの場合)が特定されます。しかしながら、AICc と CV のバンド幅手法はどちらも、局所的な多重共線性の問題のために、最適な距離/近傍数の解を求めることができません。深刻なモデル設計上の問題を示すエラーが表示された場合は、特定の距離または近傍数を指定したうえで、出力フィーチャクラスの条件数を確認し、どのフィーチャが局所的な共線性の問題に関係しているのか確認してください。
-
局所的な共線性の問題のために、AICc と CV のバンド幅手法はどちらも、最適な距離/近傍数の解を求めることができません。深刻なモデル設計上の問題を示すエラーが表示された場合は、特定の距離または近傍数を指定したうえで、出力フィーチャクラスの条件番号を確認し、どのフィーチャが局所的な多重共線性の問題に関係しているのか確認してください。
-
深刻なモデル設計上のエラーや、局所方程式に十分な近傍数が含まれていないことを示すエラーは、多くの場合、グローバルまたは局所的な多重共線性の問題があることを示しています。どこに問題があるのかを判断するために OLS を実行して、各説明変数について VIF 値 を確認します。大きな VIF 値がある場合(たとえば 7.5 以上)、グローバル多重共線性によって GWR では解を導けなくなっています。しかし、もっと可能性が高いのは、ローカル多重共線性の問題です。各独立変数の主題図を作成してみてください。マップにより、同一の値の空間クラスタが明らかになった場合は、モデルからそれらの変数を除去すること、またはそれらの変数を別の説明変数と組み合わせて値のバリエーションを増やすことを検討します。たとえば、家屋の値をモデリングしているときに、寝室と浴室の両方について変数を設けている場合は、これらを組み合わせてバリエーションを増やすか、浴室/寝室の面積を表すものにするとよいでしょう。GWR モデルの構築時には、空間様式のダミー変数、空間クラスタとなっているカテゴリ/名義変数、可能性のある値が非常に限られている変数の使用を避けてください。
-
GWR は OLS と同じ要件の適用を受ける線形モデルです。GWR モデルを適切に指定できているかどうかの確認として、ドキュメント「回帰分析の基礎」の「回帰モデルがうまくいかない場合」をご参照ください。
シェープファイルを使用する場合は必ず、NULL 値を格納できないことを覚えておいてください。シェープファイルではない入力からシェープファイルを作成するツールやその他の手順では、結果的に NULL 値がゼロまたは非常に小さな負の値(-DBL_MAX = -1.7976931348623158e+308)として格納されることがあります。この場合、予期せぬ結果に至ることがあります。次もご参照ください。ジオプロセシングでのシェープファイル出力の注意事項.
構文
パラメータ | 説明 | データ タイプ |
in_features |
従属変数と独立変数を格納したフィーチャクラス。 | Feature Layer |
dependent_field |
モデル化しようとしている値を含む数値フィールドです。 | Field |
explanatory_field [explanatory_field,...] |
回帰モデルの独立説明変数を表すフィールドのリスト。 | Field |
out_featureclass |
従属変数の推定値と残差を受け取る出力フィーチャクラスです。 | Feature Class |
kernel_type |
カーネルを固定距離として構築するか、フィーチャ密度の関数として範囲の変化を許容するかを指定します。
| String |
bandwidth_method |
カーネルの範囲の決定方法を指定します。AICc または CV を選択すると、ツールによって、最適な距離/近傍のパラメータが特定されます。[距離] パラメータ([カーネル タイプ] が [FIXED] の場合)または [近傍数] パラメータ([カーネル タイプ] が [ADAPTIVE] の場合)に指定すべき値がわからない場合、通常は AICc または CV を選択します。[BANDWIDTH PARAMETER] を選択する場合は、[距離] または [近傍数] の値を明示的に指定する必要があります。
| String |
distance (オプション) |
カーネル タイプが [FIXED] で、バンド幅手法が [BANDWIDTH PARAMETER] の場合は常に、固定バンド幅または距離を指定します。 | Double |
number_of_neighbors (オプション) |
カーネル タイプが [ADAPTIVE] で、バンド幅手法が [BANDWIDTH PARAMETER] の場合に、ガウス カーネルの局所的なバンド幅に含める正確な近傍数を表す整数。 | Long |
weight_field (オプション) |
個々のフィーチャの空間ウェイトを格納した数値フィールド。この [ウェイト] フィールドでは、モデルのキャリブレーションで、一部のフィーチャを他よりも重要なものとして扱うことができます。主に、各位置で取得するサンプル数が異なり、従属および独立変数の値が平均され、サンプル数の多い位置の方が信頼性が高い(ウェイトを大きくすべきである)場合に有用です。ある位置での平均サンプル数が 25 であるのに対し、別の位置では平均で 2 つしかサンプルがない場合は、サンプル数を [ウェイト] フィールドに使用すると、サンプル数の多い位置がモデルのキャリブレーションに与える影響を、サンプル数の少ない位置が与える影響よりも大きくすることができます。 | Field |
coefficient_raster_workspace (オプション) |
すべてのラスタ係数が作成されることになるワークスペースのフル パス名。ワークスペースを設けると、インターセプトとすべての説明変数についてラスタが作成されます。 | Folder |
cell_size (オプション) |
ラスタ係数を作成するときに使用するセル サイズ(数)またはセル サイズの参照(ラスタ データセットへのパス名)。 デフォルトのセル サイズは、ジオプロセシング環境出力データの空間参照で指定された範囲の幅または高さのどちらか短い方を 250 で除した値です。 | Analysis Cell Size |
in_prediction_locations (オプション) |
推定を計算する必要がある場合に、位置を表すフィーチャが格納されるフィーチャクラス。このデータセットの各フィーチャには、指定されたすべての説明変数の値を格納する必要があります。これらのフィーチャの従属変数は、入力フィーチャクラス データについてキャリブレーションされたモデルを使用して推定されます。 | Feature Layer |
prediction_explanatory_field [prediction_explanatory_field,...] (オプション) |
予測位置フィーチャクラスで説明変数を表すフィールドのリスト。これらのフィールド名は、入力フィーチャクラスの [説明変数] パラメータのリストと同じ順序(1 対 1 の対応)にする必要があります。予測説明変数(prediction explanatory variables)を指定しないと、予測フィーチャクラス出力(output prediction feature class)には、各予測位置について計算された係数値だけが格納されます。 | Field |
out_prediction_featureclass (オプション) |
予測位置フィーチャクラスの各フィーチャについて、従属変数の推定を受け取る出力フィーチャクラス。 | Feature Class |
コードのサンプル
次の Python ウィンドウ スクリプトは、GeographicallyWeightedRegression(地理空間加重回帰分析)ツールの使用方法を示しています。
import arcpy
arcpy.env.workspace = "c:/data"
arcpy.GeographicallyWeightedRegression_stats("CallData.shp", "Calls","BUS_COUNT;RENTROCC00;NoHSDip",
"CallsGWR.shp", "ADAPTIVE", "BANDWIDTH PARAMETER",
"#", "25", "#","CoefRasters", "135", "PredictionPoints",
"#", "GWRCallPredictions.shp")
次のスタンドアロン Python ウィンドウのスクリプトは、GeographicallyWeightedRegression(地理空間加重回帰分析)ツールの使用方法を示しています。
# Model 911 emergency calls using GWR
# Import system modules
import arcpy
# Set the geoprocessor object property to overwrite existing outputs
arcpy.gp.overwriteOutput = True
# Local variables...
workspace = r"C:\Data"
try:
# Set the current workspace (to avoid having to specify the full path to the feature classes each time)
arcpy.env.workspace = workspace
# 911 Calls as a function of {number of businesses, number of rental units,
# number of adults who didn't finish high school}
# Process: Geographically Weighted Regression...
gwr = arcpy.GeographicallyWeightedRegression_stats("CallData.shp", "Calls",
"BUS_COUNT;RENTROCC00;NoHSDip",
"CallsGWR.shp", "ADAPTIVE", "BANDWIDTH PARAMETER","#", "25", "#",
"CoefRasters", "135", "PredictionPoints", "#", "GWRCallPredictions.shp")
# Create Spatial Weights Matrix to use with Global Moran's I tool
# Process: Generate Spatial Weights Matrix...
swm = arcpy.GenerateSpatialWeightsMatrix_stats("CallsGWR.shp", "UniqID",
"CallData25Neighs.swm",
"K_NEAREST_NEIGHBORS",
"#", "#", "#", 25)
# Calculate Moran's Index of Spatial Autocorrelation for
# OLS Residuals using a SWM File.
# Process: Spatial Autocorrelation (Morans I)...
moransI = arcpy.SpatialAutocorrelation_stats("CallsGWR.shp", "StdResid",
"NO_REPORT", "GET_SPATIAL_WEIGHTS_FROM_FILE",
"EUCLIDEAN_DISTANCE", "NONE", "#",
"CallData25Neighs.swm")
except:
# If an error occurred when running the tool, print out the error message.
print arcpy.GetMessages()
環境
- 出力データの座標系
フィーチャ ジオメトリは、分析の完了後に出力データの座標系に投影されます。このため、[距離] パラメータの入力値には、[入力フィーチャクラス] で指定した単位を使用する必要があります。また、[出力セル サイズ] の入力値には、出力データの座標系と同じ単位を使用する必要があります。