1. トップページ
  2. Rによる群集組成の解析
  3. 群集組成による配置図:間接傾度分析

Rによる群集組成の解析

群集組成による配置図:間接傾度分析

群集組成の良く似た地点同士は近くに、似ていない地点は遠くになるように、空間上に地点を配置します。図示すると地点間の関係が認識しやすくなります。さらに、その配置図に対する環境変数の相関を求めます。

群集間の類似度を計算し、nMDSプロットを作成

nMDSは非計量多次元尺度法と呼ばれます。多次元で表された多数の点を、お互いに類似した点同士は近く、類似していない点同士は遠くなるように、なるべく低い次元(二次元平面など)に配置し直す方法です。群集データの場合は、地点間の類似性は類似度指数で表します。

あらかじめrequire(vegan)にてveganパッケージを読み込みます。veganには群集の多変量解析に便利な関数が含まれています。
群集データをファイルから読み込みます。以下の例ではcsvファイルから読み込んでいます。header=TRUEを明示して種名を読み込んでいます。また、地点名を行の名前にするためにrow.names=1を指定します。

dat <- read.csv("spcdat.csv", header = TRUE, row.names=1)

次に、metaMDS()で類似度指数を指定して、nMDSの計算を行い、結果を図示します。
以下の例ではMorisita-Horn類似度を用いています。Morisita-Horn類似度指数は、木元Cπ指数と同等の指数です。

res1.mds <- metaMDS(dat, distance="horn", autotransform = FALSE, trace = 0)
plot(res1.mds, type="t", display="sites")

すると、nMDSの配置図が表示されます。

元々は種類数の分だけ次元があるので102次元のデータです。2次元の平面に配置するには相当無理をしていると考えられます。どの程度無理をしているかを表す指標がstress値です。計算の出力を見てみます。

res1.mds
## 
## Call:
## metaMDS(comm = dat, distance = "horn", autotransform = FALSE,      trace = 0) 
## 
## global Multidimensional Scaling using monoMDS
## 
## Data:     dat 
## Distance: horn 
## 
## Dimensions: 2 
## Stress:     0.1590454 
## Stress type 1, weak ties
## Two convergent solutions found after 20 tries
## Scaling: centring, PC rotation, halfchange scaling 
## Species: expanded scores based on 'dat'

この場合、stress値は0.1590454となりました。一般的にstress値が0.2以上だと良くないといわれています。その場合は次元を上げてnMDSをおこないます。三次元にするには引数としてk=3を指定し、metaMDS(dat, distance="horn", k=3, autotransform = FALSE, trace = 0)とすれば良いです。このデータで三次元のnMDSを行うと、stress値は0.0948034と改善されます。

群集間の類似度を計算し、PCoAプロットを作成

上のnMDSの例では、群集間の類似度の計算と図示を一つの関数metaMDSで行いました。とても便利な方法です。次の例では、サンプル間の群集組成の違いを距離(非類似度)で表した行列を作成し、その距離行列から二次元のプロットを作成します。類似度は、逆数をとる、もしくは1から引く等の操作をすると非類似度となり、指数の性質により適当な操作をおこなえば「距離」として使うことができます。

dis.mh <- vegdist(dat, method="horn")
dis.bc <- vegdist(dat, method="bray")

上の行でMorishita-Horn非類似度、下の行でBray-Curtis非類似度の距離行列をそれぞれ作成しました。ここで、metaMDSを使うと先の例と同様のnMDSプロットが作成できます。次の例ではBray-Curtis非類似度の距離行列を使ってnMDSの二次元プロットを作成します。metaMDSは生データと距離行列のどちらからでもnMDSプロットを作成することができるのです。

res2.mds <- metaMDS(dis.bc, trace=0)
plot(res2.mds, type="t", display="sites")

では、PCoAプロットを作成します。cmdscale関数を使います。この関数は、距離行列を引数に使用します。次の例では引数にdis.mhを使ってMorishita-Horn非類似度によるプロットを作成しました。Bray-Curtis非類似度を使いたければ引数に上で計算したdis.bcを使ってください。k=2で第2軸までの計算を指定しています。

res.pco <- cmdscale(dis.mh, k=2, eig=TRUE)
ordiplot(res.pco, type="t")

PCoAは主座標分析や計量多次元尺度法と呼ばれ、後で解説するdbRDA (distance-based redundancy anaysis)にて行う環境傾度分析の基礎になります。

では、nMDSで作成した配置図とPCoAで作成した配置図はどの程度異なっているのでしょうか。配置図の比較はprocrustesテストprotest()で行います。

pro <- protest(res1.mds, res.pco)
pro
## 
## Call:
## protest(X = res1.mds, Y = res.pco) 
## 
## Procrustes Sum of Squares (m12 squared):        0.2582 
## Correlation in a symmetric Procrustes rotation: 0.8613 
## Significance:  0.001 
## 
## Permutation: free
## Number of permutations: 999
plot(pro)