予備回帰分析(Exploratory Regression) (空間統計解析)
サマリ
予備回帰分析ツールは入力された説明変数候補のすべての組み合わせを評価し、ユーザが指定する条件のコンテキスト内で従属変数を最もよく説明する OLS モデルを探します。
[結果] ウィンドウからツールのこのツールの結果(オプションのレポート ファイルを含む)にアクセスできます。バックグラウンド処理を無効にすると、結果は [進行状況] ダイアログ ボックスにも書き込まれます。
図
使用法
-
このツールの主たる出力はレポート ファイルで、[結果] ウィンドウに書き込まれます。[結果] ウィンドウで [メッセージ] 項目を右クリックし、[表示] をクリックすると、[メッセージ] ダイアログ ボックスに [予備回帰分析(Exploratory Regression)] サマリ レポートが表示されます。
このツールは、オプションで、結果をまとめたレポートをテキスト ファイルで作成します。このレポート ファイルはコンテンツ ウィンドウに追加され、ArcMap 上で右クリックして、[開く] を選択して参照できます。
このツールはまた、オプションで p 値係数のカットオフならびに分散拡大係数(VIF)値基準の最大値に見合うすべてのモデルをリストするテーブルを作成します。レポートを構成する要素とテーブルの詳細な説明は予備回帰分析結果の解釈をご参照ください。
このツールは [最小二乗法(Ordinary Least Squares)(OLS)] ならびに [空間的自己相関分析(Spatial Autocorrelation(Global Moran's I))] を使用します。必要に応じて空間ウェイト マトリックス ファイルが [空間的自己相関分析(Spatial Autocorrelation(Global Moran's I))] ツールと共に使われ、モデルの残差を確認しますが、[OLS] ツールでは全く使われません。
このツールは入力された [候補となる説明変数] のすべての組み合わせを試み、適切で特定の OLS モデルを探します。[最小許容補正 R2]、[最大係数 p 値カットオフ]、[最大 VIF 値カットオフ] および [最小許容 Jarque Bera p 値] に対する閾値の基準を満たすモデルを見つけた時にのみ [空間的自己相関分析(Spatial Autocorrelation(Global Moran's I))] ツールをモデル残差に対して実行し、下方予測および上方予測がクラスタリングしていないか確かめます。これらすべての基準を満たすモデルが 1 つも存在しない場合、少なくとも残差のクラスタリングについて何らかの情報を提供するために、自由度を調整した R2 値が最も高い 3 つのモデルと Jarque Bera p 値が最も大きな 3 つのモデルの残差に対して、[空間的自己相関分析(Spatial Autocorrelation(Morans I))] テストが行われます。
特に従属変数が強い空間構造を持つ場合、空間的説明変数の候補を、できるだけ多く挙げてください。空間変数の例として、主要な高速道路までの距離、就職できそうな職場の数、近隣で買い物ができる場所の数、接続性の測定値、密度などがあります。従属変数の空間構造をキャプチャする説明変数が見つかるまで、モデルの残差が空間的自己相関分析テストを満たすことはほぼありません。回帰残差の規模が大きい([空間的自己相関分析(Spatial Autocorrelation(Global Moran's I))] ツールで判定)場合、モデルの指定が適切でないと考えられます。モデルの指定が正しくない場合の対処法は、回帰分析の側面に示されています。
[空間的自己相関分析(Spatial Autocorrelation(Global Moran's I))] はすべての試験モデルで実行されるわけではないので(上述のヒントを参照)、オプションの出力結果テーブルでは一部の SA(空間的自己相関分析)フィールドにデータが入らないことになります。*.dbf ファイルは NULL 値を保存しないので、きわめて非常に小さな(負の)数(-1.797693e+308 といった値)で表示されます。ジオデータベース テーブルでは、欠けている値は NULL 値として表示されます。欠けている値が示すことは、関係するモデルの残差には空間的自己相関分析のための試験がなされていないということです。なぜなら、そのモデルはすべての他のモデルの検索条件を満たしていなかったからです。
[空間的自己相関分析(Spatial Autocorrelation(Global Moran's I))] を実行するのに用いられる、デフォルトの空間ウェイト マトリックス ファイルは、空間リレーションシップの 8 最近隣内挿法のコンセプトに基づいています。このデフォルトが主に用いられているのは、かなり早く処理が進むからです。隣接リレーションシップを異なる方法で定義するために、[空間ウェイト マトリックスの生成(Generate Spatial Weights Matrix)] ツールを使って単純に空間ウェイト マトリックス ファイルを独自につくり、[入力空間ウェイト マトリックス ファイル] パラメータのためにファイル名を特定するだけです。逆距離、ポリゴン隣接、または K 最近接内挿は、回帰残差をテストするための空間リレーションシップのコンセプトとしてすべて適切です。
注意:空間ウェイト マトリックス ファイルは空間構造のモデル残差をテストするためだけに使用されます。モデルが正しく特定されたとき、残差は空間的にランダムです(大きな残差は小さな残差が混合したものです。大きな残差は空間的にお互いがクラスタリングしません)。
注意:入力フィーチャに 8 未満のフィーチャがある場合、[空間的自己相関分析(Spatial Autocorrelation(Morans I))] ツールの実行に使用される、デフォルトの空間ウェイト マトリックス ファイルは、K 最近隣を使用します(K はフィーチャの数から 2 を引いた値です)。通常、このツールを使用する場合は、最低 30 のフィーチャが必要です。
構文
パラメータ | 説明 | データ タイプ |
Input_Features |
フィーチャクラスまたはフィーチャ レイヤは分析のための従属変数と候補となる説明変数を保存します。 | Feature Layer |
Dependent_Variable |
数値フィールドは OLS を使用してモデルを作る観測地を保存します。 | Field |
Candidate_Explanatory_Variables [Candidate_Explanatory_Variables,...] |
OLS を試すフィールドのリストは説明変数をモデル化します。 | Field |
Weights_Matrix_File (オプション) |
フィーチャ間の空間リレーションシップを指定する空間ウェイトが含まれたファイル。このファイルは回帰残差に対して空間的自己相関分析を確かめるのに使用されます。これを作成するために [空間ウェイト マトリックスの生成(Generate Spatial Weights Matrix)] ツールを使うこともできます。空間ウェイト マトリックス ファイルを使わない場合、各フィーチャの 8 つの最近隣内挿に基づいて空間的自己相関分析のために残差は確認されます。 注意: 空間ウェイト マトリックス ファイルはモデル残差の空間構造を計算することにのみ使用されます。OLS モデルを構築したりキャリブレーションするためには使用されません。 | File |
Output_Report_File (オプション) |
レポート ファイルはツールの結果を保存し、それには入力した検索条件のすべてを満たすモデルの詳細も含みます。この出力ファイルはまた、条件を満たすモデルが見いだされなかった場合に、一般的な回帰の問題を修正するときの参考になる診断結果を含みます。 | File |
Output_Results_Table (オプション) |
作成された出力テーブルはすべてのモデルの p 値係数 VIF のカットオフについて説明変数や診断結果を保存する場合があります。 | Table |
Maximum_Number_of_Explanatory_Variables (オプション) |
すべてのモデルの説明変数から、ここで入力したものまでが確認されます。たとえば、[説明変数の最小値] が 2 で [説明変数の最大値] が 3 の場合、[予備回帰] ツールはすべてのモデルについて 2 つの説明変数のすべての組み合わせを試み、またすべてのモデルについて 3 つの説明変数のすべての組み合わせを試みます。 | Long |
Minimum_Number_of_Explanatory_Variables (オプション) |
この値は、評価したモデルの説明変数の最小値を表します。たとえば、[説明変数の最小値] が 2 で [説明変数の最大値] が 3 の場合、[予備回帰] ツールはすべてのモデルについて 2 つの説明変数のすべての組み合わせを試み、またすべてのモデルについて 3 つの説明変数のすべての組み合わせを試みます。 | Long |
Minimum_Acceptable_Adj_R_Squared (オプション) |
これは条件を満たすとみなしたモデルのアジャストされた相関係数の二乗の最小値です。もしモデルが他の検索条件すべてを満たす一方で、アジャストされた相関係数の二乗が入力値より小さい場合、出力レポート ファイルには条件を満たすモデルとして表示されません。有効な値の範囲は 0.0 ~ 1.0 です。デフォルト値は 0.5 で、条件を満たすモデルは従属変数の値変動のが少なくとも 50% を説明できることを示しています。 | Double |
Maximum_Coefficient_p_value_Cutoff (オプション) |
評価したそれぞれのモデルでは、最小二乗法は説明変数 p 値係数を計算します。ここで入力した p 値カットオフは、モデルが条件を満たすかどうかという点で、モデルのすべての係数に対して必要な信頼度を表します。小さな p 値は高い信頼度を表します。有効な値の範囲は 1.0 ~ 0.0 ですが、ほとんどの場合は 0.1、0.05、0.01、0.001 などです。デフォルト値は 0.05 で、条件を満たすモデルは説明変数のみを含み、その係数は統計的に 95% の信頼度があることを示しています。デフォルト値を緩和して p 値のカットオフに大きな値として、たとえば 0.1 を指定します。もし多くのモデルが条件を満たすようになった場合、検索条件を厳しくするためにデフォルトの p 値を 0.05 から 0.01、またはそれよりも小さな値を考えるでしょう。 | Double |
Maximum_VIF_Value_Cutoff (オプション) |
この値はモデルに許容できる説明変数にどれだけ冗長性(多重共線性)があるか反映しています。分散拡大係数(VIF)値が約 7.5 よりも高いとき、多重共線性はモデルを不安定にさせます。したがって、ここでは 7.5 がデフォルト値です。条件を満たすモデルにより小さな冗長性を持たせたい場合、このパラメータにより小さい値、たとえば 5.0 を入力します。 | Double |
Minimum_Acceptable_Jarque_Bera_p_value (オプション) |
Jarque Bera 診断テストが返す p 値はモデル残差が正規分布かどうかを示しています。もし p 値が統計的に有意な(小さい)場合、モデル残差は正規でなく、モデルにはバイアスがかかっています。条件を満たすモデルは大きな Jarque Bera p 値を持ちます。デフォルトで最小の許容できる p 値は 0.1 です。この最小値以上の p 値を返すモデルが条件を満たしているとみなされます。バイアスのない合格モデルを見つけるのが難しい場合は、最小 p 値を緩和して、0.05 などの小さな値にしてみてください。 | Double |
Minimum_Acceptable_Spatial_Autocorrelation_p_value (オプション) |
他の検索条件すべてを満たすモデルには、[予備回帰分析(Exploratory Regression)] ツールがモデル残差をチェックして空間クラスタリングの発生を確認します。この診断テストの p 値が統計的に有意(小さい)ならば、主要な説明変数が欠落している(モデルは必要なことの半分しか語っていない)ことが大いに考えられます。残念ながら、回帰残差に空間的自己相関分析がある場合、モデルが正しく指定されておらず、結果を信用することはできません。条件を満たすモデルは診断テストに対して大きな p 値を返します。デフォルトの最小の p 値は 0.1 です。この最小値以上の p 値を返すモデルが条件を満たしているとみなされます。もし、この診断テストによって正しく指定したモデルを見つけられない場合、およびこの基準を緩和すると決めた場合、0.05 のような小さい最小 p 値を入力します。 | Double |
コードのサンプル
次の Python ウィンドウ スクリプトは、ExploratoryRegression(予備回帰分析)ツールの使用方法を示しています。
import arcpy, os
arcpy.env.workspace = r"C:\ER"
arcpy.ExploratoryRegression_stats("911CallsER.shp",
"Calls",
"Pop;Jobs;LowEduc;Dst2UrbCen;Renters;Unemployed;Businesses;NotInLF; \
ForgnBorn;AlcoholX;PopDensity;MedIncome;CollGrads;PerCollGrd; \
PopFY;JobsFY;LowEducFY",
"BG_911Calls.swm", "BG_911Calls.txt", "",
"MAX_NUMBER_ONLY", "5", "1", "0.5", "0.05", "7.5", "0.1", "0.1")
次のスタンドアロン Python ウィンドウのスクリプトは、ExploratoryRegression(予備回帰分析)ツールの使用方法を示しています。
# Exploratory Regression of 911 calls in a metropolitan area
# using the Exploratory Regression Tool
# Import system modules
import arcpy, os
# Set geoprocessor object property to overwrite existing output, by default
arcpy.gp.overwriteOutput = True
try:
# Set the current workspace (to avoid having to specify the full path to
# the feature classes each time)
arcpy.env.workspace = r"C:\ER"
# Join the 911 Call Point feature class to the Block Group Polygon feature class
# Process: Spatial Join
fieldMappings = arcpy.FieldMappings()
fieldMappings.addTable("BlockGroups.shp")
fieldMappings.addTable("911Calls.shp")
sj = arcpy.SpatialJoin_analysis("BlockGroups.shp", "911Calls.shp", "BG_911Calls.shp",
"JOIN_ONE_TO_ONE",
"KEEP_ALL",
fieldMappings,
"COMPLETELY_CONTAINS", "", "")
# Delete extra fieldsto clean up the data
# Process: Delete Field
arcpy.DeleteField_management("BG_911Calls.shp", "OBJECTID;INC_NO;DATE_;MONTH_;STIME; \
SD_T;DISP_REC;NFPA_TYP;CALL_TYPE;RESP_COD;NFPA_SF; \
SIT_FND;FMZ_Q;FMZ;RD;JURIS;COMPANY;COMP_COD;RESP_YN; \
DISP_DT;DAY_;D1_N2;RESP_DT;ARR_DT;TURNOUT;TRAVEL; \
RESP_INT;ADDRESS_ID;CITY;CO;AV_STATUS;AV_SCORE; \
AV_SIDE;Season;DayNight")
# Create Spatial Weights Matrix for Calculations
# Process: Generate Spatial Weights Matrix
swm = arcpy.GenerateSpatialWeightsMatrix_stats("BG_911Calls.shp", "TARGET_FID", "BG_911Calls.swm",
"CONTIGUITY_EDGES_CORNERS",
"EUCLIDEAN", "1", "", "", "ROW_STANDARDIZATION", "", "", "", "")
# Exploratory Regression Analysis for 911 Calls
# Process: Exploratory Regression
er = arcpy.ExploratoryRegression_stats("BG_911Calls.shp",
"Calls",
"Pop;Jobs;LowEduc;Dst2UrbCen;Renters;Unemployed;Businesses;NotInLF; \
ForgnBorn;AlcoholX;PopDensity;MedIncome;CollGrads;PerCollGrd; \
PopFY;JobsFY;LowEducFY",
"BG_911Calls.swm", "BG_911Calls.txt", "",
"MAX_NUMBER_ONLY", "5", "1", "0.5", "0.05", "7.5", "0.1", "0.1")
except:
# If an error occurred when running the tool, print out the error message.
print arcpy.GetMessages()