You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pcountOpen()报错:参数行数不匹配问题求助

问题:pcountOpen模型运行报错"arguments imply differing number of rows: 102, 0"

问题背景

已创建用于pcountOpen()的unmarkedFramePCO数据框,但运行模型时触发行数不匹配错误,且已验证所有输入行长度一致。

数据框创建代码

y <- bird[,2:3]
siteCovs <- bird[,c("cotton","corn","soy","rice","woodlot","develop")]
obsCovs <- list(date = bird[ ,7:8],
                year = bird[,5:6])
umf <- unmarkedFramePCO(y = y, 
                           siteCovs = siteCovs, 
                           obsCovs = obsCovs,
                           numPrimary = 4)

模型运行代码及错误信息

modelbird <- pcountOpen(
  pformula = ~ date + year,  # 探测概率公式
  lambdaformula = ~ cotton + corn + soy + rice + woodlot + develop,  # 初始丰度公式
  gammaformula = ~ 1,  # 补充率公式
  omegaformula = ~ 1,  # 表观存活率公式
  iotaformula = ~ 1,  # 迁入率公式(如适用)
  data = umf,  # 数据
  K = 110  # 丰度求和上限
)

触发错误:

Error in data.frame(..., check.names = FALSE) : 
  arguments imply differing number of rows: 102, 0

示例数据集

> head(bird)
  Nest_BoxID survey1 survey2 average highest point year1 year2 date1 date2     time1     time2 temp1 temp2 wind1 wind2      cotton      corn       soy        rice     woodlot
1     AMKE 1      30      52    41.0      52     2  2022  2022   150   168 0.2965278 0.2743056    22  79.2     3   0.0 0.004317789 0.2043754 0.4945308 0.231145653 0.006044905
2     AMKE A      21      22    21.5      22     1  2022  2022   150   186 0.3125000 0.2972222    25  28.4     3   1.8 0.004960317 0.4419643 0.5163690 0.006448413 0.000000000
3     AMKE C      33      55    44.0      55     2  2022  2022   151   170 0.3312500 0.3159722    26  71.7     5   4.8 0.004295197 0.2342835 0.3326825 0.393205779 0.000000000
4     AMKE 2      38      30    34.0      38     2  2022  2022   151   162 0.2805556 0.2743056    24  74.4     1   0.0 0.001485001 0.1986932 0.6875557 0.058212058 0.000000000
5     AMKE 3      40      18    29.0      40     2  2022  2022   153   160 0.2805556 0.2881944    22  71.5     4   2.2 0.039283651 0.1666667 0.3957250 0.337666089 0.008087811
6     AMKE 4      11       7     9.0      11     2  2022  2022   151   170 0.2930556 0.3430556    23  82.3     2   0.0 0.353552860 0.1545350 0.1577123 0.234257655 0.045927210
     develop
1 0.05497985
2 0.02926587
3 0.03436158
4 0.04752005
5 0.03466205
6 0.04303871

问题排查与解决方案

核心原因:观测协变量与初级抽样期不匹配

unmarkedFramePCO要求观测协变量(obsCovs)的维度必须对应初级抽样期×次级抽样期的结构:

  • 你设置了numPrimary = 4,但当前y仅包含2列(对应2次次级抽样),没有覆盖4个初级期的探测数据;
  • obsCovs中的date和year也仅各有2列,且所有年份均为2022,完全未匹配4个初级期的结构,导致模型运行时出现行数不匹配错误。

修复步骤

  1. 调整探测历史矩阵y:
    若每个初级期包含2次次级抽样,4个初级期对应的y应该是n行 × 8列的矩阵(4×2),而非当前的2列。需补充其余3个初级期的探测数据。

  2. 匹配观测协变量维度:
    obsCovs中的每个元素(如date、year)需对应n行 × 8列的矩阵,或者按初级期分组为包含4个元素的列表(每个元素对应1个初级期的2次抽样协变量)。

  3. 验证数据框结构:
    创建umf后,运行以下命令确认结构正确性:

    summary(umf)
    

    需确保Number of primary periods为4,Number of secondary periods per primary与实际抽样次数一致,且所有协变量的行列数匹配。

  4. 简化测试(可选):
    若暂时无法补充数据,可先将numPrimary设为1,匹配现有数据的抽样期数量,验证模型能正常运行后再扩展到4个初级期。


内容的提问来源于stack exchange,提问作者Tyler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 23:23:11