Wyodrębnianie danych użytych do utworzenia gładkiego wykresu w mgcv

Ten wątek z kilku lat temu opisano, jak wyodrębnić dane wykorzystane do wykreślenia gładkich elementów dopasowanego modelu gam. Działa, ale tylko wtedy, gdy istnieje jedna płynna zmienna. Mam więcej niż jedną płynną zmienną i niestety mogę wydobyć tylko gładkie z ostatniej serii. Oto przykład:

library(mgcv)
a = rnorm(100)
b = runif(100)
y = a*b/(a+b)

mod = gam(y~s(a)+s(b))
summary(mod)

plotData <- list()
trace(mgcv:::plot.gam, at=list(c(25,3,3,3)), 
        #this gets you to the location where plot.gam calls plot.mgcv.smooth (see ?trace)
        #plot.mgcv.smooth is the function that does the actual plotting and
        #we simply assign its main argument into the global workspace
        #so we can work with it later.....
        quote({
                    #browser()
                    plotData <<- c(plotData, pd[[i]])
                }))
plot(mod,pages=1)
plotData

Próbuję uzyskać szacowane gładkie funkcje dla obua ib, ale listaplotData tylko daje mi szacunkib. Zajrzałem do wnętrznościplot.gam funkcja i mam trudny czas, aby zrozumieć, jak to działa. Jeśli ktoś już rozwiązał ten problem, byłbym wdzięczny.

questionAnswers(2)

yourAnswerToTheQuestion