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

在R中运行GAM回归出现异常错误信息求助

问题原因与解决方案

这个报错的核心问题很直接——你把因子变量直接传入了光滑函数s()中,而mgcv包的s()是为数值型变量设计的,用来拟合连续变量的非线性光滑效应,因子变量根本没法参与它内部的数值计算,这才触发了那些错误和警告。

为什么会出现这些报错?

看警告信息就能明白:

  • In mean.default(xx) : argument is not numeric or logical: returning NA:光滑函数需要先对变量做中心化(计算均值),但因子变量没法计算均值,返回了NA。
  • In Ops.factor(xx, shift[i]) : ‘-’ not meaningful for factors:光滑函数内部要做数值减法运算,而因子之间的减法是没有意义的,这直接导致了后续的底层函数调用出错。

正确的处理方式

根据你的需求,有几种不同的正确建模思路:

1. 把因子作为固定线性效应(最常见的情况)

如果你的因子变量(ProviderCount、LastStage)是用来表示分组的固定效应,直接把它们放在s()外面,和普通线性模型一样:

library(mgcv)
df <- structure(list(ProviderCount = structure(c(2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("0", ">0"), class = "factor"), AdmCharge = c(12889.32, 51858.43, 9957.34, 30164.17, 146750.17, 9653.39, 27547.83, 7573.13, 70912.57, 2400, 39719.79, 63282.82, 44386.1, 31832.86, 7578.46, 34729.19, 38800.62, 15985.41, 450, 24213.66), LastStage = structure(c(2L, 2L, 4L, 2L, 3L, 4L, 3L, 3L, 3L, 2L, 2L, 3L, 3L, 3L, 6L, 3L, 2L, 2L, 2L, 3L), .Label = c("1", "2", "3.1", "3.2", "4", "5"), class = "factor")), row.names = c(NA, -20L), class = c("tbl_df", "tbl", "data.frame"))

# 正确的固定效应模型
model1 <- gam(AdmCharge ~ ProviderCount + LastStage, data = df)
summary(model1)

2. 对因子转换后的数值变量拟合光滑效应

如果LastStage是有序因子(比如代表疾病阶段的递进),你可以先把它转换为数值型,再拟合光滑效应:

# 将LastStage转换为数值(注意处理带小数的水平)
df$LastStage_num <- as.numeric(as.character(df$LastStage))

# 拟合:ProviderCount为固定效应,LastStage_num的光滑效应
model2 <- gam(AdmCharge ~ ProviderCount + s(LastStage_num), data = df)
plot(model2) # 可以查看光滑曲线

3. 拟合因子的随机效应(如果分组是随机抽样的)

如果你的因子水平是从更大的群体中抽样得到的,可以把它们作为随机效应处理,用bs = "re"指定随机效应光滑:

model3 <- gam(AdmCharge ~ s(ProviderCount, bs = "re") + s(LastStage, bs = "re"), data = df)
summary(model3)

4. 让光滑效应随因子分组变化

如果想让某个数值变量的光滑效应在不同因子水平下有差异,用by参数(这里假设你有数值变量,比如如果LastStage转成数值后):

model4 <- gam(AdmCharge ~ s(LastStage_num, by = ProviderCount), data = df)
plot(model4, pages = 1) # 查看不同ProviderCount下的光滑曲线

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 16:33:01