2020年9月14日月曜日

Rで最大エントロピーを用いた生息適地

午前
・標本整理

午後
・会議
・学会業務
・会議
・書類作成

Rで最大エントロピーを用いた生息適地の推定に関する土日の悪戦苦闘メモ。

色々とやり方があることが分かった。

まず、この本では、バッチモード(?)でmaxentを実行する方法が書かれている。

コマンドでmaxent.jarを実行するということだと思うけど、私にはできなかった。

ちなみに、この本で主に扱われているbiomod2パッケージでは、バッチモードを使わなくても
BIOMOD_Modeling(
	models = c("MAXENT.Phillips")
	)
で実行できる。しかし、解析オプションの設定や結果の出力がうまく制御できなかった。

ということで、biomod2は挫折した。ただ、他のモデルを比較したり、アンサブル予測をするには、biomod2上で実行する必要があるので(?)、今後の課題としておく。

Rからmaxent.jarを実行するにはもう一つ方法がある。dismoパッケージを経由する方法。こちらは出力されるデータが(私には)扱いやすかった。

マニュアル通りにやればこんな感じの地図が作れる。

また、そもそもJavaを使わずにmaxentをRで実行するためのmaxnetパッケージというのがある(スペルがややこしいので注意)。本家Maxentを作った本人によって作られており、Rで最大エントロピーを用いた生息適地の推定をするなら、これが本命かも。

kh-blogさんによる日本語での詳しい説明がある。

Rでやるならこれが良いのかも。他にも、MIAmaxent、rmaxent、maxlikeなんてもあるらしい。maxlikeは以前使ったことがあるか、前2者は詳細不明。

地図にプロットする際に、確率ではなく、ある閾値で区切って在 or 不在の二値化にしたいことも多いはず。

これについては、自動で計算してくれる関数をCecina Babich Morrowさんsが公開している。

上の地図をminimum training presence (MTP)で作図してみた。MTPでは、種の分布が発見された地点を全て、最適地に含むように閾値を指定する。

また、閾値が決まっているならば、plot()の機能を使う方が安心かも。
breakpoints <- c(0,0.1,0.2) #区切りを決める
colors <- c("red","blue") #区間の色を決める
plot(model_pred, breaks=breakpoints,col=colors, legend = FALSE)