Skip To Content

犯罪に影響を与える属性の識別

前回のレッスンでは、ArcGIS Pro で、異常に多くの犯罪が発生している場所を、人口を考慮するように調整して表示するマップを作成しました。今回は、追加した他のどの属性が、サンフランシスコ市全体の犯罪のまん延に影響を与えている可能性があるかを決定します。これを行うために、R を使用して探索的データ解析ツールを活用し、犯罪に最も大きい影響を与える要因を識別します。最も影響を与える属性は、ArcGIS および R で、将来の計画および予防的なリソース配分のための可能性のある予測モデルの調査を開始する準備ができたときに、開始点として部署で使用することができます。

R で相関行列を作成し、属性リレーションシップを評価します。

犯罪と、選択した変数の間の関係をモデル化する上で重要な最初のステップとして、R で探索的データ解析ツールを使用することができます。これらのツールを使用すると、解析に統計的に最も関連している可能性のある予測因子を識別することができ、構築する将来のモデルを、将来の傾向の識別においてより効果的にできる可能性があります。使用する探索的データ解析ツールは、相関行列です。相関行列ツールは、図で示される値のグリッドを作成します。この値は、追加された属性と人口によってスムージングされた犯罪率との間の関連性のレベルを示します。

注意:

以下のワークフローは、R を使用したデータ解析およびデータの視覚化のためのチュートリアルを専門にする Web サイト STHDA によって作成されたガイドから派生しました。このワークフローでは、解析結果を適切に伝えることができるようにする、行列の外観の改善方法について説明します。

  1. 必要に応じて、ArcGIS Pro で Crime Analysis プロジェクトを開いてから、RStudio を開きます。

    次に、最新バージョンのデータを R に取り込みます。

  2. San_Francisco_Crime_Rates フィーチャクラスのパスを 1 番目の引数として指定して、arc.open() を使用して操作するプロジェクトおよびデータセットを確立します。結果を rate_df 変数に格納します。
    rate_df <- arc.open('C:/Lessons/San-Francisco/SF_Crime.gdb/San_Francisco_Crime_Rates')
  3. arc.select() を使用して、データから R に取り込む変数を選択します。1 番目の引数で、属性を選択するオブジェクト (この場合は rates_df) を指定します。2 番目の引数で、選択する各属性を文字ベクトルでリストアップします。
    rate_select_df <- arc.select(rate_df, fields = c("OBJECTID", "Crime_Counts", "Population", "Med_HomeValue", "Med_HomeIncome", "Renter_Count", "Grocery", "Restaurant", "EB_Rate"))
  4. arc.data2sp() 関数を使用して、フィーチャクラスを空間データ フレーム オブジェクトに変換します。
    rate_spdf <- arc.data2sp(rate_select_df)

    相関行列の外観を改善するには、相関行列のチュートリアルに記載されている複数の関数ライブラリおよびカスタム関数を読み込みます。以下のカスタム関数を使用します。

    • [相関行列の下側三角を取得] - デフォルトでは、相関行列は属性のペアごとに 2 回、相関係数を返します。この関数は、相関行列の下側三角の値のみを識別して返します。その他すべての値は、NA に設定されます。
    • [相関行列の上側三角を取得] - デフォルトでは、相関行列は属性のペアごとに 2 回、相関係数を返します。この関数は、相関行列の上側三角の値のみを識別して返します。その他すべての値は、NA に設定されます。
    • [相関係数の並べ替え] - この関数は、相関係数の大きさで相関行列を並べ替えます。

    これらの関数は、洗練された、解析することが容易な、警察署と共有できる相関行列を生成します。

  5. 次のコードを RStudio コンソールに入力して実行し、カスタム関数をワークスペースに追加します。
    # Get lower triangle of the correlation matrix get_lower_tri<-function(cormat) {
         cormat[upper.tri(cormat)] <- NA     return(cormat) }
    #
    # Get upper triangle of the correlation matrix get_upper_tri <- function(cormat) {
         cormat[lower.tri(cormat)] <- NA     return(cormat) }
    #
    reorder_cormat <- function(cormat) {
         # Use correlation between variables as distance     dd <- as.dist((1-cormat) / 2)     hc <- hclust(dd)     cormat <- cormat [hc$order, hc$order]
    }
  6. 次のコードを入力して、reshape2ggplot2、および ggmap の各ライブラリからワークスペースへ関数を追加します。
    install.packages("reshape2") library (reshape2) install.packages("ggplot2") library (ggplot2) install.packages("ggmap")
    library (ggmap)
    注意:

    パッケージがすでにインストールされている場合は、パッケージの更新と Rstudio の再起動が実行されるという内容のメッセージが表示されることがあります。パッケージを更新するか、パッケージの更新をキャンセルするかを選択できます。

  7. 次のコードを入力して相関行列を作成します。
    corr_sub <- rate_spdf@data [ c ("Grocery", "Restaurant", "Med_HomeIncome", "Renter_Count", "Med_HomeValue", "EB_Rate")] cormax <- round (cor(corr_sub), 2) upper_tri <- get_upper_tri (cormax) melted_cormax <- melt (upper_tri, na.rm = TRUE) cormax <- reorder_cormat (cormax) upper_tri <- get_upper_tri (cormax) melted_cormax <- melt (upper_tri, na.rm = TRUE) ggheatmap <- ggplot (melted_cormax, aes (Var2, Var1, fill = value)) +
         geom_tile(color = "white") +
         scale_fill_gradient2 (low = "blue", high = "red", mid = "white", midpoint = 0, limit = c(-1,1), space = "Lab", name = "Pearson\nCorrelation") +
         theme_minimal() + # minimal theme     theme (axis.text.x = element_text(angle = 45, vjust = 1, size = 12, hjust = 1)) +
         coord_fixed() print (ggheatmap) ggheatmap +
         geom_text (aes (Var2, Var1, label = value), color = "black", size = 4) +
         theme (          axis.title.x = element_blank(),          axis.title.y = element_blank(),          panel.grid.major = element_blank(),          panel.border = element_blank(),          axis.ticks = element_blank(),          legend.justification = c (1, 0),          legend.position = c (0.6, 0.7),          legend.direction = "horizontal") +
         guides (fill = guide_colorbar (barwidth = 7, barheight = 1, title.position = "top", title.hjust = 0.5))
  8. 必要に応じて、[プロット] タブをクリックして、作成された相関行列を表示します。

    [プロット] タブ

    相関行列は、犯罪の発生に影響を与える属性を決定する際に重視したい予測因子を識別するのに役立ちます。この行列は、属性と目的の従属変数との間、および属性間に、どの程度強い相関性があるかを示す値を表示します。さらに、データによく適合する予測モデルを見つけようとする場合に、従属変数との高い相関関係がある属性を識別することによって、どの予測因子から試すべきかについて、良いアイデアを得ることができます。相関行列は、予測因子間の多重共線性の可能性がある事例を識別するために使用することもできます。

    予測因子に、従属変数との正の相関関係がある場合、予測因子の大きさが増えるにつれて、従属変数の大きさも増えるということを意味しています。相関係数が高いほど、この関係は強まります。一方、負の相関関係では、予測因子の大きさが増えるにつれて、従属変数の大きさが減少します。

    多重共線性は、2 つの予測因子の類似性を示します。予測モデルに、同じ影響を表す変数が含まれている場合、それらの変数は、モデル内で考慮されている影響が応答に強い影響を与えなくなる程度まで、互いに否定し合う傾向があり、モデルを不安定にする可能性があります。高い犯罪率の発生に影響を与える要因を調査するため、これらの値は、両方とも検討する価値があります。

    相関行列の結果

    EB_Rate 変数の上および右にある列は、かなり薄い色と低い値を持っており、他の属性と強い相関性がないことを示しています。対照的に、潜在的な予測因子の間で、多重共線性の可能性のある事例をいくつか観察することができます。特に、Restaurant 属性と Grocery 属性には、相関係数 0.76 を持つ明るい赤色の四角によって示されているように、強い相関関係があります。

    相関行列は、モデルに含めるべき予測因子に関する手掛かりを提供することができますが、このタイプの探索的データ解析は、適切なモデルの構築の単なる一部に過ぎません。このレッスンの目的の場合、相関行列のみを使用して決定に役立てます。予測モデルの開発に役立つ R のその他の探索的関数の詳細については、このブログをご参照ください。

作業のまとめおよび結論

相関行列の結果に基づけば、あなたの部署には、犯罪発生に影響を与える属性の識別に関して、行うべき作業がまだあるように思われます。理想的には、応答変数に対して極めて大きい相関値を持つ属性を確認したいでしょう。それによって、2 つの間に関係があることにかなり確信を持つことができます。しかし、それは当然のことです。特定の応答変数に対して、特定のデータセット内で適切な予測因子を見つける過程は、扱いにくい場合があり、非線形項、空間傾向、およびその他の可能性のある要因を考慮するための高度な統計手法を必要とすることがあるからです。

このレッスンを通じて、R-ArcGIS Bridge のインストールおよびセットアップの方法、ArcGIS と R の間でブリッジを使用してデータを転送する方法について学習し、強力な統計ライブラリによって R が ArcGIS のワークフローを強化できる方法の 1 つを確認しました。統計的に有意な時空間の傾向を解析し、さまざまな使用可能な社会経済的要因、人口統計的要因、ビジネス的要因、および環境的要因を使用してデータに情報を付加し、確実な犯罪率を計算し、犯罪率のホット スポットを検出し、それらのパターンの説明に役立つ可能性のある関係の調査を開始しました。R-ArcGIS Bridge をワークフローに追加したことで、サンフランシスコ市における犯罪およびそれらを減らすためにできることを理解しようと努力する際に、あなたおよびあなたの部署を支援する可能性が、これまでよりも、すぐ手に届くところまで高まりました。