Saya tidak segera jelas apa centroid yang Anda inginkan, tetapi centroid yang terlintas dalam pikiran adalah titik dalam ruang multivariat di pusat massa poin per kelompok. Tentang ini, Anda ingin elips kepercayaan 95%. Kedua aspek dapat dihitung menggunakan ordiellipse()fungsi dalam vegan . Berikut ini adalah contoh yang dimodifikasi dari ?ordiellipsetetapi menggunakan PCO sebagai sarana untuk menanamkan perbedaan dalam ruang Euclidean dari mana kita dapat memperoleh centroid dan elips kepercayaan untuk kelompok berdasarkan pada variabel Manajemen Alam Management.
require(vegan)
data(dune)
dij <- vegdist(decostand(dune, "log"), method = "altGower")
ord <- capscale(dij ~ 1) ## This does PCO
data(dune.env) ## load the environmental data
Sekarang kami menampilkan 2 sumbu PCO pertama dan menambahkan elips kepercayaan 95% berdasarkan kesalahan standar rata-rata skor sumbu. Kami ingin kesalahan standar jadi set kind="se"dan gunakan confargumen untuk memberikan interval kepercayaan yang diperlukan.
plot(ord, display = "sites", type = "n")
stats <- with(dune.env,
ordiellipse(ord, Management, kind="se", conf=0.95,
lwd=2, draw = "polygon", col="skyblue",
border = "blue"))
points(ord)
ordipointlabel(ord, add = TRUE)
Perhatikan bahwa saya menangkap output dari ordiellipse(). Ini mengembalikan daftar, satu komponen per grup, dengan detail centroid dan elips. Anda dapat mengekstrak centerkomponen dari masing-masing komponen ini untuk mendapatkan pada centroid
> t(sapply(stats, `[[`, "center"))
MDS1 MDS2
BF -1.2222687 0.1569338
HF -0.6222935 -0.1839497
NM 0.8848758 1.2061265
SF 0.2448365 -1.1313020
Perhatikan bahwa centroid hanya untuk solusi 2d. Pilihan yang lebih umum adalah menghitung centroid sendiri. Centroid hanyalah rata-rata individual dari variabel atau dalam hal ini sumbu PCO. Ketika Anda bekerja dengan perbedaan, mereka harus tertanam dalam ruang penahbisan sehingga Anda memiliki sumbu (variabel) yang dapat Anda hitung rata-rata. Di sini skor sumbu berada di kolom dan situs di baris. Centroid grup adalah vektor rata-rata kolom untuk grup. Ada beberapa cara untuk membagi data tetapi di sini saya gunakan aggregate()untuk membagi skor pada 2 sumbu PCO pertama menjadi kelompok berdasarkan Managementdan menghitung rata-rata mereka
scrs <- scores(ord, display = "sites")
cent <- aggregate(scrs ~ Management, data = dune.env, FUN = mean)
names(cent)[-1] <- colnames(scrs)
Ini memberi:
> cent
Management MDS1 MDS2
1 BF -1.2222687 0.1569338
2 HF -0.6222935 -0.1839497
3 NM 0.8848758 1.2061265
4 SF 0.2448365 -1.1313020
yang sama dengan nilai yang disimpan dalam statsseperti yang diekstraksi di atas. The aggregate()Pendekatan generalises ke sejumlah sumbu, misalnya:
> scrs2 <- scores(ord, choices = 1:4, display = "sites")
> cent2 <- aggregate(scrs2 ~ Management, data = dune.env, FUN = mean)
> names(cent2)[-1] <- colnames(scrs2)
> cent2
Management MDS1 MDS2 MDS3 MDS4
1 BF -1.2222687 0.1569338 -0.5300011 -0.1063031
2 HF -0.6222935 -0.1839497 0.3252891 1.1354676
3 NM 0.8848758 1.2061265 -0.1986570 -0.4012043
4 SF 0.2448365 -1.1313020 0.1925833 -0.4918671
Jelas, centroid pada dua sumbu PCO pertama tidak berubah ketika kami meminta lebih banyak sumbu, sehingga Anda dapat menghitung centroid di semua sumbu sekali, lalu gunakan dimensi apa pun yang Anda inginkan.
Anda dapat menambahkan centroid ke plot di atas dengan
points(cent[, -1], pch = 22, col = "darkred", bg = "darkred", cex = 1.1)
Plot yang dihasilkan sekarang akan terlihat seperti ini

Akhirnya, vegan berisi adonis()dan betadisper()fungsi-fungsi yang dirancang untuk melihat perbedaan cara dan varian data multivariat dengan cara yang sangat mirip dengan makalah / perangkat lunak Marti. betadisper()terkait erat dengan konten kertas yang Anda kutip dan juga dapat mengembalikan centroid untuk Anda.