Этот поток из нескольких лет назад описывает, как извлекать данные, используемые для построения гладких компонентов установленной модели гаммы. Он работает, но только тогда, когда есть одна плавная переменная. У меня есть более чем одна плавная переменная, и, к сожалению, я могу только извлечь сглаживания из последней серии. Вот пример:
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
Я пытаюсь получить оценочные гладкие функции для a
и b
, но список plotData
дает только оценки для b
. Я просмотрел мужество функции plot.gam
, и мне сложно понять, как это работает. Если кто-то уже решил эту проблему, я был бы благодарен.