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

DLNM包crosspred函数无法读取列表内对象的问题求助

问题排查与解决方法

核心原因

DLNM的crosspred()函数依赖crossbasis对象的元数据(如var.name属性)与glm模型中对应的变量名匹配,以此关联模型系数和基矩阵。当将这两个对象存入列表后,可能出现crossbasis的元数据丢失/修改,或列表索引调用时变量名关联断裂,导致函数无法匹配系数与基矩阵,抛出一致性错误。

具体排查与修复步骤

1. 检查crossbasis的关键属性

对比原对象与列表中对象的var.name属性:

# 查看原crossbasis的变量名属性
attr(cb.t, "var.name")
# 查看列表中crossbasis的变量名属性
attr(my_list$cb, "var.name")

如果两者不一致(或列表中对象的该属性丢失),手动修复:

attr(my_list$cb, "var.name") <- "cb.t" # 这里填模型中对应的变量名

2. 调用crosspred时手动指定var参数

直接在调用时明确指定模型中对应的变量名,跳过自动匹配步骤:

# 原报错代码
# pred <- crosspred(my_list$cb, my_list$model)

# 修复后代码
pred <- crosspred(basis = my_list$cb, model = my_list$model, var = "cb.t")

3. 验证模型系数名称一致性

检查glm模型的系数名称是否与crossbasis的变量名对应:

# 查看原模型系数名
names(coef(mod))
# 查看列表中模型的系数名
names(coef(my_list$model))

确保包含cb.t1、cb.t2等以原crossbasis变量名开头的系数,若有异常,需确认列表存储时是否修改了模型对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:52:34