使用 popbio 包正确计算人口预测?
Using popbio package to calculate a population projection correctly?
所以我一直在使用 R-Studio 中的 popbio 包进行种群生态学练习,重点是使用 Leslie Matrix。我已经使用我用生命 table 计算的生育力 (mx) 和年存活值 (sx) 成功地创建了一个具有适当尺寸的 Leslie 矩阵。然后我尝试使用 popbio 包中的 pop.projection 函数将我的 Leslie 矩阵 (les.mat) 乘以起始人口向量 (N0),然后是时间间隔数(4 年)。据我了解,您应该能够采用 Leslie 矩阵并乘以人口向量来计算一定数量的时间间隔后的人口规模。我在这里做错了什么,当我尝试 运行 我的 pop.projection 代码行时,我在 R 中收到以下错误消息:
"> projA <- pop.projection(les.mat,N0,10)
A %*% n 中的错误:不一致的参数"
问题可能是我的 pop.projection 函数的问题吗?我认为这可能是 N0 参数(人口向量)的问题,当我查看我的 N0 值时,它似乎已作为“数字类型”保存在 R 中,我是否应该将其转换为自己的矩阵,或者它自己的向量以某种方式将我的 pop.projection 代码行变为 运行?任何建议将不胜感激,我一直在使用的简短代码将在下面链接!
Sx <- c(0.8,0.8,0.7969,0.6078,0.3226,0)
mx <- c(0,0,0.6,1.09,0.2,0)
Fx <- mx # fecundity values
S <- Sx # dropping the first value
F <- Fx
les.mat <- matrix(rep(0,36),nrow=6)
les.mat[1,] <- F
les.mat
for(i in 1:5){
les.mat[(i+1),i] <- S[i]
}
les.mat
N0 <- c(100,80,64,51,31,10,0)
projA <- pop.projection(les.mat,N0,10)
该函数对第一个和第二个参数使用矩阵乘法,因此它们必须匹配。 les.mat
矩阵是6x6,但是N0的长度是7。试试
projA <- pop.projection(les.mat, N0[-7], 10) # Delete last value
或
projA <- pop.projection(les.mat, N0[-1], 10) # Delete first value
所以我一直在使用 R-Studio 中的 popbio 包进行种群生态学练习,重点是使用 Leslie Matrix。我已经使用我用生命 table 计算的生育力 (mx) 和年存活值 (sx) 成功地创建了一个具有适当尺寸的 Leslie 矩阵。然后我尝试使用 popbio 包中的 pop.projection 函数将我的 Leslie 矩阵 (les.mat) 乘以起始人口向量 (N0),然后是时间间隔数(4 年)。据我了解,您应该能够采用 Leslie 矩阵并乘以人口向量来计算一定数量的时间间隔后的人口规模。我在这里做错了什么,当我尝试 运行 我的 pop.projection 代码行时,我在 R 中收到以下错误消息:
"> projA <- pop.projection(les.mat,N0,10) A %*% n 中的错误:不一致的参数"
问题可能是我的 pop.projection 函数的问题吗?我认为这可能是 N0 参数(人口向量)的问题,当我查看我的 N0 值时,它似乎已作为“数字类型”保存在 R 中,我是否应该将其转换为自己的矩阵,或者它自己的向量以某种方式将我的 pop.projection 代码行变为 运行?任何建议将不胜感激,我一直在使用的简短代码将在下面链接!
Sx <- c(0.8,0.8,0.7969,0.6078,0.3226,0)
mx <- c(0,0,0.6,1.09,0.2,0)
Fx <- mx # fecundity values
S <- Sx # dropping the first value
F <- Fx
les.mat <- matrix(rep(0,36),nrow=6)
les.mat[1,] <- F
les.mat
for(i in 1:5){
les.mat[(i+1),i] <- S[i]
}
les.mat
N0 <- c(100,80,64,51,31,10,0)
projA <- pop.projection(les.mat,N0,10)
该函数对第一个和第二个参数使用矩阵乘法,因此它们必须匹配。 les.mat
矩阵是6x6,但是N0的长度是7。试试
projA <- pop.projection(les.mat, N0[-7], 10) # Delete last value
或
projA <- pop.projection(les.mat, N0[-1], 10) # Delete first value