Как провести тест mantel с матрицей расстояний, используя R с готовым fst?

#r #matrix

#r #матрица

Вопрос:

У меня есть значение fst (индексы молекулярного расстояния) между популяциями (которое не вычисляется по молекулярным данным, исходные необработанные данные неверны), но у меня есть данные об окружающей среде и местоположении (включая lon и широту) Я хотел бы использовать тест Mantel (r лучше) для проведения корреляции этих матриц расстояний. Однако я не могу получить пакеты, и, похоже, проблема в таблице fst, я создал таблицу csv, как показано ниже

1 2 3 4 5 6

0.0282 0 0.0266 0.5122 0.4784 0.5553

0.057 0.0266 0 0.4426 0.4042 0.5448

0.318 0.5122 0.4426 0 0.4527 0.6017

0.3412 0.4784 0.4042 0.4527 0 0.4171

0.4462 0.5553 0.5448 0.6017 0.4171 0

И я использую код для импорта или вычисления матрицы расстояний

 library(ade4)
setwd(choose.dir())
df = read.table("hynobins_climate.csv", header= T,sep=",")
station.dists <- dist(cbind(df$lon, df$lat))
#This works fine for calculation of geo distance

fst=read.table("mtFst.csv",header=T)
mantel.rtest(station.dists, fst, nrepet = 9999)
  

Возвращается сообщение об ошибке: Ошибка в mantel.rtest(station.dists, fst, nrepet = 9999): ожидается объект класса ‘dist’

Как я мог бы провести свой тест mantel, если у меня есть только вычисленный fst вместо необработанных данных (и я могу использовать пакеты пакетов для генерации матрицы молекулярных расстояний.

Ответ №1:

Мое окончательное решение — «создать матрицу самостоятельно»

 cbind(c(0,0.024,    0.0414, 0.9565, 0.9802, 1),c(0.024,0,0.0403,0.9515,0.9766,0.9979),c(0.414,0.403,0,0.9396,0.9643,0.9928)........
fst[upper.tri(fst,diag=TRUE)] <- NA
fst<-as.dist(fst)
  

Тогда это работает ~!