2014-10-27 8 views
0

Я выполнил неметрическое многомерное масштабирование (NMDS) на двух кадрах данных, каждый из которых содержит разные переменные, но для тех же сайтов. Я использую веганский пакет:график переменных прокрустов в r?

> head (ResponsesS3) 
    R1_S3 R10_S3 R11_S3 R12_S3 R2_S3 R3_S3 R4_S3 R6_S3 R7_S3 R8_S3 R9_S3 
4  0  0  0  0  0  1  0  0  0  0  0 
5  0  0  0  0  0  1  0  0  0  0  0 
7  1  0  0  1  0  0  0  0  0  0  0 
12  0  0  0  0  0  1  0  0  0  0  0 
14  2  2  0  0  0  0  2  0  0  0  0 
16  0  0  1  0  0  0  0  0  0  1  0 


> head (EnvtS3) 
    Dep_Mark Dep_Work Dep_Ext Use_For Use_Fish Use_Ag Div_Prod 
4 0.06222836 1.0852315 0.8367309 1.1415929 1.644670 0.1006964 0.566474 
5 0.25946808 1.3342266 0.0000000 1.7123894 0.822335 0.0000000 0.283237 
7 2.20668862 0.0000000 0.8769881 0.4280973 0.822335 0.5244603 0.849711 
12 2.26323697 0.0000000 0.8090991 1.1415929 0.000000 1.4957609 1.416185 
14 1.65107675 0.5195901 0.2921132 0.5707965 0.822335 1.7873609 0.849711 
16 1.82230225 0.4760163 0.1915366 2.2831858 0.000000 1.6614904 0.849711 


> ResponsesS3.mds = metaMDS (ResponsesS3, k =2, trymax = 100) 

> EnvtS3.mds = metaMDS (EnvtS3, k =2, trymax = 100) 

я вписываюсь результаты использования прокрустово накладывание

> pro.ResponsesS3.EnvtS3.mds <- procrustes(ResponsesS3.mds,EnvtS3.mds) 

Я больше всего заинтересован в понимании того, как переменные из каждого набора данных совмещаются. Я хотел бы использовать функцию plot(), чтобы возвращать график переменных из ResponsesS3 и из EnvtS3, а не сайтов (это то, что функция графика возвращает по умолчанию).

Возможно ли это?

ответ

0

Нет, это невозможно. Проблема, которую вы обнаружите, заключается в том, что в двух наборах данных будет разное количество переменных, что приведет к сбою метода procrustes(), если вы попробуете procrustes(..., scores = "species").

Даже если вы поместились с procrustes(..., score = "sites") (по умолчанию), кого вы предлагаете нарисовать участок, если мы с могли бы извлечь информацию о видах? Текущий график соединяет строки из одной матрицы со строками другого; это работает в настройках по умолчанию, поскольку предполагается, что наборы данных являются измерениями в тех же местах/сайтах. Но это невозможно с видами/переменными. Более принципиально, как мы должны сочетать виды с переменными окружающей среды?

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

Я хотел бы посмотреть на метод анализа coinertia, из которых есть сырой интерфейс в моем пакете cocorresp и более полное один в пакете ade4. Если вы обнаружите, что хотите сравнить два набора данных о видах, попробуйте анализ кокорреспонденции, который cocorresp подходит.

+0

Спасибо. Анализ Coinertia - именно то, что я искал. – Sky

0

Как сказал Гав, точки должны совпадать друг с другом один на один для вращения Procrustes. Однако, как только у вас есть поворот Procrustes, вы можете естественным образом применить его к другим матрицам с одинаковым количеством столбцов. Количество колонок имеет решающее значение: если у вас 2-мерная NMDS, ваши переменные также должны быть отображены в эти 2-мерные. Функция metaMDS() даст вам такие оценки столбцов, соответствующие вашей ординации оценок строк, но я не знаю, насколько они адекватны в вашем случае. Самый простой способ повернуть эти оценки в вегане - использовать метод predict с newdata. Продолжая ваш пример:

predict(pro.ResponsesS3.EnvtS3.mds, newdata=scores(EnvtS3.mds, "species")) 

Это будет только вращать свои результаты колонки ("species") аналогично тому, как повернут свои результаты строки.

Мы не знаем, чего вы пытаетесь достичь, и действительно могут быть лучшие способы достижения вашей цели (см. Ответ Гэвина для стартера). Однако это приведет к вращению.

Смежные вопросы