16 結論
必須パッケージ
序章と同様、この結論の章にもコードの塊はほとんどない。 しかし、その前提条件が厳しいのである。 持っていることが前提である。
- Part I (Foundations)の全章の練習問題を読み、挑戦してみること。
- 第 III 部 (応用編) では、ジオコンピューティング を使って、仕事やそれ以外の場面で、どのように実社会の問題を解決できるかを考えてみよう。
16.1 イントロダクション
本章の目的は、繰り返されるテーマや概念に言及しながら内容をまとめ、今後の応用や開発の方向性を示唆することである。 Section ?? は、R で地理データを扱うための幅広いオプションについて説明している。 選択肢はオープンソースソフトウェアの重要なフィーチャである。このセクションでは、様々なオプションの中から選択するためのガイダンスを提供する。 Section 16.3 には、本書の内容とのギャップを説明し、ある研究分野が意図的に省略され、ある分野が強調された理由を説明している。 この議論は、「この本を読んで、次はどこへ行くのか」という問いにつながる(その答えは、Section 17 )。 Section 17.1 は、 で提起されたより広範な問題に戻る。 Chapter 1 その中で私たちは、ジオコンピューティングを、手法が一般にアクセス可能で、再現性があり、 、協力的なコミュニティによってサポートされていることを保証する、より広い「オープンソースアプローチ」の一部として考えている。 この最終章では、参加するためのポイントも紹介している。
16.2 パッケージの選択
R の特徴は、同じ結果を得るために複数の方法が存在することが多いことである。 下記のコードでは、Chapter 3 と Chapter 5 にある 3 つの関数を使って、ニュージーランドの 16 の地域を 1 つの幾何学的形状にまとめている。
library(spData)
nz_u1 = sf::st_union(nz)
nz_u2 = aggregate(nz["Population"], list(rep(1, nrow(nz))), sum)
nz_u3 = dplyr::summarise(nz, t = sum(Population))
identical(nz_u1, nz_u2$geometry)
#> [1] TRUE
identical(nz_u1, nz_u3$geom)
#> [1] TRUE
出来上がったオブジェクトのクラス、属性、列名は nz_u1
から nz_u3
まで異なるが、その幾何学的な形状は同一である。
これは、ベースとなるR関数 identical()
.100
どちらを使うか?
前者は nz
に含まれるジオメトリデータのみを処理するので高速であるが、他のオプションは属性操作を行うので、後続のステップに役立つ可能性がある。
つまり、Rで地理データを扱う場合、たとえ1つのパッケージであっても、複数の選択肢から選ぶことができる場合が多いということである。 Rのパッケージが増えれば、さらに選択肢は広がる。例えば、古いパッケージのspを使っても同じ結果を得ることができる。 Chapter 2 で説明している理由から、本書で紹介している sf やその他のパッケージの使用を推奨しているが、代替ソフトの存在を知っておき、自分の選んだソフトを正当化できるようにしておくとよいだろう。
よくある(そして時には論争の的になる)選択は、tidyverse とベースとなるRのアプローチのどちらを取るかということである。
私たちは両方をカバーし、さまざまなタスクにどちらが適しているかを決定する前に、両方を試すことを勧める。
Chapter 3 で説明されている次のコードチャンクは、基本的なR演算子 [
と tidyverse パッケージ dplyr の select()
関数を使用して、属性データのサブセットがそれぞれのアプローチでどのように機能するかを示している。
構文は異なるが、結果は(本質的に)同じである。
library(dplyr) # attach tidyverse package
nz_name1 = nz["Name"] # base R approach
nz_name2 = nz |> select(Name) # tidyverse approach
identical(nz_name1$Name, nz_name2$Name) # check results
#> [1] TRUE
ここでまた、「どちらを使うか」という問題が出てく。
答えは、「人それぞれ」である。
それぞれのアプローチには利点がある。パイプ構文は人気があり、魅力的な人もいるし、ベースとなるR はより安定していて、他の人にはよく知られている。
そのため、どちらを選ぶかは好みの問題である。
しかし、地理データを扱うのにtidyverse 関数を使う場合は、いくつかの落とし穴に注意する必要がある(本書のサポートサイトにある補足記事 tidyverse-pitfalls
を参照。)
R のサブセット演算子 [
や dplyr 関数 filter()
など、一般的に必要とされる演算子や関数について詳しく説明したが、他のパッケージの地理データを扱うための関数で、これまで言及されていないものが数多くある。
Chapter 1 は、地理データを扱うための20以上の有力なパッケージについて言及しており、この後の章ではそのうちのほんの一握りのパッケージについて紹介する。
他にも何百とある。
2022年半ばの時点で、Spatial Task Viewに記載されているパッケージは約200個ある。
地理データに関するパッケージや関数は年々増え続けており、一冊の本ですべてを網羅することは現実的ではない。
Rの空間エコシステムの進化速度に圧倒されるだろうが、幅広い選択肢に対応するための戦略がある。 私たちのアドバイスとしては、まず一つの手法を深く学ぶことから始め、利用可能な選択肢の広さについて一般的に理解することである。 このアドバイスは、他の知識やアプリケーションの分野と同様に、R( Section 17 他の言語での開発もカバーしている)で地理的な問題を解決する場合にも当てはまる。
もちろん、パッケージによって性能は大きく異なるので、パッケージ選びは重要な判断材料になる。 この多様性の中から、将来性があり(将来まで長く使える)、高性能(他のRパッケージと比較して)、補完性のあるパッケージに焦点を当てることとした。 しかし、例えば地図を作るためのパッケージの多様性に示されるように、私たちが使ってきたパッケージにはまだ重複がある( Chapter 9 参照)。
パッケージの重なりは必ずしも悪いことではない。 レジリエンスやパフォーマンス(開発者間の切磋琢磨と相互学習が一因)、そしてオープンソースソフトウェアの重要なフィーチャである選択肢を増やすことができるのである。 この文脈では、本書で提唱されているsf/tidyverse/rasterエコシステムのような特定のアプローチを使うかどうかは、代替手段を知った上で決定されるべきである。 例えば、sf が後継として設計された sp/rgdal/rgeos エコシステムは、この本でカバーする多くのことが可能で、その古さゆえに、他の多くのパッケージによって構築されている101 点パターン解析でよく知られているが、 spatstat パッケージは、ラスタ やその他のベクタ幾何学もサポートしている (Baddeley and Turner 2005) . 執筆時(2018年10月)には69のパッケージが依存しており、パッケージ以上の存在となっている。spatstat は、R-spatial の代替エコシステムである。
また、現在開発中の有望な代替品も意識している。 例えば、starsというパッケージは、時空間データを扱うための新しいクラスシステムを提供する。 このトピックに興味があれば、パッケージの source code やより広範な SpatioTemporal Task View で更新を確認することができる。 他の領域でも同じことが言える。ソフトウェアの選択を正当化し、最新の情報に基づいてソフトウェアの決定を見直すことが重要である。
16.3 ギャップとオーバーラップ
本書で扱うトピックには、多くのギャップがあり、また重複している部分もある。 あるトピックを強調し、あるトピックを省略するなど、選択的に行っている。 地理データの操作、投影、データの読み書き、可視化など、実際のアプリケーションで最も必要とされるトピックを重視するよう心がけることとした。 これらのトピックは各章に繰り返し登場し、重複する部分が多いため、ジオコンピューティングに不可欠なスキルを身につけることができる。 。
一方、あまり使われていないトピックや、他で深く扱っているトピックは割愛した。 例えば、点パターン解析、空間補間(クリギング)、空間疫学などの統計的なトピックは、Chapter 12 でカバーされている機械学習 テクニックなどの他のトピックに関連して言及されているだけである(まったく言及されていない場合)。 これらの手法については、Bivand, Pebesma, and Gómez-Rubio (2013) の統計的指向の章や、Baddeley, Rubak, and Turner (2015) によるポイントパターン解析の本など、既に優れた資料がある。 その他、リモートセンシングや、GIS専用ソフト( )と並行してのRの利用など、注目されたトピックは限られていた。 これらの話題については、Wegmann, Leutner, and Dech (2016) や Marburg University から入手できる GIS 関連教材など、多くの資料がある。
空間統計モデリングや推論技術ではなく、機械学習( )に重点を置いている。 繰り返しになるが、これらのトピック、特に生態系のユースケースについては、A. Zuur et al. (2009)、A. F. Zuur et al. (2017) や、David Rossiter による Geostatistics & Open-source Statistical Computing の自由に使える教材やコードなどが既にあり、 css.cornell.edu/faculty/dgr2 でホストされており、 R for Geographic Data Science プロジェクトでは レスター大学 の Stefano De Sabbata による地理データ科学向けの R の導入 などがあるからであった。 (Blangiardo and Cameletti 2015; Krainski et al. 2018) また、モデリングと不確実性推定の強力なフレームワークであるベイズモデリングを使用した空間統計 に関する優れたリソースもある。
最後に、ビッグデータ の分析については、ほとんど省略している。 特に地理的なデータはあっという間に大きくなってしまうので、これは意外に思われるだろう。 しかし、ビッグデータ解析を行うためには、小さなデータセットで問題を解決する方法を知っていることが大前提となる。 もちろん、ツールボックスを拡張する必要はあるが、一度学んだら、ビッグデータに関する質問にも全く同じ手法を適用できる。 最初に学ぶべきは、地理データのクエリーの扱い方である。 というのも、ビッグデータ の分析は、多くの場合、特定の統計分析のためにデータベースから少量のデータを抽出することに集約されることがある。 このため、空間データベース の紹介と、R 内から GIS を利用する方法を Chapter 10 で紹介した。 もし、本当に大きな、あるいは完全なデータセットで分析をしなければならないのであれば、解決しようとしている問題は、恥ずかしくなるほど並列であることが望まれる。 そのためには、Section 10.6.2 で紹介した Apache Sedonaなど、この並列化を効率的に行うことができるシステムを習得する必要がある。 データセットの大きさに関わらず、小さなデータセットで使用したのと同じテクニックやコンセプトは有効である。
16.4 Getting help?
ジオコンピューティングは大きな分野であり、目指すアウトカムに到達できない可能性が高い。 多くの場合、データ分析ワークフローの特定のポイントで「立ち往生」し、不可解なエラーメッセージや予期せぬ結果で何が起こっているのかほとんど分からないことがある。 このセクションでは、そのような問題を克服するために、問題を明確に定義し、解決策に関する既存の知識を検索し、それらのアプローチで問題が解決されない場合は、良い質問をする技術によって、ポイントを提供する。
ある地点で行き詰まったとき、まず一歩下がって、どのようなアプローチが最も解決につながるかを考えてみるのもよいだろう。 以下のステップを順番に試すことで、問題解決のための構造的なアプローチが得られる(すでに試している場合はステップをスキップすることもできる)。
1.第一原理から始めて、何を達成しようとしているのかを正確に定義する(多くの場合、以下のようなスケッチも必要)。
2.コードの個々の行や個々のコンポーネントの出力を実行し、調べることによって、コードのどこで予期せぬ結果が発生したかを正確に診断する(例えば、RStudioでカーソルで選択し、Ctrl+Enterを押すことによって、複雑なコマンドの個々の部分を実行することができる)。
3.3. 前のステップで「故障のポイント」と診断された関数のドキュメントを読んでみよう。関数に必要な入力を理解し、ヘルプページの下部によく掲載されている例を実行するだけで、驚くほど大きな割合の問題を解決できる (コマンド ?terra::rast
を実行し、その関数を使い始めるときに再現する価値のある例までスクロールダウンする。例)
4.前のステップで説明したようにRの内蔵ドキュメントを読んでも問題が解決しない場合は、あなたが見ている問題について他の人が書いていないかどうか、オンラインで広く検索してみるのもよいだろう。検索する場所については、以下のヘルプ検索場所のリストを参照。
5.上記のすべてのステップが失敗し、オンライン検索で解決策が見つからない場合、再現性のある例で質問を作成し、適切な場所に投稿することができる。
上記のステップ1から3は自明なことであるが、インターネットは広大であり、検索オプションも多数あるため、質問を作成する前に効果的な検索方法を検討する価値がある。
16.4.1 オンラインによるソリューションの検索
多くの問題に対して論理的なスタートを切るのは、検索エンジンである。 ググる」ことで、あなたが抱えている問題についてのブログ記事、フォーラムメッセージ、その他のオンラインコンテンツを発見することができる場合があるのである。 問題や質問について明確に記述することは有効な方法であるが、具体的に記述することが重要である(例えば、データセット固有の問題であれば、関数やパッケージ名、入力データセットのソースなどを参照すること)。 また、詳細な情報を記載することで、オンライン検索をより効果的にすることができる。
- 引用符を使用すると、返される結果の数を減らすことで、お客様が抱えている問題に関連する「ヒット」する可能性を最大限に高めることができる。
- time restraintsを設定する。例えば、過去1年以内に作成されたコンテンツのみを返すようにすれば、進化するパッケージのヘルプを検索する際に便利である。
- 追加の search engine features を利用する。例えば、site:r-project.org で CRAN にホストされているコンテンツに検索を限定する。
16.4.2 助けを求めるための検索(依頼)場所
- R’s Special Interest Group on Geographic data email list ( R-SIG-GEO)
- GIS Stackexchangeのウェブサイト( [gis.stackexchange.com] ) (https://gis.stackexchange.com/)
- 大型・汎用プログラミングQ&Aサイト stackoverflow.com
- RStudio Community 、 rOpenSci Discuss ウェブフォーラム、 Stan フォーラムなど、特定のソフトウェアツールに関連するフォーラムなど、特定のエンティティに関連するオンラインフォーラム。
- GitHubなどのソフトウェア開発プラットフォームは、R-spatialパッケージの大半の課題トラッカーや、最近ではsfnetworksパッケージに関する議論(バグ報告だけでなく)を促すために作られた組み込みの議論ページなどをホストしている( luukvdmeer/sfnetworks/discussionsを参照)。
16.4.3 再現性のある例で良い質問をする方法
良い質問をするという点では、アクセスしやすく、完全に再現可能な例によってサポートされた、明確に述べられた質問が鍵となる。 また、ユーザーの視点から「うまくいかなかった」コードを示した後に、「こうしてほしい」ということを説明すると効果的である。 再現性のあるサンプルを作成するために非常に便利なツールがreprexパッケージである。
16.4.4 問題の定義とスケッチ
新しいジオコンピューティングの方法論やアプローチを開発するときの最良の出発点は、しばしばペンと紙(または共同スケッチやアイデアの迅速な共有を可能にする Excalidraw や tldraw などの同等のデジタルスケッチツール)である。方法論開発の作業ソフトウェアの最も創造的な初期段階においては、あらゆる種類の*は思考の速度を落とし、重要な抽象概念から思考を遠ざけることになる。 また、数値的に「前と後」をスケッチできる最小限の例を参照しながら、数学で質問を組み立てることも強く推奨される。 もし、あなたにスキルがあり、問題がそれを必要とするならば、代数的にアプローチを記述することは、場合によっては効果的な実装を開発するのに役立つ。