概要
空間的に変化する関係をモデリングするときに使用される局所形の線形回帰である、地理空間加重回帰分析 (GWR) を実行します。
図
使用法
地理空間加重回帰分析 (GWR) では、各ターゲット フィーチャのバンド幅内にあるフィーチャの従属変数と説明変数を組み込んだデータセットにあるすべてのフィーチャについて、個別の方程式が構築されます。バンド幅の形状と範囲は、[カーネル タイプ]、[バンド幅手法]、[距離]、および [近傍数] の各パラメーターに対するユーザー入力に依存しますが、これには 1 つの制約があります。近隣のフィーチャ数が 1000 を超えると、各局所方程式には最近隣の 1000 個だけが組み込まれます。
最善の結果となるよう、GWR は、数百のフィーチャを伴うデータセットに適用してください。この手法は、小さなデータセットへの使用には適していません。このツールをマルチポイント データに使用することはできません。
GWR ツールでは、出力フィーチャクラス、およびツール実行サマリー レポートの診断値が格納されたテーブルも生成されます。このテーブルの名前は、_supp を含む出力フィーチャクラス名を使用して自動生成されます。出力フィーチャクラスは、残余をモデリングできるよう、自動的に、ホット/コールド レンダリング方式が適用された状態で、[コンテンツ] ウィンドウに追加されます。各出力の詳細な説明については、「GWR 結果の解釈」をご参照ください。
出力フィーチャクラスをフィーチャ データセット内で作成しない限り、_supp ファイルは常に出力フィーチャクラスと同じ場所に作成されます。出力フィーチャクラスがフィーチャ データセット内にある場合、_supp テーブルはフィーチャ データセットを含むジオデータベースに作成されます。
投影データを使用することをお勧めします。これは、距離が分析の要素になっている場合には、[カーネル タイプ] に [FIXED] を選択すると、GWR にとっても距離が成分となるため、特に重要です。データの投影法には、(地理座標系ではなく) 投影座標系を使用することをお勧めします。
GWR ツールによる計算の中には、パフォーマンス向上のために複数の CPU を利用するものもあり、この場合は自動的に最大 8 つのスレッド/CPU が処理に使用されます。
必ず [最小二乗法 (Ordinary Least Squares)](OLS) 回帰分析ツールを使用した回帰分析から開始します。まず、正しく指定した OLS モデルを特定したうえで、同じ説明変数を使用して GWR を実行します (別の空間様式を表す「ダミー」の説明変数は除外します)。
従属変数と独立変数は、さまざまな値を含む数値フィールドである必要があります。GWR のような線形回帰分析法は、二値的な結果を予測するのには適していません (たとえば、従属変数の値がすべて 1 または 0 の場合)。
最小二乗回帰 (OLS) などのグローバルな回帰モデルの場合、2 つ以上の変数が多重共線性を示している (2 つ以上の変数が重複しているか、一緒に同じ「ストーリー」を示している) 結果は信頼することができません。GWR では、データセットの各フィーチャについて、局所的な回帰方程式が構築されます。特定の説明変数の値が空間的にクラスタリングしている場合は、局所的な多重共線性が問題となっている可能性が高いといえます。局所的な多重共線性のために不安定な結果になっているかどうかは、出力フィーチャクラスの条件数フィールド (COND) で確認できます。一般的に、条件数が 30 を上回っている場合、NULL に等しい場合、またはシェープ ファイルの場合であれば -1.7976931348623158e+308 に等しい場合の結果には信頼性がありません。
GWR モデルに名義またはカテゴリ データを含める場合には、注意してください。カテゴリが空間的にクラスタリングしているようなときには、局所的な多重共線性の問題が生じるリスクがあります。局所的な共線性が問題となっているかどうかは、GWR 出力に含まれている条件数からわかります (条件数がゼロ未満、30 超、または NULL に設定されている場合)。局所的な多重共線性が存在する場合の結果は安定していません。
GWR モデルでは、別の空間様式を表すために人為的な説明変数を使用しないでください (都心外の国勢調査地区に 1 という値を割り当て、それ以外にはすべて 0 という値を割り当てるなど)。GWR では、説明変数の係数が異なっていてもよいため、このような空間様式の説明変数が不要です。これを含めてしまうと、局所的な多重共線性の問題が生じます。
説明変数の係数にみられる地域的なばらつきについて理解を深めるために、GWR によって作成されるオプションのラスター係数サーフェスを確認します。これらのラスター サーフェスは、[係数ラスター ワークスペース] の中に作成されます。ポリゴン データの場合は、出力フィーチャクラスの各係数フィールドにグラデーションの色やコールドからホットまでのレンダリングを使用して、分析範囲全体における変化を確認できます。
GWR は、[予測位置] のフィーチャクラス (多くの場合、このフィーチャクラスは [入力フィーチャクラス] と同じです)、[予測説明変数]、および [出力予測フィーチャクラス] を指定して、予測を行う場合にも使用できます。回帰モデルのキャリブレーションに使用するフィールド ([説明変数] フィールドに入力する値) と予測に使用するフィールド ([予測説明変数] フィールドに入力する値) は、1 対 1 で対応している必要があります。これらの変数は、必ず同じ順序にしてください。たとえば、制限速度、道路状況、車線数、車両数の関数として、交通事故をモデリングしているとします。制限速度と道路状況を変更した新しい変数を作成すれば、制限速度の変更や道路の改善が交通事故にどのような影響を及ぼす可能性があるかを予測できます。既存の変数は、回帰モデルのキャリブレーションに使用され、また [説明変数] パラメーターにも使用されます。変更後の変数は、予測に使用されるもので、[予測説明変数] として入力します。
予測位置フィーチャクラスが指定されている一方で、[予測説明変数] が指定されていない場合は、各位置について計算された係数のみ (予測なし) で [予測フィーチャクラス出力] が作成されます。
重要な説明変数が欠けていると、回帰モデルは誤って指定されます。回帰残余の空間的自己相関が統計的に有意である場合や、1 つ以上の説明変数の係数に予期せぬ空間的なばらつきがある場合は、モデルが誤って指定されている可能性が考えられます。欠けている重要な変数が何であるのかを特定し、これらをモデルに含められるよう、(OLS 残余分析や GWR 係数差異分析などを通じて) あらゆる努力を行ってください。
常に、説明変数を非定常とすることが理にかなっているかを疑ってみてください。たとえば、ASPECT をはじめとするいくつかの変数を関数として、特定の植物種の密度をモデリングしているとします。ASPECT 変数の係数が分析範囲全体で変化する場合には、重要な説明変数 (優勢な競合する植物など) が欠けているという事実を示している可能性が高いといえます。あらゆる努力を行って、回帰モデルにすべての重要な説明変数を含めてください。
計算結果が無限または未定義の場合、シェープファイル以外の結果は NULL に、シェープファイルの結果は -DBL_MAX = -1.7976931348623158e+308 になります。
[バンド幅手法] パラメーターに、AICc (補正赤池情報量基準) または CV (交差検証) のいずれかを選択すると、GWR によって最適な距離 (固定カーネルの場合) または最適な近傍数 (適応可能カーネルの場合) が検出されます。しかしながら、AICc と CV のバンド幅手法はどちらも、局所的な多重共線性の問題のために、最適な距離/近傍数の解を求めることができません。深刻なモデル設計上の問題を示すエラーが発生した場合は、特定の距離または近傍数を指定してみてください。次に、出力フィーチャクラスの条件数を確認し、どのフィーチャが局所的な共線性の問題に関係しているのか確認してください。
深刻なモデル設計上のエラーや、局所方程式に十分な近傍数が含まれていないことを示すエラーは、多くの場合、グローバルまたは局所的な多重共線性の問題があることを示しています。どこに問題があるのかを判断するために OLS を実行して、各説明変数について VIF 値 を確認します。大きな VIF 値がある場合 (たとえば 7.5 以上)、グローバル多重共線性によって GWR では解を導けなくなっています。しかし、もっと可能性が高いのは、ローカル多重共線性の問題です。各独立変数の主題図を作成してみてください。主題図で同一値が空間的にクラスターを形成している場合は、モデルからそのような変数を除外するか、別の独立変数と組み合わせて値のばらつきを増やします。たとえば、家屋の値をモデリングしているときに、寝室と浴室について変数を設けている場合は、これらを組み合わせてバリエーションを増やすか、浴室/寝室の面積を表すものにするとよいでしょう。GWR モデルの構築時には、空間様式のダミー変数、空間クラスターとなっているカテゴリや名義変数、可能性のある値が非常に限られている変数の使用を避けてください。
GWR は OLS と同じ要件の適用を受ける線形モデルです。GWR モデルを適切に指定できていることを確認するには、「回帰分析の基礎」の「回帰モデルがうまくいかない場合」をご参照ください。
構文
arcpy.stats.GeographicallyWeightedRegression(in_features, dependent_field, explanatory_field, out_featureclass, kernel_type, bandwidth_method, {distance}, {number_of_neighbors}, {weight_field}, {coefficient_raster_workspace}, {cell_size}, {in_prediction_locations}, {prediction_explanatory_field}, {out_prediction_featureclass})
パラメーター | 説明 | データ タイプ |
in_features | 従属変数と独立変数を格納したフィーチャクラス。 | Feature Layer |
dependent_field | モデル化される値を含む数値フィールド。 | Field |
explanatory_field [explanatory_field,...] | 回帰モデルの独立説明変数を表すフィールドのリスト。 | Field |
out_featureclass | 従属変数の推定値と残差を受け取る出力フィーチャクラス。 | Feature Class |
kernel_type | カーネルを固定距離として構築するか、フィーチャ密度の関数として範囲の変化を許容するかを指定します。
| String |
bandwidth_method | カーネルの範囲の決定方法を指定します。AICc または CV を選択すると、ツールによって、最適な距離/近傍数のパラメーターが特定されます。[距離] または [近傍数] パラメーターに何を使用するかわからない場合、通常は、AICc または CV のいずれかを選択します。ツールで最適な距離または近傍数が特定されたら、BANDWIDTH_PARAMETER オプションを使用します。
| String |
distance (オプション) | kernel_type が FIXED で、bandwidth_method が BANDWIDTH_PARAMETER の距離。 | Double |
number_of_neighbors (オプション) | kernel_type が ADAPTIVE で、bandwidth_method が BANDWIDTH_PARAMETER のときの Gaussian カーネルのローカル バンド幅に含まれる隣接フィーチャの正確な数。 | Long |
weight_field (オプション) | 個々のフィーチャの空間ウェイトを格納した数値フィールド。この [ウェイト] フィールドでは、モデルのキャリブレーションで、一部のフィーチャを他よりも重要なものとして扱うことができます。主に、各位置で取得するサンプル数が異なり、従属および独立変数の値が平均され、サンプル数の多い位置の方が信頼性が高い (ウェイトを大きくすべきである) 場合に有用です。ある位置での平均サンプル数が 25 であるのに対し、別の位置では平均で 2 つしかサンプルがない場合は、サンプル数を [ウェイト] フィールドに使用すると、サンプル数の多い位置がモデルのキャリブレーションに与える影響を、サンプル数の少ない位置が与える影響よりも大きくすることができます。 | Field |
coefficient_raster_workspace (オプション) | 係数ラスターが作成されることになるワークスペースのフル パス名。ワークスペースを設けると、インターセプトとすべての説明変数についてラスターが作成されます。 | Workspace |
cell_size (オプション) | ラスター係数を作成するときに使用するセル サイズ (数) またはセル サイズの参照 (ラスター データセットへのパス名)。 デフォルトのセル サイズは、ジオプロセシング環境出力データの空間参照で指定された範囲の幅または高さのどちらか短い方を 250 で除した値です。 | Analysis Cell Size |
in_prediction_locations (オプション) | 推定を計算する必要がある場合に、位置を表すフィーチャが格納されるフィーチャクラス。このデータセットの各フィーチャには、指定されたすべての説明変数の値を格納する必要があります。これらのフィーチャの従属変数は、入力フィーチャクラス データについてキャリブレーションされたモデルを使用して推定されます。 | Feature Layer |
prediction_explanatory_field [prediction_explanatory_field,...] (オプション) | 予測位置フィーチャクラスで説明変数を表すフィールドのリスト。これらのフィールド名は、入力フィーチャクラスの [説明変数] パラメーターのリストと同じ順序 (1 対 1 の対応) にする必要があります。予測説明変数を指定しないと、予測フィーチャクラス出力には、各予測位置について計算された係数値だけが格納されます。 | Field |
out_prediction_featureclass (オプション) | 予測位置フィーチャクラスの各フィーチャについて、従属変数の推定を受け取る出力フィーチャクラス。 | Feature Class |
派生した出力
名前 | 説明 | データ タイプ |
out_table | ツールの実行サマリー レポート診断値が格納されたテーブル。 | テーブル |
out_regression_rasters | すべての係数ラスターが作成されることになるワークスペース。 | ラスター レイヤー |
コードのサンプル
GeographicallyWeightedRegression (地理空間加重回帰分析) の例 (Python ウィンドウ)
次の 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")
GeographicallyWeightedRegression (地理空間加重回帰分析) の例 (スタンドアロン スクリプト)
次のスタンドアロン Python スクリプトは、GeographicallyWeightedRegression ツールの使用方法を示しています。
# Model 911 emergency calls using GWR
# Import system modules
import arcpy
# Set property to overwrite existing outputs
arcpy.env.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 arcpy.ExecuteError:
# If an error occurred when running the tool, print out the error message.
print(arcpy.GetMessages())
環境
ライセンス情報
- Basic: 次のものが必要 Spatial Analyst または Geostatistical Analyst
- Standard: 次のものが必要 Spatial Analyst または Geostatistical Analyst
- Advanced: はい