GEE逻辑回归模型报错:NA/NaN/Inf in foreign function call求助
我在用广义估计方程(GEE)实现逻辑回归时,遇到了报错问题:使用gee包时持续提示NA/NaN/Inf in foreign function call (arg 2),切换至geepack包也出现类似报错。已确认数据集无NA、Inf值,所有变量均为因子类型且无缺失,调整变量结构也无法解决,但标准逻辑回归(glm)可正常收敛。以下是可复现的最小数据、代码及排查细节,请求帮忙找出报错原因。
数据
df <- structure(list(id = structure(c(7L, 1L, 20L, 15L, 14L, 6L, 8L, 24L, 21L, 19L, 5L, 4L, 18L, 13L, 23L, 16L, 25L, 12L, 10L, 9L, 22L, 17L, 11L, 3L, 2L, 2L), levels = c("ALWA28M", "BOMA13M", "BOMA41M", "DAYA35M", "DEMB72M", "EDAB3WM", "EFCH52M", "FASI6M", "FRRO35M", "GRAS35F", "GRKA48M", "JARA35M", "KABA27M", "KECH4WM", "MAAD60M", "MACH33M", "MEBA29F", "MIGU42M", "MTSA10M", "NTMA22F", "RACA2M", "STMA35M", "TOKE39M", "TRMA12M", "YOLU29M"), class = "factor"), testres = structure(c(1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L), levels = c("POS", "NEG"), class = "factor"), agegrp = structure(c(5L, 3L, 3L, 5L, 1L, 1L, 2L, 2L, 1L, 2L, 6L, 4L, 4L, 3L, 4L, 4L, 3L, 4L, 4L, 4L, 4L, 3L, 5L, 4L, 2L, 2L), levels = c("0", "1", "2", "3", "4", "5"), class = "factor")), row.names = c(NA, 26L), class = "data.frame")
gee包模型代码与报错
代码
gee::gee(testres ~ agegrp, data = df, id = id, family = binomial, corstr = "exchangeable")
报错信息
Error in gee::gee(testres ~ agegrp, data = df, id = id, family = binomial, :
NA/NaN/Inf in foreign function call (arg 2)
In addition: Warning message:
In gee::gee(testres ~ agegrp, data = df, id = id, family = binomial, :
NAs introduced by coercion
数据检查结果
检查代码
# 所有变量均为因子类型 str(df) # 无NA或Inf值 lapply(df, table, useNA = "always") lapply(df, \(x) table(is.infinite(x)))
结果
str(df)输出显示3个变量均为因子类型,共26条观测:'data.frame': 26 obs. of 3 variables: $ id : Factor w/ 25 levels "ALWA28M","BOMA13M",..: 7 1 20 15 14 6 8 24 21 19 ... $ testres: Factor w/ 2 levels "POS","NEG": 1 1 1 2 1 1 1 1 1 1 ... $ agegrp : Factor w/ 6 levels "0","1","2","3",..: 5 3 3 5 1 1 2 2 1 2 ...lapply(df, table, useNA = "always")显示无NA值;lapply(df, \(x) table(is.infinite(x)))显示无Inf值。
geepack包模型代码与报错
代码
geepack::geeglm(testres ~ agegrp, data = df, id = id, corstr = "exchangeable", family = "binomial")
报错信息
Error in lm.fit(zsca, qlf(pr2), offset = soffset) : NA/NaN/Inf in 'y'
In addition: Warning messages:
1: In model.response(mf, "numeric") :
using type = "numeric" with a factor response will be ignored
2: In Ops.factor(y, mu) : ‘-’ not meaningful for factors
标准逻辑回归可正常收敛
summary(glm(testres ~ agegrp, data = df, family = binomial(link = logit)))
已尝试但无效的方法
- 解决randomForest预测时的"NA/NaN/Inf in foreign function call (arg 7)"错误
- R中"NA/NaN/Inf in foreign function call (arg 1)"问题排查
- gee()模型拟合报错"NA/NaN/Inf in foreign function call (arg 3)"的解决
- 解决"NA/NaN/Inf in foreign function call (arg 2)"错误
- "NA/NaN/Inf in foreign function call (arg 5)"问题处理
- lme报错"NA/NaN/Inf in foreign function call (arg 3)"的排查
- 运行PGLS(Pagel's lambda)时出现"NA/NaN/Inf in foreign function call (arg 1)"错误的解决
- bigglm中"NA/NaN/Inf in foreign function call (arg 3)"错误的消除
- glmnet报错"NA/NaN/Inf in foreign function call"的处理
内容的提问来源于stack exchange,提问作者jpsmith

