2020年07月25日

モニタリングデータの個体数変化を分析する統計ソフトTRIM(rtrim)の使い方

TRIM(TRends & Indice for Monitoring data)はヨーロッパ全体の鳥類繁殖分布調査(PECBMS, Pan-European Common Bird Monitoring Scheme)で使用されている個体数変化解析用のプログラムです。

長期に続くモニタリング調査では毎回全ての地点で調査ができない場合がありますが、TRIMはそうした欠損値を補完して個体数の変化傾向を有意水準付で判定してくれます。(PECBMSソフトウエアhttps://pecbms.info/methods/software/)。

TRIMは当初、Windowsアプリケーションとして公開されていましたが、その後、統計言語Rのパッケージ版になった「rtrim」が公開されました。rtrimはWindows版よりきれいなグラフが描けるし、Windows版で面倒だった欠損記録を「-1」で埋める事前準備が必要がない(例えば2000年の調査がなければ、2000年の行を消しておけばよい)など機能が高まっている反面、Rの知識が必要なので、取っつきにくくなったかもしれません。この記事ではrtrimでどのくらいデータの補間をできるかのテストと、簡単な使い方を紹介します。記事で使ったデータはタブ区切り形式のファイルでダウンロードできます。

TRIMは欠損データを推定できる
TRIMは、ある地点の個体数は地点の特性と調査した年(年に限らず日でも月でも)の特性に基づくと考えて推定を行います。「個体数が多い地点は毎年多いはずだし、全体の個体数が多い年はさらに多いだろう、だから今年この場所は調査してないけど、このくらいの個体数がいるはずだ」というような理屈で計算してくれているようです。では、TRIMがどのくらいデータの欠損を補完できるのかテストしてみましょう。

テストには「毎年一度の調査が行われていて、全地点で個体数が増加を続けている」という極端な仮想のデータを使用します。下図はTRIMが出力したグラフと、生データのグラフです。この場合はTRIMの推定値と生データは同じになります。[使用データ trimtest.txt
trim-test1.png
図左のTRIMグラフで、折れ線は各年の個体数合計の推定値、垂直線は推定値の95%信頼区間、赤線は個体数変化の回帰曲線、灰色の帯は回帰曲線の95%信頼区間を示している。

つぎに、データから10%の記録を間引きました。生データはガタガタしますが、TRIMの推定値はあまり変化していません。[使用データ trimtest_10per_del.txt
trim-test2.png

さらに、20%の記録を間引きしました。これでも、TRIMの推定はほとんど影響がありません。[使用データ trimtest_20per_del.txt
trim-test3.png

なお、テストで間引いた生データのグラフはガタガタになりましたが、それでも近似直線を引けば個体数が増加傾向であることは分かりそうです。すべての調査地で数が増加するという極端なデータなので、多少間引きをしても全体傾向はそれほど分かりにくくならなかったようです。

実際のハクチョウ記録でテスト
モニタリング調査では、初めのころは調査地が少なかったのが、しだいに調査地が増えてくるということがよくあります。こういうケースで、例えば総個体数が増えている場合には、野鳥が増えたからなのか、それとも調査地が増えたからなのかが分かりにくくなってしまいます。

それをTRIMがどう計算してくれるのか、実際の宮城県のハクチョウのデータを使ってテストしました。環境省のガンカモ類の生息調査からある条件で調査地を抽出し、そこにいた「オオハクチョウ+コハクチョウ」の個体数変化をTRIMと生データで比較しています。

はじめに、欠損のないデータのグラフを下図の左列に示します。TRIMと生データのグラフは同じような形で、緩やかな減少傾向があるように見えます。[使用データ hakucho_original.txt]。つぎに、何カ所かの調査地で初期の頃の年の記録をバッサリ削除し、途中から新調査地が増えた状態を模したデータのグラフを右列に示します。右列下段の生データのグラフでは初期の頃の個体数が下がり、経年変化は実際とは逆に増加傾向に見えます。一方、右列上段のTRIM推定値グラフは欠損のないデータと変わらない傾向を示しています。[使用データ hakucho_shoki_sakujo.txt

オオハクチョウ3.png
単純合計したグラフでは増減傾向が逆になってしまいました。

以上のように、TRIMは欠損データがあっても正確な個体数傾向を推定してくれることが分かりました。

rtrimの使い方
この記事で紹介したグラフは、統計言語Rを使って数行のプログラムで作成することができます。Rの基本操作は説明しませんが、いろんなホームページに載っていますので、そちらを参考にしてください。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
library(rtrim) # rtrimパッケージの読込
library(readr) # read_delim関数を使うために必要

hakucho <- read_delim("hakucho_original.txt", delim="\t") # 上記の白鳥データを読み込みます。

trim.results <- trim(count ~ site + year, data = hakucho, model=2, changepoints="all", serialcor=TRUE, overdisp=TRUE) # trimを実行します [※]

slope <- overall(trim.results) # slopeには傾き、増減判定、P値などが格納されます。

plot(slope) # グラフを描きます。

[※]
model:
 1 「No Time-Effects」通常は使用しません。
 2「Time Effects (Effect for each time-point)」調査を行った全ての年を用いて分析を行います。最も基本的な方法です。
 3「Liner Trend」Time Effectsで分析が実行できなかった場合や、大きな変化があった年を探索したい時などに使用します。
changepoints:大きな変化があった年が分かっていれば指定します。通常はすべての年を選択するので「all」.
serialcor:Serial correlation(自己相関)。ある年の野鳥の数は近隣の年の数に近くなるので「TRUE」。
overdisp:Overdispersion (過分散)。ポアソン分布からの逸脱の程度です。野鳥のカウントでは過分散は高くなる可能性があるので「TRUE」。

この記事ではrtrimパッケージの使い方を説明しましたが、旧Windows版TRIMの日本語解説とアプリケーションがこちらのページでダウンロードできます。解説資料では計算の仕組みやアウトプットの読み取り方を説明していて、その内容はrtrimになっても変わりありませんので、参考にしてください。

2009年10月のバードリサーチニュースにもTRIMの記事を掲載しています。
http://www.bird-research.jp/1_newsletter/index2009.html

(神山和夫)
posted by ばーりさ at 11:23| その他