如何使 GAM 使用二进制变量?

How to make GAM work with binary variables?

我是运行这段代码:

model.runs <- BIOMOD_Modeling(run.data,
                                models =  models,
                                NbRunEval = runs.CV,
                                DataSplit = 80,  
                                VarImport = 20,
                                SaveObj = T,
                                Yweights = NULL,
                                rescal.all.models = FALSE,
                                do.full.models = FALSE,
                                models.options = BIOMOD_ModelingOptions(
                                  GAM = list(k=3),
                                  MAXENT.Phillips = list(path_to_maxent.jar = "F:/xxx/xxx/")))
  save(model.runs, file = "model.runs")

我遇到了这个错误:

Error in smooth.construct.tp.smooth.spec(object, data, knots) :
  A term has fewer unique covariate combinations than specified maximum 
degrees of freedom

经过一番研究,我了解到GAM不喜欢我的二进制变量,所以我把它们拿出来了,效果很好。

因此,我的问题很简单:我想保留我的环境变量,这在某种程度上可行吗?

对不起,如果它是微不足道的,但我不经常使用 GAM,我在其他任何地方都找不到答案。

干杯。

不能对二元或分类变量进行平滑处理,只能对连续变量进行平滑处理。

您可以在平滑变量和分类变量之间创建交互,并且可以对分类变量使用随机效应“平滑”。但是你不能只对二元或分类变量进行平滑处理。您需要安排 biomod 将这些变量作为线性因子项包含在内。如果您将它们编码为 0,1,那么 R、biomod 和 mgcv 将认为这些变量是数字。确保它们被强制为因子,然后重试。