В plot.gam()
мы отмечаем, что plot()
вызывается на x$smooth[[i]]
, который является объектом класса:
class(x$smooth[[i]])
[1] "tprs.smooth" "mgcv.smooth"
Для класса "mgcv.smooth"
- это a plot()
метод, и именно он используется для графика в общем случае. ?plot.gam
упоминает, что это метод по умолчанию, используемый для большинства сглаживаний, но есть определенные методы для определенных типов сглаживания, поддерживаемые gam()
(из раздела Details ?plot.gam
:
For smooth terms ‘plot.gam’ actually calls plot method functions
depending on the class of the smooth. Currently random effect and
Markov random field smooths have special methods, the rest use the
defaults described below.
По какой-то причине methods()
не находит эти методы, но они существуют:
> mgcv:::plot.mgcv.smooth
function (x, P = NULL, data = NULL, label = "", se1.mult = 1,
se2.mult = 2, partial.resids = FALSE, rug = TRUE, se = TRUE,
scale = -1, n = 100, n2 = 40, pers = FALSE, theta = 30, phi = 30,
jit = FALSE, xlab = NULL, ylab = NULL, main = NULL, ylim = NULL,
xlim = NULL, too.far = 0.1, shade = FALSE, shade.col = "gray80",
shift = 0, trans = I, by.resids = FALSE, scheme = NULL, ...)
{
....
Это может быть связано с ошибкой в methods()
, из-за которой plot.function
не отображался в списке, и мой текущий R может не включать это исправление. Этот метод должен показываться нормально, и общий совет в таких ситуациях должен состоять в том, чтобы идентифицировать класс объекта (как я показал выше), а затем использовать methods()
и аналогичные функции (например, showMethods()
), чтобы определить, доступны ли конкретные методы для возвращаемый класс (ы) объекта.