- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 R 中创建二分网络。例如,如果您有一个包含两种类型物种的数据框(只能跨物种相互作用,不能在物种内相互作用),并且每个物种都有一个特征值(例如,捕食者的嘴巴大小允许谁吃掉哪种猎物),我们如何模拟基于物种特征的网络(例如,两个物种只有在它们的特征值重叠时才能相互作用)?
更新:这是我正在尝试做的一个最小示例。 1) 创建系统发育树; 2)在系统发育上模拟性状; 3)创建基于物种特征值的网络。
# packages
install.packages(c("ape","phytools"))
library(ape); library(phytools)
# Make phylogenetic trees
tree_predator <- rcoal(10)
tree_prey <- rcoal(10)
# Simulate traits on each tree
trait_predator <- fastBM(tree_predator)
trait_prey <- fastBM(tree_prey)
# Create network of predator and prey
## This is the part I can't do yet. I want to create bipartite networks, where
## predator and prey interact based on certain crriteria. For example, predator
## species A and prey species B only interact if their body size ratio is
## greater than X.
最佳答案
答案的格式实际上取决于你下一步想做什么,但这是一种尝试:
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="")
例如,您可以看到捕食者 #6(在上面的输出中标记为 t2
)非常大(log size=1.87),所以它吃掉了所有的猎物物种......
使用 igraph
(我这里的一些方法有点 hacky)
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
形式使用它可能会很好(并且有大量布局选项可用于绘制图形)。
关于r - 基于物种特征值模拟随机二分网络 - 在R中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12150630/
我对 CBMutableCharacteristic 的特征值可以有多长感到困惑。如果我有一个归档对象数组,我可以将特征值设置为这个归档数组吗?或者我最好为数组中的每个归档对象设置一个单独的特征? 最
我在 Python Sympy 中使用来计算带有变量的矩阵 A 的特征值(例如)。有谁知道如何计算这样的矩阵的特征值?命令 A.eigenvals() 不起作用。例如下面的代码: x = symbol
我正在计算协方差矩阵的特征值,它是实数且对称的半正定矩阵。因此,特征值和特征向量都应该是实数,然而numpy.linalg.eig()返回具有(几乎)零虚部的复数值。 协方差矩阵太大,这里贴不出来,但
我正在尝试对图像使用光谱聚类。我首先计算亲和性矩阵,然后尝试获取特征向量。但是,在 7056x7056 矩阵上,eig() 调用花费的时间太长。关于如何改进这个的任何建议?也许我应该使用不同形式的亲和
我目前正在使用 Dart/Flutter BLE 插件来更好地了解 BLE 设备。 插件: https://pub.dartlang.org/packages/flutter_blue 当我连接到我的
我在使用 Eigen 库时遇到错误,我想做的就是从 Eigen::VectorXf 中减去一个标量。所以,我的代码如下: #define VECTOR_TYPE Eigen::VectorXf #de
假设我有一个对称矩阵 M,它不是正(半)定的,我想计算它的 k 顶(绝对值)特征值(和相应的特征向量)。现在,可以使用截断的 SVD 来做到这一点,它将返回所述特征值的绝对值,然后必须检查符号并找到相
我有一个关于 split 节点的问题。我有 4 个特征,想要预测这个人是否会玩,可能会玩,也可能不会玩。根据信息增益,我将“天气”作为第一个要分割的特征,其中“多雨”、“炎热”和“潮湿”作为分支。下雨
我有一个 ~3000x3000 类似协方差的矩阵,我在该矩阵上计算特征值-特征向量分解(它是一个 OpenCV 矩阵,我使用 cv::eigen() 来完成工作)。 但是,我实际上只需要前 30 个特
我想计算 K*es,其中 K 是一个 Eigen 矩阵(维度 pxp)和 es 是一个 px1 随机二进制 vector ,值为 1。 例如,如果 p=5 和 t=2 一个可能的 es 是 [1,0,
我正在尝试使用 CoreBluetooth 框架从设备读取所有可用服务及其特征值。 - (void)centralManager:(CBCentralManager *)central didDisc
我已经在 Internet 上多次看到这个主题,但从未见过一个完整、全面的解决方案,它可以适用于当前库版本的 sklearn 的所有用例。有人可以尝试使用以下示例解释如何实现吗? In this ex
我的输入 数据框(缩短)如下所示: >>> import numpy as np >>> import pandas as pd >>> df_in = pd.DataFrame([[1, 2, 'a
我想读取低功耗蓝牙(智能)的特征值。我不想使用 gatttool 或 btgatt-client。 d-bus 也没有帮助。我想在 Python 中执行此操作。我在以下内容中找不到任何示例: http
我是一名优秀的程序员,十分优秀!