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

含自回归结构的mvord模型报错求助:seq_len参数类型错误

mvord包AR1结构多变量有序模型报错排查与解决

问题场景

使用mvord包构建带AR1自相关结构的多变量有序回归模型,代码如下:

library(mvord)
roedores2 <- mvord(datos(IndicAD) ~ Trat + Tiempo + 
                    Trat:Tiempo+(1|Tiempo) + (1|Granja), data =  datos, 
                    error.structure = cor_ar1(~Tiempo), link = mvprobit(), 
                    control = mvord.control(solver = "BFGS"))

变量说明

  • IndicAD:有序分类变量,取值为0、1、2、3、4
  • Trat:3水平因子变量(处理类型)
  • Tiempo:11水平因子变量(重复测量时间点)
  • Granja:2水平因子变量(采样地点)

报错信息

运行代码时触发如下错误与警告:

Error in seq_len(rho$ndim) : 
  argument must be coercible to non-negative integer
In addition: Warning message:
In seq_len(rho$ndim) : first element used of 'length.out' argument

问题原因

  1. 时间变量类型不兼容:cor_ar1()要求时间变量为数值型(整数/连续),但当前Tiempo是因子类型,无法被识别为有序的时间序列维度,导致内部计算rho$ndim时生成无效值,触发seq_len()错误。
  2. 模型结构冲突:同时加入(1|Tiempo)随机效应和cor_ar1(~Tiempo)自相关结构,两者均针对时间维度建模,造成参数识别冲突,进一步加剧维度计算错误。

解决办法

步骤1:转换时间变量为数值型

将因子类型的Tiempo转换为数值型变量,确保AR1结构能识别时间顺序(假设因子水平已按时间顺序排列):

datos$Tiempo_num <- as.integer(datos$Tiempo)

步骤2:调整模型结构,移除冲突项

删除重复的(1|Tiempo)随机效应,保留AR1自相关结构,修改后的模型代码:

roedores2 <- mvord(datos(IndicAD) ~ Trat + Tiempo_num + 
                    Trat:Tiempo_num + (1|Granja), data =  datos, 
                    error.structure = cor_ar1(~Tiempo_num), link = mvprobit(), 
                    control = mvord.control(solver = "BFGS"))

步骤3:验证数据结构(可选)

检查每个Granja分组内的Tiempo_num是否为连续的重复测量序列,无缺失或乱序,避免AR1结构计算时出现维度异常。


内容的提问来源于stack exchange,提问作者Juan Santiago Guidobono

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:10:27