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

如何从clmm对象获取模型矩阵?运行示例遇报错求解

解决clmm模型报错与获取模型矩阵的问题

一、解决Error in eval(predvars, data, env) : object 'SURENESS' not found报错

这个报错的核心原因是你没有加载示例所需的solder数据集,SURENESS是该数据集中的有序响应变量,直接运行建模代码会找不到这个变量。请按照以下步骤操作:

  1. 先加载ordinal包(clmm是这个包中的函数):
    library(ordinal)
    
  2. 加载内置的solder数据集:
    data(solder)
    
  3. 再运行示例的建模代码:
    mod1 <- clmm(SURENESS ~ Opening + Solder + Mask + PadType + (1|Operator), data = solder)
    

这样就能成功拟合模型,不会再出现找不到SURENESS的错误。

二、获取clmm模型的模型矩阵

和lm/glm不同,clmm对象默认不会自动存储完整的模型矩阵,但有两种简单的方法可以获取:

方法1:使用ordinal包的专属model.matrix方法

ordinal包为clmm对象提供了专门的model.matrix方法,直接传入拟合好的模型对象即可:

# 生成模型矩阵
model_mat <- model.matrix(mod1)
# 查看前几行
head(model_mat)

方法2:先保留数据到模型对象,再手动生成

如果你希望模型对象中保留原始数据,可以在建模时设置keep.data = TRUE参数(这是clmm的专属参数,而非通用的model=TRUE):

# 拟合模型时保留数据
mod1 <- clmm(SURENESS ~ Opening + Solder + Mask + PadType + (1|Operator), 
             data = solder, keep.data = TRUE)
# 从模型对象中提取数据,再生成模型矩阵
model_mat <- model.matrix(terms(mod1), data = mod1$data)

这样就能得到你需要的模型矩阵了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:14:27