【问题标题】:Using popbio package to calculate a population projection correctly?使用 popbio 包正确计算人口预测?
【发布时间】:2021-12-10 00:17:19
【问题描述】:

所以我一直在使用 R-Studio 中的 popbio 包进行人口生态学练习,重点是使用 Leslie Matrix's。我已经使用我用我的生命表计算的生育力 (mx) 和年度生存值 (sx) 成功地创建了一个具有适当尺寸的 Leslie 矩阵。然后我尝试使用 popbio 包中的 pop.projection 函数将我的 Leslie 矩阵(les.mat)乘以起始人口向量(N0),然后是时间间隔数(4 年)。我的理解是,您应该能够采用 Leslie 矩阵并乘以人口向量以在设定的时间间隔后计算人口规模。我在这里做错了吗,当我尝试运行我的 pop.projection 代码行时,我在 R 中收到以下错误消息:

"> projA

问题可能出在我的 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)

【问题讨论】:

    标签: r matrix matrix-multiplication popbio


    【解决方案1】:

    该函数对第一个和第二个参数使用矩阵乘法,因此它们必须匹配。 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
    

    【讨论】:

      猜你喜欢
      • 2016-08-14
      • 2017-03-05
      • 2017-09-17
      • 2019-02-18
      • 2012-07-10
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      • 2022-11-11
      相关资源
      最近更新 更多