0

这已经在我脑海里萦绕了一段时间。

来自布罗德里克等人。2006 ( http://www.ascension-island.gov.ac/wp-content/uploads/2012/12/are-green-turtles-globally-endangered.pdf ),他们为乌龟存活并成长到下一个年龄段的概率,以及乌龟存活并成长到第 i 个年龄段的概率。

谁能告诉我如何在 R 中创建这种矩阵?

表格1。

[Age-class                  S1 S2 S3 S4 S5 S6
Structure S1 (egg-neonate) P1 F2 F3 F4 F5 F6
S2 (pelagic individual)    G1 P2 0 0 0 0
S3 (benthic individual)    0 G2 P3 0 0 0
S4 (sub-adult)             0 0 G3 P4 0 0
S5 (maturing adult)        0 0 0 G4 P5 0
S6 (adult)                 0 0 0 0 G5 P6
Values S1   0 0 0 F4 F5 F6
S2          0.4394 0.5704 0 0 0 0
S3          0 0.0741 0.8413 0 0 0
S4          0 0 0.0391 0.8405 0 0
S5          0 0 0 0.0069 0.7782 0
S6          0 0 0 0.1700 0.9482]

此外,使用此矩阵,您可以计算存活到成年的幼体比例。

4

1 回答 1

1

你有几个潜在的问题或障碍需要克服。由于 R 使用列主索引,因此您需要使用byrow参数进行matrix调用。您在值的最后一行也缺少一个0(与原始文章一样)。我看不到使用字符值创建上矩阵的任何意义,因此将演示几种数据输入方法。使用scan引入数据可以从命令行导入文本,而无需重新输入所有内容。输入的默认模式scan是“数字”,因此您不需要包含what参数:

valsRMI3 = c(0.3299, 53.4639, + 90.6716)
valsRMI4 <-c(0.2474, 40.0980, 68.0037)  # copied from the PDF file

mvals <- scan(text="0.4394 0.5704 0 0 0 0
 0 0.0741 0.8413 0 0 0
 0 0 0.0391 0.8405 0 0
 0 0 0 0.0069 0.7782 0
 0 0 0 0 0.1700 0.9482")  # added the extra 0 after noting incorrect number of input values

在 RMI=3 的情况下制作带有行和列标签的矩阵(用于索引):

matrix( c( 0,0,0,valsRMI3,  # the first row
           mvals),          # rest of matrix values
        nrow=6, 
        byrow=TRUE, 
        dimnames=list( paste0("S", 1:6), paste0("S", 1:6))  )

#--------------
       S1     S2     S3     S4      S5      S6
S1 0.0000 0.0000 0.0000 0.3299 53.4639 90.6716
S2 0.4394 0.5704 0.0000 0.0000  0.0000  0.0000
S3 0.0000 0.0741 0.8413 0.0000  0.0000  0.0000
S4 0.0000 0.0000 0.0391 0.8405  0.0000  0.0000
S5 0.0000 0.0000 0.0000 0.0069  0.7782  0.0000
S6 0.0000 0.0000 0.0000 0.0000  0.1700  0.9482

Matrixexpm包中提供了矩阵指数函数和矩阵幂函数,expm其中可能需要评估马尔可夫建模预测。

于 2016-02-27T17:52:47.940 回答