Формат ответа действительно зависит от того, что вы хотите сделать дальше, но вот попытка:
set.seed(101)
npred <- nprey <- 10
tree_predator <- rcoal(npred)
tree_prey <- rcoal(nprey)
## Simulate traits on each tree
trait_predator <- fastBM(tree_predator)
trait_prey <- fastBM(tree_prey)
(Я использовал set.seed(101)
для воспроизводимости, так что это результаты моих черт ...
> trait_predator
t1 t9 t4 t8 t5 t2
-2.30933392 -3.17387148 -0.01447305 -0.01293273 -0.25483749 1.87279355
t6 t10 t3 t7
0.70646610 0.79508740 0.05293099 0.00774235
> trait_prey
t10 t7 t9 t6 t8 t1
0.849256948 -0.790261142 0.305520218 -0.182596793 -0.033589511 -0.001545289
t4 t5 t3 t2
-0.312790794 0.475377720 -0.222128629 -0.095045954
...)
Значения, которые вы сгенерировали, находятся в неограниченном пространстве, поэтому на самом деле нет смысла брать их отношения; мы предположим, что это логарифмы размера, поэтому exp(x-y)
будет соотношением размера хищника / жертвы. Произвольно, я предполагаю, что отсечка составляет 1,5 ...
Используйте outer
для сравнения всех признаков хищника и жертвы: это создает двоичную (0/1) матрицу.
bmatrix <- outer(trait_predator,trait_prey,
function(x,y) as.numeric(exp(x-y)>1.5))
Один из способов визуализировать результаты ...
library(Matrix)
image(Matrix(bmatrix),xlab="Prey",ylab="Predator",sub="")
![введите описание изображения здесь](https://i.stack.imgur.com/CUsRn.png)
Вы можете видеть, например, что хищник №6 (помеченный t2
в выходных данных выше) действительно большой (размер журнала = 1,87), поэтому он поедает все виды добычи ...
Использование igraph
(некоторые из моих подходов здесь немного взломаны)
library(igraph)
edges <- which(bmatrix==1,arr.ind=TRUE) ## extract vertex numbers
## distinguish prey (columns) from pred (rows)
edges[,2] <- npred+edges[,2]
gg <- graph.bipartite(rep(1:0,c(npred,nprey)),
c(t(edges)))
## c(t(edges)) collapses the two-column matrix to a vector in row order ...
## now plot ...
plot(gg,vertex.color=rep(c("cyan","pink"),c(npred,nprey)),
edge.arrow.mode=">")
Это соответствует формату матрицы выше - хищники 1 и 2 (= вершины 1 и 2) никого не едят, добыча 2 (= вершина 12) поедается множеством разных хищников ... Это представление красивее, но не обязательно яснее ( например, оба хищника 7 и 8 съедают добычу 2 (вершина 12), но их стрелки совпадают). Однако иметь его в форме igraph
может быть неплохо, если вы хотите применить теоретико-графические подходы (и существует множество вариантов компоновки для построения графиков).
![введите описание изображения здесь](https://i.stack.imgur.com/MyJ6a.png)
person
Ben Bolker
schedule
28.08.2012
rlnorm
) и бинарное взаимодействие (ест / не ест) либо на основе отсечки (например, хищники съедают всю добычу, где соотношение размеров меньше чем порог), или с помощью механизма типа логистической регрессии. Немного подробнее о том, каких результатов вы ожидаете, очень поможет ... - person Ben Bolker   schedule 28.08.2012