R-ArcGIS Bridge のインストールおよび統計解析の開始

このレッスンでは、R-ArcGIS Bridge をインストールしてデータセットの解析を開始します。

R および Rstudio のダウンロード

まず、R および RStudio (R のための無料の統合開発環境) をダウンロードしてセットアップします。RStudio は、CRAN (Comprehensive R Archive Network) にアクセスできるコーディング プラットフォームを提供することによって、R での作業を支援します。CRAN には、多数の R ライブラリ、チャートとグラフ用の組み込みビューアー、およびその他の役立つ機能が含まれています (すでに R および Rstudio をインストール済みの方は、次のセクションに進んでください)。

  1. 必要に応じて、R 3.2.2 以降をダウンロードします。インストール ウィザードでは、すべてのデフォルトをそのまま使用します。

  2. 必要に応じて、RStudio Desktop をダウンロードします。インストール ウィザードでは、すべてのデフォルトをそのまま使用します。

ArcGIS プロジェクトの作成

ここで、データを ArcGIS プロジェクトに追加して、サンフランシスコ市の犯罪マップを作成します。

  1. San-Francisco.zip ファイルをダウンロードします。
  2. コンピューター上でダウンロードされたファイルを見つけ、その内容を San-Francisco という名前のフォルダーに展開します。
  3. San-Francisco フォルダーを開きます。

    このフォルダーは、マップに追加する犯罪データが格納された SF_Crime ジオデータベースを含んでいます。

  4. ArcGIS Pro を起動します。サイン インを求められたら、ライセンスが割り当てられた ArcGIS アカウントを使用してサイン インします。
    備考:

    ArcGIS Pro または ArcGIS アカウントがない場合、ArcGIS の無料トライアルにサイン アップできます。

  5. [新規][空のテンプレート][マップ] をクリックします。
  6. [新しいプロジェクトの作成] ウィンドウで「Crime Analysis」という名前を入力して [San-Francisco] フォルダーに保存します。[このプロジェクトのための新しいフォルダーを作成] チェックボックスをオフにします。
  7. [カタログ] ウィンドウの [プロジェクト] タブで、[フォルダー] を展開し、[San-Francisco] フォルダーを展開します。
  8. [SF_Crime] ジオデータベースを展開し、[San_Francisco_Crimes] フィーチャクラスを右クリックして [現在のマップに追加] を選択します。

    生データを表示しているマップ

    マップには、2014 年 1 月から 2014 年 12 月までにサンフランシスコ市内で発生した犯罪の位置が表示されています。

R-ArcGIS Bridge のインストール

R-ArcGIS Bridge をインストールすると、ArcGIS および R との間でデータの読み書きを開始できます。R スクリプトを参照するスクリプト ツールも実行開始できます。

  1. リボンの [プロジェクト] タブをクリックします。

    リボンの [プロジェクト] タブ

  2. [オプション] をクリックします。[オプション] ウィンドウの [アプリケーション] リストで [ジオプロセシング] をクリックします。
  3. [R-ArcGIS サポート] セクションで、目的の R ホーム ディレクトリを選択します。

    [オプション] ウィンドウ

    備考:

    コンピューターにインストールされているすべてのバージョンの R がリストに表示されます。R 3.2.2 以降のバージョンを選択します。

    R-ArcGIS Bridge をインストールしていない場合は、R を ArcGIS に接続するには arcgisbinding R パッケージをインストールする必要があることを示す警告が表示されます。arcgisbinding パッケージは自動的にダウンロードしてインストールするか、個別にダウンロードするか、ファイルからインストールすることができます。R-ArcGIS Bridge を以前にインストールしたことがある場合は、お手元の arcgisbinding パッケージのバージョンを示すインストール済みメッセージが表示されます。アップデートの有無を確認する、最新バージョンをダウンロードする、またはファイルから更新するというオプションが提示されます。

  4. 該当する場合には、警告の横のアイコンをクリックし、[最新バージョンのダウンロード] を選択して Github から arcgisbinding パッケージをインストールします。そうでない場合は、アップデートの有無を確認して、最新バージョンのパッケージを持っていることを確認します。
  5. [オプション] ウィンドウで [OK] をクリックします。
  6. [戻る] ボタンをクリックして、空間解析および統計解析を実行するデータを含んでいる開かれたマップに戻ります。

定義された位置内でカウントすることによってポイント データを集約します。

一見して、マップ上のデータが多いため、データが何を表しているかを理解するのが難しいかもしれません。解析を開始する前に、空間および時間で犯罪数を集約する必要があります。集約によって、以前は見えなかったデータ内の空間的および時間的関係を明らかにします。集約することで、時空間ビン内の犯罪ポイントを集計し、発生した犯罪を、選択した空間および時間の増分ごとにまとめてカウントすることができます。

  1. 必要に応じて、[ジオプロセシング] ウィンドウを開きます。([解析] タブの [ジオプロセシング] グループで、[ツール] をクリックします)
  2. 検索ボックスに、「Create Space Time Cube」と入力して Enter キーを押します。
  3. 結果で [ポイントの集約による時空間キューブの作成 (Create Space Time Cube By Aggregating Points)] をクリックしてツールを開きます。次のパラメーターを入力します。
    • [入力フィーチャ][San_Francisco_Crimes] を選択します。
    • [出力時空間キューブ] で [San-Francisco] フォルダーを参照し、出力に「San_Francisco_Crimes_Space_Time_Cube.nc」という名前を付けます。
    • [時間フィールド] で、[日付] を選択します。
    • [時間ステップの間隔] で「1」と入力し、[月] を選択します。
    • [時間ステップの配列] では、デフォルトのそのまま使用します。
    • [集約形状タイプ][六角形グリッド] を選択します。
    • [距離間隔] で「300」と入力し、[メートル] を選択します。

    ポイントの集約による時空間キューブの作成 (Create Space Time Cube By Aggregating Points)

    これらのパラメーター値は、作成する時空間ビンのサイズおよび形状を指定します。使用するデータが 2014 年のものであるため、月別に犯罪を解析するのが自然な分け方になります。さらに、あなたの部署は、局所的レベルで犯罪を解析する必要があるため、小さい距離間隔の値を選択します。六角形ビンは、接続性および移動経路の側面を含んでいる解析で望ましいため、選択されます。

  4. [実行] をクリックします。

    [ポイントの集約による時空間キューブの作成 (Create Space Time Cube By Aggregating Points)] ツールは、時間の経過とともに空間のパターンおよび傾向を表示できる netCDF ファイルを作成します。このツールは、San_Francisco_Crimes レイヤー内の 74,760 個のポイントを 3,510 個の六角形 (ポリゴン ビン) に集約しました。各六角形は、約 78,000 平方メートルのエリアを表しています。[距離間隔] パラメーターおよび [時間ステップの間隔] パラメーターは、生成されるビンの数および各ビンのサイズに影響を与えます。これらの値は、解析エリアに関する予備知識に基づいて選択できます。またはツールが、データの空間分布に基づいて値を自動的に計算します。[ポイントの集約による時空間キューブの作成 (Create Space Time Cube By Aggregating Points)] ツールがファイルを正常に作成したことは、[メッセージ] ウィンドウをチェックして確認することができます。

犯罪ホット スポットの解析

次に、市全体で犯罪の統計的に有意なクラスターが現れている場所、および減少している場所を解析します。この解析は、部署が問題を予測し、犯罪予防策に対するリソース割り当ての有効性を評価するのに役立ちます。

  1. [ジオプロセシング] ウィンドウで、[時空間ホット スポット分析 (Emerging Hot Spot Analysis)] ツールを検索して開きます。
  2. 次のパラメーターを入力します。
    • [入力時空間キューブ] で、新規作成された時空間キューブを保存した場所を参照して選択します。
    • [分析変数][COUNT] を選択します。
    • [出力フィーチャ] で [San-Francisco] フォルダーを参照し、出力に「San_Francisco_Crimes_Hot_Spots」という名前を付けます。
    • 残りのパラメーターでは、デフォルト値をそのまま使用します。

    [時空間ホット スポット分析 (Emerging Hot Spot Analysis)] ツール

    [近傍距離] でデフォルト値を使用することで、データの空間分布に基づいて、ツールに距離バンドを計算させます。[近傍時間のステップ] の値は、デフォルトでは 1 つの時間ステップ間隔 (この場合は 1 か月) に設定されます。これらの設定は探索的解析には理想的ですが、解析に最適な距離バンドと時間ステップ間隔がわかっている場合は、それらを設定できます。

  3. [実行] をクリックします。

    ツールが実行され、その結果がマップに追加されます (ツールが [近隣距離] パラメーターに使用した値を知らせる警告メッセージが表示されます)。

  4. [San_Francisco_Crimes] レイヤーをオフにして、結果をさらに明瞭に表示します。

    時空間ホット スポット分析結果のマップ

    統計的に有意なホット スポットおよびコールド スポットの傾向がマップ上に表示されます。赤いエリアは、時間とともに犯罪数の多いクラスタリングが生じていることを示し、青いエリアは、時間とともに犯罪数の少ないクラスタリングが生じていることを示しています。各位置は、時間の経過に伴うクラスタリングの傾向に基づいて分類されます。

    濃い赤色の六角形ビンは、持続的なホット スポットです。これらは、すべてのタイム スライスのうちの 90% で統計的に有意なホット スポットだった位置です。ただし、これらの位置には、犯罪数のクラスタリングの強度において、時間の経過に伴う識別できる増加または減少がありません。

    対照的に、アウトラインがベージュ色の六角形ビンに示された薄い赤色では、ホットスポットが強まりつつあります。これらは、すべてのタイム スライスのうちの 90% で統計的に有意なホット スポットだった位置です。さらに、これらは、犯罪数のクラスタリングの強度が時間とともに増加している位置であり、その増加は統計的に有意です。

    反対に、濃い青色のビンは、持続的なコールド スポットです。これらは、犯罪が、統計的かつ持続的にあまりまん延していないエリアです。アウトラインが薄い青色のビンは、コールド スポットが強まりつつありますが、ホット スポットの反対のことを意味しています。これらのセル内の犯罪数の少ないクラスターは、時間とともに強度が高まっています。言い換えると、コールド スポットはさらにコールドになりつつあります。

    部署は、犯罪が持続的であるか、増加しているエリアに特に関心を持つ必要があります。部署は、犯罪のコールド スポットが発生している場所からそれらのエリアへ、リソースを移動することができます。

  5. プロジェクトを保存します。

このレッスンでは、R-ArcGIS Bridge をインストールし、統計解析のためにデータを準備し、一部の使用可能なツールの使用を開始しました。次のレッスンでは、さらに属性をデータセットに追加して、犯罪の発生に影響を与える可能性のある要因に関して、解析から結論を引き出すことができるようにします。


追加属性によるデータの拡張

前回のレッスンでは、R-ArcGIS Bridge をインストールして、統計解析用のデータをダウンロードしました。その後、ArcGIS で、対象のエリアおよび時間に基づいてデータを集約し、データセット内の時間的傾向の調査を開始しました。犯罪のまん延に影響を与える要因を部署がよく理解するために、さらに情報を追加します。

データセットへの属性の追加

犯罪のホット スポットが現れる場所がわかったので、次に、それらが現れる理由を決定することを試みます。特に、エリアの犯罪とその人口の間の関係を調べます。統計解析は、特定のエリア内で発生する犯罪の数が人口による影響を受けるかどうかを決定できます。さらに、あなたの部署は、要因の中で、特定の種類のビジネスの存在、公園の普及、特定のエリア (六角形ビン) 内の公共の土地の量、世帯収入の中央値、および住宅価格を解析することに関心があります。

現在、時空間キューブ レイヤー内の六角形ビンには、この種類の解析に適した属性情報が含まれていません。別のジオプロセシング ツールを実行して、関連する属性情報をレイヤーに付加します。

備考:

ArcGIS Pro のバージョンが 1.4 よりも前である場合、[情報付加] ツールが 1,000 行を超えるデータセットに対して正常に実行されない可能性があるため、データを 2 つのさらに小さい部分に分割する必要があります。

  1. [解析] タブの [ジオプロセシング] グループで [環境] をクリックします。
  2. [環境] ウィンドウで、[フィールド] パラメーター設定を検索します。[完全に記述したフィールド名を保持] チェックボックスをオフにします。
    備考:

    これで、フィールドの取得元となったソースのテーブル名が出力フィールド名に含まれなくなります。この設定は、1 つ以上のソースから結合されたフィールドで構成されている情報付加済みデータを使用する場合に適用されます。

    [フィールド] 環境設定の更新
  3. 以下のパラメーターを指定して [情報付加 (解析ツール)] ツールを実行します。
    注意:

    このステップには、約 50 サービス クレジットが必要です。十分なクレジットが ArcGIS 組織アカウントに割り当てられていない場合 (または、不明な場合)、StepResult フォルダー内で提供されている結果ファイルを使用できます。その場合、ツールを実行する代わりに、[San_Francisco_Crimes_Enrich.shp] をマップに追加して、次のステップをスキップします。

    • [入力フィーチャ][San_Francisco_Crimes_Hot_Spots] を選択します。
    • [出力フィーチャクラス] で、[Crime Analysis.gdb] という名前のデフォルトのプロジェクト ジオデータベースを参照して選択し、出力フィーチャクラスの名前を [San_Francisco_Crimes_Enrich] に設定します。
    • [変数] でプラスをクリックします。[変数の追加] ウィンドウで、検索バーを使用して、[2010 Total Population][2019 Median Home Value]、[2019 Median Household Income][2019 Renter Occupied HUs][Food & Beverage Stores Bus][Food Service/Drinking Estab Bus] を特定して選択します。
      備考:

      Demographic data is updated periodically, so the available variables and values may differ from those specified in the lesson. If necessary, use the most recent data.

    データ変数を含む [レイヤーへの情報付加]

    備考:

    変数の追加方法は、変数名に影響を与える可能性があるため、重要です。変数名が表示と異なる場合は、R スクリプトを貼り付けるときに編集する必要があります。そうしないとラインが実行されません。

    犯罪率に関連する可能性のある変数の網羅的リストではありませんが、このリストから解析を開始するのが適切です。次に、結果を調べてみましょう。

  4. [コンテンツ] ウィンドウで、[San_Francisco_Crimes_Enrich] レイヤーを右クリックして [属性テーブル] を選択します。
  5. 必要に応じて、最後の 8 つの列を表示できるまで、属性テーブル内を右にスクロールします。

    新しく追加した情報付加フィールドが元のフィールド名よりも説明的なエイリアス名でテーブルに表示されます。エイリアス名のリストを次に示します。エイリアス名の後に元のフィールド名が括弧内に示されています。

    テーブル内の新しい属性

    [レイヤーへの情報付加] ツールの結果には、次のフィールドと値が含まれています。

    • [HasData] - [レイヤーへの情報付加] ツールが特定の六角形ビンのデータを検出したかどうかを示します。0 は、六角形に、選択したすべての属性に関して使用できるデータがないことを意味し、1 は、六角形ビンに、選択した属性のうちの少なくとも 1 つのデータがあることを意味します。このフィールドを使用してデータをフィルター処理して、関連する属性情報を持つフィーチャのみをマップに表示することができます。
    • [2010 Total Population (historicalpopulation_tspop10_cy)] - 六角形ビンごとの人口のカウントを含みます。一部の六角形の人口が 0 であることに注意してください。工業地域内または公園内にあるために、六角形ビンの人口が 0 になることがあります。あなたの部署で最も優先順位が高いのは、人口密度の高いエリア内の犯罪を減らすことです。そのため、人口密度の高い位置のみに注目します。
    • [2019 Median Home Value (wealth_medval_cy)] - 六角形ビンごとの住宅価格の中央値が示されます。
    • [2019 Median Household Income (wealth_medhinc_cy)] - 六角形ビンごとの世帯収入の中央値が示されます。
    • [2019 Renter Occupied HUs (ownerrenter_renter_cy)] - 六角形ビンごとの借家人の世帯数が示されます。
    • [Food & Beverage Stores Bus (NAICS) (businesses_n13_bus)] - 各六角形ビン内にある食品飲料店の数が示されます。
    • [Food Service/Drinking Estab Bus (NAICS) (businesses_n37_bus)] - 各六角形ビン内にある食品、飲料、またはその両方を提供する企業の数が示されます。

解析の実行に必要な情報を含むフィーチャクラスを作成しましたが、現段階で、解析の目標に関連しないデータが一部含まれています。対象属性に関する情報がない六角形ビンは、質問に答えるのに役立つ値や新しい情報を何も追加しません。さらに、住民のいないエリアは、今回、あなたの部署にとって優先度が高くありません。そのため、最も役立つ情報のみを含むように、情報が付加されたデータセットを縮小する必要があります。

追加解析のためのデータセットの準備

次に、解析に関連するデータを選択し、その情報のみを含むサブセットを作成します。このようにして、追加の解析で必要な場合には、情報が付加されたすべてのデータに引き続きアクセスすることができますが、必要なデータのみを使用して現在の解析を続行することができます。

  1. [ジオプロセシング] ウィンドウで、[属性検索 (Select Layer By Attribute)] ツールを検索して開きます。
  2. [入力行][San_Francisco_Crimes_Enrich] を選択します。
  3. [選択タイプ] で、[新規選択] が選択されていることを確認します。
  4. 条件式を追加するには、[新しい条件式] ボックスをクリックします。
  5. [フィールド] ボックスで [HasData] を選択します。
  6. 条件式の演算子として [イコール] を選択し、値パラメーター ボックスに値 0 を入力します。
  7. [項目の追加] をクリックして、条件式 [または 2010 Total Population が 0 に等しい] を追加します。
  8. Enter キーをクリックして、2 番目の条件式を完成させます。緑色のチェックをクリックして、両方の条件式の構文が有効であることを確認します。
    備考:

    SQL 式の記述の詳細については、「ArcGIS で使用されるクエリ式への SQL リファレンス」をご参照ください。

    属性検索 (Select Layer By Attribute) ツール

  9. [実行] をクリックします。

    このツールが実行され、情報が付加されたデータが含まれていないフィーチャまたは人口が 0 人のフィーチャが選択されます。これらのフィーチャは、工業用地や公園の可能性があります。

  10. 必要に応じて、[San_Francisco_Crimes_Enrich] レイヤーの属性テーブルを開きます

    1,996 行のうちの 222 行が選択されていること、つまり、それらの行の HasData フィールドまたは TOTPOP10 フィールドに 0 の値が存在していることを確認します。これらの選択されたフィーチャを含まない新しいデータセットを作成して、解析に関連するデータを含んでいるフィーチャに焦点を合わせることができるようにします。

  11. 属性テーブルで、[切り替え] ボタンをクリックします。

    属性切り替えボタン

    このボタンは、データまたは人口を含んでいない 222 行の選択セットを、それ以外のすべての行と交換します。1,996 行のうちの 1,774 行が選択されているはずです。これで、情報が付加され、かつ人口を含んでいるデータを独自のレイヤーにコピーすることができます。

  12. [ジオプロセシング] ウィンドウで、[フィーチャのコピー (Copy Features)] ツールを検索して開きます。
  13. [入力フィーチャ][San_Francisco_Crimes_Enrich] を選択します。

    特定の行が選択されている場合、[フィーチャのコピー (Copy Features)] ツールはそれらの行のみを新しいフィーチャクラスの結果にコピーします。

  14. [出力フィーチャクラス] で、[Crime Analysis.gdb] という名前のデフォルトのプロジェクト ジオデータベースを参照して選択し、出力フィーチャクラスの名前を [San_Francisco_Crimes_Enrich_Subset] に設定します。
  15. [実行] をクリックします。

    現在、San_Francisco_Crimes_Enrich および San_Francisco_Crimes_Enrich_Subset という 2 つのレイヤーが存在しています。前者は完全なデータセットを含んでおり、後者は、情報が付加された属性を含むエリア、または住民が住んでいるエリアのデータのみを含んでいます。

  16. プロジェクトを保存します。

次のレッスンでは、R でそれらの属性を解析する方法、およびそれらの属性がエリアで犯罪が発生する可能性にどのように影響を与えるかについて学習します。


R および ArcGIS Pro を使用した統計解析の実行

前回のレッスンでは、人口に関する属性などの追加属性を使用して、データに情報を付加しました。今回は、マップ上の位置ごとに犯罪率を計算します。犯罪率は、人口に対する犯罪の発生数を決定します。それによって、人口が大きく異なるエリア間で犯罪数を適切に比較することができ、データに追加したその他の属性によって犯罪率がどの程度影響を受けるかを確認することができます。

ArcGIS では、属性テーブルのフィールド演算を使用して、100,000 人当りの犯罪数を決定できますが、計算した犯罪率が統計的に堅牢であることを確認する必要があります。R で関数を使用して犯罪率をスムージングします。

この解析では、経験ベイズ スムージング手法を使用します。経験ベイズ スムージングは、各ビン内の人口をデータの信頼性の尺度として使用するレート スムージング手法であり、人口が多いほど高い信頼性を与えます。その後、平均に向かって低下する信頼性を使用してエリアを調整します。この手法は、犯罪率に安定性を与えます。

R へのデータのブリッジ

次に、犯罪率に対して経験ベイズ スムージングを実行するために、RStudio で作業します。R-ArcGIS Bridge が存在するため、ArcGIS Pro プロジェクト内のデータが RStudio に接続されて、RStudio からアクセス可能になります。

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

    次に、arcgisbinding パッケージのすべての関数を読み込むコマンドを実行します。次に、すばやくチェックを実行する別のコマンドを実行して、ブリッジが正しく実行されていること、および使用している ArcGIS Pro のバージョンを R が認識することを確認します。

  2. R コンソールで次のコードを入力し、Enter キーを押します。
    library(arcgisbinding)
    備考:

    [Error in library(arcgisbinding): there is no package called ‘arcgisbinding'] などのメッセージを受け取ったら、R-ArcGIS Bridge が正しくインストールされたことになります。

  3. R コンソールで次のコードを入力し、Enter キーを押します。
    arc.check_product()

    arc.check_product() 関数は、ArcGIS 製品およびライセンスに関する情報を RStudio コンソールに出力します。

    arcgisbinding パッケージが RStudio ワークスペースに読み込まれ、R から ArcGIS への接続が初期化された後に、ArcGIS 内の現在のプロジェクトから、データを RStudio ワークスペースに読み込むことができます。シェープファイル、ジオデータベースからのフィーチャクラス、およびテーブルはすべて、open 関数で使用するための有効な引数です。

  4. arc.open() 関数を使用します。その引数で、情報が付加されたデータ サブセット (San_Francisco_Crimes_Enrich_Subset) への絶対パスを入力して Enter キーを押します。
    備考:

    プロジェクト データは、コード例に示した場所とは異なる場所に保存されている場合があります。コピーして貼り付ける場合、それに応じてパスを更新します。パスを Rstudio で指定するには、バック スラッシュ (\) を二重バック スラッシュ (\\) に置き換えるか、バック スラッシュを単一のスラッシュ (/) に置き換えます。

    たとえば、「C:\San-Francisco\Crime Analysis.gdb\San_Francisco_Crimes_Enrich_Subset」を「C:\\San-Francisco\\Crime Analysis.gdb\\San_Francisco_Crimes_Enrich_Subset」または「C:/San-Francisco/Crime Analysis.gdb/San_Francisco_Crimes_Enrich_Subset」に置き換えます。

    enrich_df <- arc.open(path = 'C:/Lessons/San-Francisco/Crime Analysis.gdb/San_Francisco_Crimes_Enrich_Subset')

    open 関数は、変数 arc.dataset に格納した新しい enrich_df クラス オブジェクトを返します。このオブジェクトは、ArcGIS データの空間情報と属性情報の両方を含んでおり、ここで他の関数で使用することができます。

    arc.select() 関数を使用して、解析用のデータとして使用する enrich_df オブジェクトから属性のサブセットを選択することができます。

  5. arc.select() 関数を使用します。1 番目の引数で、サブセットの作成元になるオブジェクトとして enrich_df を入力します。2 番目の引数で、サブセットに含めるデータセットの各属性の名前を含んでいる文字ベクトルを追加し、Enter キーを押します。
    enrich_select_df <- arc.select(object = enrich_df, fields = c('OBJECTID', 'SUM_VALUE', 'populationtotals_totpop10', 'wealth_medval_cy', 'wealth_medhinc_cy', 'ownerrenter_renter_cy', 'businesses_n13_bus', 'businesses_n37_bus'))
    備考:

    RStudio では、arc.select() 関数はフィールド エイリアスを認識しないため、サブセットで使用する実際のフィールド名を指定する必要があります。San_Francisco_Crimes_Enrich_Subset フィーチャクラスの実際のフィールド名とそれに関連するエイリアス名を次に示します。

    • populationtotals_totpop10 - 2010 Total Population
    • wealth_medval_cy - 2018 Median Home Value
    • wealth_medhinc_cy - 2018 Median Household Income
    • ownerrenter_renter_cy - 2018 Renter Occupied HUs
    • businesses_n13_bus - Food & Beverage Stores Bus (NAICS)
    • businesses_n37_bus - Food Service/Drinking Estab Bus (NAICS)

    現在、enrich_select_df 変数には、R 内の完全な元のシェープファイルから選択した 8 つの属性を持つ R データ フレーム オブジェクトが格納されています。それらの属性は、ID 値、六角形ビンごとの犯罪数、およびデータに情報を付加するのに使用した 6 つの属性を含んでいます。

    最後に、arc.data2sp() 関数を使用して、R データ フレームを空間データ フレーム オブジェクトに変換します。空間データ フレーム オブジェクトは、sp パッケージに含まれている空間データ クラスの 1 つです。sp パッケージは、ポイント、ライン、ポリゴン、ピクセル、リング、グリッドなどの空間データを操作するためのクラスおよびメソッドを提供します。この関数を使用して、投影法などのデータの空間属性を、情報の消失を心配することなく ArcGIS から R に転送することができます。

    sp パッケージを使用したことがない場合、sp パッケージを RStudio パッケージ ライブラリにインストールし、sp パッケージからワークスペース環境に関数を読み込む必要があります。

  6. library() 関数を使用して、sp パッケージを RStudio に読み込みます。
    install.packages("sp")
    library(sp)
  7. arc.data2sp() 関数を使用します。1 番目の引数で、enrich_select_df オブジェクトに変換するオブジェクトとして sp データ フレームを使用します。
    enrich_spdf <- arc.data2sp(enrich_select_df)

データが ArcGIS Pro から RStudio にブリッジされました。

スムージングされた犯罪率の計算

解析を開始するために必要なすべての情報が準備されましたが、現在の属性ラベルが曖昧で短縮されていることに気付いているかもしれません。これは、San_Francisco_Crimes_Enrich_Subset フィーチャクラスの元のフィールド名を表しています。R では、情報が付加された属性の名前を、識別しやすいように変更することができます。それが完了したら、経験ベイズ スムージングをデータに対して実行します。

  1. col_names という文字ベクトルを作成します。ベクトル内のアイテムごとに、現在のラベルを置き換えるのに使用する新しい属性名を指定します。
    col_names <- c("OBJECTID", "Crime_Counts",
    "Population", "Med_HomeValue", "Med_HomeIncome",
    "Renter_Count", "Grocery",
    "Restaurant")
  2. colnames() 関数を使用します。その引数で、enrich_spdf@data を使用して空間ポリゴン データ フレームのデータ属性を選択します。元の変数名の代わりに割り当てられる属性ラベルの値として、作成した col_names ベクトルを割り当てます。
    colnames(enrich_spdf@data) <- col_names

    空間ポリゴン データ フレームのデータ属性の列名を更新しました。変更を確認するには、次のコマンドを R コンソールに入力して、データ属性の最初の数行を表示します。

    head(enrich_spdf@data)

    次に、犯罪率に対して経験ベイズ スムージングを実行するために、EBest() 関数を使用します。EBest() 関数は、spdep パッケージに含まれています。以前と同様に、spdep パッケージを操作したことがない場合は、library(spdep) 行を実行して spdep ライブラリを現在のワークスペースに読み込む前に、このパッケージをインストールしておく必要があります。

  3. コンソールで以下のコードの行を入力して、六角形ビンごとに経験ベイズ スムージングが適用された犯罪率を計算します。各行を個別に実行するか、またはコード ブロック全体を貼り付けて、すべての行を一度に実行することができます。
    備考:

    コード ブロックをコピーしてコンソールに貼り付けると、構文エラーが発生する場合があります。エラーが発生した場合は、コードの各行を別々に入力することを検討してください。

    install.packages("spdep")
    library(spdep)
    n <- enrich_spdf@data$Crime_Counts
    x <- enrich_spdf@data$Population
    EB <- EBest (n, x)
    p <- EB$raw
    b <- attr(EB, "parameters")$b
    a <- attr(EB, "parameters")$a
    v <- a + (b/x)
    v[v < 0] <- b/x
    z <- (p - b)/sqrt(v)

    EBest() R 関数は、特定タイプの経験ベイズ推定を実行します。一般的には、従来のベイズ法は、データ値の観測が完了する前に事前分布を使用するのに対して、経験ベイズ推定は、使用されるベータ事前分布がデータから推定されるため、これらの手法に近似するものとなっています。ただし、このレッスンで使用される EBest() R 関数では、実際には、経験ベイズ推定の修正版を使用しており、パラメーターの推定値はモーメント法で決定されます。コードでは、変数 ab は、それぞれ、モーメント法のファイとガンマの値を参照します。これらの値は、人口パラメーターの推定値 (この場合の人口は、六角形ビンの人口値を参照するのではなく、統計のサンプルと人口データのコンセプトを参照します) であり、レートのスムージングの実行に使用されます。この場合のスムージングは、標準スコア (z スコア) を計算することで実行されます。この計算では、未加工の各粗率値から人口平均値 (モーメント法で推定されたガンマ値) を引いて、標準偏差で割ります。標準偏差は、分散の平方根 (負の値は不可) を使用して計算します。したがって、計算は変数 v に関して実行されます。

    最後に、スムージングされた犯罪率を、新しい属性として空間データ フレーム オブジェクトに追加します。

  4. enrich_spdf@data$EB_Rate を使用して EB_Rate という新しい属性を空間ポリゴン データ フレームに作成し、それに対して、位置ごとに犯罪率を含んでいる数値ベクトル z を割り当てます。
    enrich_spdf@data$EB_Rate <- z

    これで、データには、EB_Rate という新しい列が含まれるようになりました。この列は、上で六角形ビンごとに計算した犯罪率の値を含んでいます。

    R での作業が完了したので、次に ArcGIS に戻り、新規作成した犯罪率をマッピングおよび解析によって調査します。

    まず、arc.sp2data() 関数を使用してデータを R 空間データ フレーム オブジェクトから ArcGIS ファイル タイプに再び変換します。次に、arc.write() を使用して、データを選択したプロジェクトに書き込みます。

  5. arc.sp2data() 関数を使用して、その引数として enrich_spdf を入力します。結果を、arcgis_df などの新しい変数に割り当て、Enter キーを押します。
    arcgis_df <- arc.sp2data(enrich_spdf)

    これで、R 空間ポリゴン データ フレームがデータ フレーム オブジェクトに再び変換されました。このデータ フレーム オブジェクトは、ArcGIS プロジェクトに書き込むことができます。データ フレーム オブジェクトは、シェープファイル、テーブル、またはジオデータベース内のフィーチャクラスとして ArcGIS プロジェクトに再び書き込むことができます。

  6. arc.write() 関数を使用します。1 番目の引数で、SF_Crime ジオデータベースのパスを入力し、フィーチャクラスに San_Francisco_Crime_Rates という名前を付けます。arc.write() 関数の 2 番目の引数で、ArcGIS に書き込む R オブジェクトを入力します。最後に、3 番目のオプションのパラメーターを追加して、ArcGIS に書き込むオブジェクトの空間参照を指定します。Enter キーを押します。
    arc.write('C:/Lessons/San-Francisco/SF_Crime.gdb/San_Francisco_Crime_Rates', arcgis_df, shape_info = arc.shapeinfo(enrich_df))

    空間参照により、マップへの追加時にデータが正確に投影されるようになります。

R を使用して、データを強力なデータに変換しました。六角形ビンごとの犯罪数を、人口の変化を考慮する犯罪率に変換し、人口の変化が発生する犯罪数にどのように影響を与えるかを示しました。経験ベイズ スムージングを使用して、作成した犯罪率が、位置ごとに使用できる情報量に対して堅牢であることを確認しました。

次に、犯罪の傾向とパターンを視覚化できるように、ArcGIS Pro で再びデータを調べます。

引き続き ArcGIS Pro で解析する

R で調整されたデータを ArcGIS に戻すときがきたので、RStudio を最小化して ArcGIS プロジェクトを最大化します。

  1. RStudio を最小化して、ArcGIS Pro を最大化します。
  2. [カタログ] ウィンドウで、[SF_Crime] ジオデータベースを右クリックして [更新] を選択します。

    更新された SF_Crime ジオデータベース

    現在 SF_Crime ジオデータベースは、スムージングされた犯罪率が含まれている San_Francisco_Crime_Rates フィーチャクラスを含んでいます。

  3. [San_Francisco_Crime_Rates] フィーチャクラスを右クリックして [新しいマップに追加] をクリックし、[マップ] を選択します。

    このファイルは、プロジェクト内のマップに追加され、解析に使用することができます。

犯罪率が異常に高いエリアの識別

住民の数に対して犯罪数が予想外に高いサンフランシスコ市内のエリアを確認するために、別のホット スポット分析を実行します。

実行した最初のホット スポット分析では、犯罪数が予想よりも統計的に有意に高いエリアを識別し、位置ごとの犯罪数が時間とともにどのように変化しているかに関する情報を提供しました。今回のホット スポット分析では、高い犯罪率および低い犯罪率の統計的に有意なクラスターを識別し、エリア内の人口に対して犯罪数が異常に高いエリアを確認することができます。

  1. [ジオプロセシング] ウィンドウで、[最適化ホット スポット分析 (Optimized Hot Spot Analysis)] ツールを検索して開きます。
  2. [入力フィーチャ][San_Francisco_Crime_Rates] を選択します。
  3. [出力フィーチャクラス] で、[Crime Analysis.gdb] という名前のデフォルトのプロジェクト ジオデータベースを参照して選択し、出力フィーチャクラスの名前を [San_Francisco_Crime_Rates_OHSA] に設定します。
  4. [分析フィールド][EB_Rate] を選択します。

    EB_Rate 列に含まれている R で計算された犯罪率に対してこのツールを実行することによって、このツールの結果は、犯罪率の値が高いか低い統計的に有意な空間クラスターの位置を特定します。

  5. [実行] をクリックします。

    解析結果マップ

    マップ上の明るい赤色の六角形ビンは、99% の信頼性を持つ非常に値の高いクラスタリングが存在するエリアを示しています。これらは、人口を考慮した場合でも異常に高い犯罪数が発生しているエリアです。各エリアの人口が考慮されると、統計的に有意なコールドスポット (犯罪数が少ないクラスタリングのエリア) がないことに注意してください。

  6. プロジェクトを保存します。

このレッスンでは、R ArcGIS Bridge を使用してデータを R に転送し、スムージングされた犯罪率を計算するために必要な機能を活用しました。その後、データを ArcGIS に再び転送し、引き続き解析を行って、発生している犯罪数を低減するために追加の警察のリソースを必要としているエリアをさらに正確に示しました。

次のレッスンでは、R で探索的データ解析を実行し、犯罪率における傾向が、データに情報を付加するのに使用したその他の属性のいずれかと関係があるかどうかを確認します。


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

前回のレッスンでは、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 をワークフローに追加したことで、サンフランシスコ市における犯罪およびそれらを減らすためにできることを理解しようと努力する際に、あなたおよびあなたの部署を支援する可能性が、これまでよりも、すぐ手に届くところまで高まりました。