使用 mgcv 将样条添加到多项 logit 模型

Zol*_*tan 5 r gam mgcv multinomial logistic-regression

我正在尝试训练一个多项式 logit 模型,当我在做的时候,我不妨把它变成一个 GAM 并在混合中添加样条。

我曾尝试使用mgcv,但到目前为止我只设法生成错误。以下是使用iris数据集的一些示例。

你知道如何让它收敛吗?
谢谢

library(tidyverse)
library(mgcv)
my_iris <- iris %>% 
  mutate(y =    as.integer(as.factor(Species)) -1) 
set.seed(8)

# this works (no spline)
mod1 <- gam(
  data = my_iris,
  formula = list(
    y ~ Sepal.Length + Petal.Length,
      ~ Sepal.Length + Petal.Length),
  family=multinom(K=2))
Run Code Online (Sandbox Code Playgroud)

模型 2(花瓣宽度上的 1 个样条)崩溃并显示以下警告:

Warning message:
 In newton(lsp = lsp, X = G$X, y = G$y, Eb = G$Eb, UrS = G$UrS, L = G$L,  :
Fitting terminated with step failure - check results carefully
Run Code Online (Sandbox Code Playgroud)

.

mod2 <- gam(
  data = my_iris,
  formula = list(
    y ~ Sepal.Length + s(Petal.Width),
      ~ Sepal.Length + Petal.Length),
  family=multinom(K=2))
Run Code Online (Sandbox Code Playgroud)

模型 3(花瓣长度上的 1 个样条)崩溃并显示以下警告:

Error in eigen(hess1, symmetric = TRUE) : 
infinite or missing values in 'x'
Run Code Online (Sandbox Code Playgroud)

.

mod3 <- gam(
  data = my_iris,
  formula = list(
    y ~ Sepal.Length + s(Petal.Length),
      ~ Sepal.Length + Petal.Length),
  family=multinom(K=2))
Run Code Online (Sandbox Code Playgroud)

模型 4(Sepal.Length 上的 2xsplines)崩溃并显示以下警告:

Error in gam.fit5(x, y, sp, Sl = Sl, weights = weights, offset = offset,  : 
non finite values in Hessian
Run Code Online (Sandbox Code Playgroud)

.

mod4 <- gam(
  data = my_iris,
  formula = list(
    y ~ s(Sepal.Length) + Petal.Length,
      ~ s(Sepal.Length) + Petal.Length),
  family=multinom(K=2))
Run Code Online (Sandbox Code Playgroud)