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.