使用drm()拟合逻辑回归模型时出现Non finite value error错误
问题原因及解决步骤
1. 核心问题:VOT列是字符型,需转为数值型
你的VOT列是带"VOT "前缀的字符串(如"VOT 0"),但drm()要求自变量为数值型,这直接导致优化过程出现非有限值错误。
处理代码:
# 提取VOT中的数字并转换为数值型 d50$VOT_num <- as.numeric(gsub("VOT ", "", d50$VOT))
2. 数据完全分离,需调整模型
观察response分布:
- 前11行中,
VOT≥0时response全为0,VOT<0时全为1 - 剩余所有行的response均为1
这种完全分离的情况会让四参数逻辑斯蒂模型(LL.4())无法收敛,因为模型无法估计合理的渐近线参数。可尝试以下两种方案:
方案一:改用二参数逻辑斯蒂模型(LL.2())
library(drc) # 使用转换后的数值型VOT拟合二参数模型 fit <- drm(response ~ VOT_num, data = d50, fct = LL.2()) summary(fit)
方案二:筛选有变异的有效数据
如果前11行是独立的有效观测(比如单个被试的数据),其余行无信息价值,可仅保留这部分数据拟合模型:
# 仅保留前11行存在response变异的数据 d50_sub <- d50[1:11, ] fit_sub <- drm(response ~ VOT_num, data = d50_sub, fct = LL.4()) summary(fit_sub)
验证效果
完成上述处理后,模型即可正常拟合,不会再出现non-finite value supplied by optim和收敛失败的错误。
内容的提问来源于stack exchange,提问作者firmo23
相关产品推荐
相关产品推荐

