地理空間加重回帰分析 (Geographically Weighted Regression) (GWR) (空間統計)

概要

空間的に変化する関係をモデリングするときに使用される局所形の線形回帰である、地理空間加重回帰分析 (GWR) を実行します。

レガシー:
このツールの拡張版が ArcGIS Pro 2.3 に追加されています。これは、古い非推奨のツールのツール ドキュメントです。アップグレードして、ArcGIS Pro 以降で利用できる新しい [地理空間加重回帰分析 (Geographically Weighted Regression)] ツールを使用することをお勧めします。

地理空間加重回帰分析 (Geographically Weighted Regression)
GWR は、ローカルの回帰モデルです。係数を変えることができます。

使用法

  • 地理空間加重回帰分析 (GWR) では、各ターゲット フィーチャのバンド幅内にあるフィーチャの従属変数と説明変数を組み込んだデータセットにあるすべてのフィーチャについて、個別の方程式が構築されます。バンド幅の形状と範囲は、[カーネル タイプ][バンド幅手法][距離]、および [近傍数] の各パラメーターに対するユーザー入力に依存しますが、これには 1 つの制約があります。近隣のフィーチャ数が 1000 を超えると、各局所方程式には最近隣の 1000 個だけが組み込まれます。

  • 最善の結果となるよう、GWR は、数百のフィーチャを伴うデータセットに適用してください。この手法は、小さなデータセットへの使用には適していません。このツールをマルチポイント データに使用することはできません。

  • メモ:

    GWR ツールでは、各種出力を生成できます。GWR モデルの概要は、ツールの実行中に [ジオプロセシング] ウィンドウの下にメッセージとして表示されます。このメッセージにアクセスするには[ジオプロセシング] ウィンドウでプログレス バーの上にカーソルを置くか、ポップアップ ボタンをクリックするか、メッセージ セクションを展開します。ジオプロセシング履歴を介して、以前に実行した [地理空間加重回帰分析 (Geographically Weighted Regression)] ツールのメッセージにアクセスすることもできます。

    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 値を格納できないため、注意が必要です。シェープファイルではない入力からシェープファイルを作成するツールやその他の手順では、結果的に NULL 値がゼロまたは非常に小さな負の値 (-DBL_MAX = -1.7976931348623158e+308) として格納されることがあります。この場合、予期せぬ結果に至ることがあります。詳細については、「ジオプロセシングでのシェープファイル出力の注意事項」をご参照ください。

  • 計算結果が無限または未定義の場合、シェープファイル以外の結果は NULL に、シェープファイルの結果は -DBL_MAX = -1.7976931348623158e+308 になります。

  • [バンド幅手法] パラメーターに、[赤池情報量基準] または [交差検証] のいずれかを選択すると、GWR によって最適な距離 (固定カーネルの場合) または最適な近傍数 (適応可能カーネルの場合) が検出されます。しかしながら、赤池情報量基準交差検証のバンド幅手法はどちらも、局所的な多重共線性の問題のために、最適な距離/近傍数の解を求めることができません。深刻なモデル設計上の問題を示すエラーが発生した場合は、特定の距離または近傍数を指定してみてください。次に、出力フィーチャクラスの条件数を確認し、どのフィーチャが局所的な共線性の問題に関係しているのか確認してください。

  • 深刻なモデル設計上のエラーや、局所方程式に十分な近傍数が含まれていないことを示すエラーは、多くの場合、グローバルまたは局所的な多重共線性の問題があることを示しています。どこに問題があるのかを判断するために 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

カーネルを固定距離として構築するか、フィーチャ密度の関数として範囲の変化を許容するかを指定します。

  • FIXEDそれぞれの局所回帰分析の実施に使用する空間コンテキスト (ガウス カーネル) として、固定距離を使用します。
  • ADAPTIVE空間コンテキスト (ガウス カーネル) が、指定した近傍数の関数になります。フィーチャ分布の密度が高い場合、空間コンテキストは小さくなり、フィーチャ分布がまばらになると、空間コンテキストが大きくなります。
String
bandwidth_method

カーネルの範囲の決定方法を指定します。AICc または CV を選択すると、ツールによって、最適な距離/近傍数のパラメーターが特定されます。AICc または CV パラメーターに何を使用するかわからない場合、通常は、distance または number_of_neighbors のいずれかを選択します。ツールで最適な距離または近傍数が特定されたら、BANDWIDTH_PARAMETER オプションを使用します。

  • AICcカーネルの範囲が AICc (赤池情報量基準) により決定されます。
  • CVカーネルの範囲が相互整合により決定されます。
  • BANDWIDTH_PARAMETERカーネルの範囲が固定距離または固定された近傍数により決定されます。distance または number_of_neighbors パラメーターのいずれかに値を指定する必要があります。
String
distance
(オプション)

kernel_typeFIXED で、bandwidth_methodBANDWIDTH_PARAMETER の場合に使用する距離。

Double
number_of_neighbors
(オプション)

kernel_typeADAPTIVE で、bandwidth_methodBANDWIDTH_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: はい

関連トピック