这一直在我脑海中嘎嘎作响。
来自Broderick等人。 2006年(http://www.ascension-island.gov.ac/wp-content/uploads/2012/12/are-green-turtles-globally-endangered.pdf),他们创建了一个转换矩阵(表1),表明乌龟存活并成长到下一个年龄阶段的概率以及乌龟存活并成长为第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]
此外,使用此矩阵可以计算存活至成年的幼龟的比例。
答案 0 :(得分: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
有Matrix
和expm
包中的矩阵指数函数和expm
中的矩阵幂可用于评估马尔可夫模型预测。