Sugestia
To może być dobry pomysł mieć tę funkcję zabawki, aby sprawdzić, czy sesja R jest OK, aby uruchomić analizę GAM.
GAM_status <- function() {
if (all(c("gam", "mgcv") %in% .packages())) print("Not OK")
else print("OK")
}
nsdf
jest liczba ścisłym stopniu swobody, to termin używany wyłącznie w mgcv
. Jak wspomniałeś: mgcv
to skąd pochodzi funkcja plot.gam
.
Problem polega na tym, że masz gam
i mgcv
, dwa niekompatybilne pakiety w twojej sesji R w tym samym czasie. Pasujesz do gam.mod
z gam::gam
, ale następnie wykreśl model za pomocą mgcv::plot.gam
.
Uwaga, to, co jest normalnie prawdziwe, używając ::
, straci ważność tutaj. Zwykle, gdy dwa pakiety mają pewne funkcje zamaskowane, środkiem zaradczym jest ::
. Ale dla mgcv
i gam
jest to całkowicie niemożliwe. Tak więc moja sugestia brzmi: jeśli używasz gam
, nigdy nie dotykaj mgcv
w twojej sesji R i na odwrót.
Tak, zaczynam świeżą sesję R i wykonaj następujące czynności, wszystko jest w porządku!
library(gam)
library(ISLR) # contains the Wage dataset used here
gam.mod <- gam(wage ~ s(year, 4) + s(age, 5) + education, data = Wage)
par(mfrow = c(2,2)); plot(gam.mod)
Dziękuję za odpowiedź. Nigdy faktycznie nie załadowałem mgcv
, właśnie założyłem, że to była zależność dla gam
. Rozpocząłem nową sesję R, a podany przez ciebie kod zadziałał. Okazało się, że jest to biblioteka car
, która powoduje ten sam problem.
mgcv
i gam
nie zależą od siebie, ale ponieważ mgcv
jest bardziej popularna niż gam
, wiele pakietów posiada zależność od mgcv
np car
:
car: Companion to Applied Regression
Functions and Datasets to Accompany J. Fox and S. Weisberg, An R Companion to
Applied Regression, Second Edition, Sage, 2011.
Version: 2.1-3
Depends: R (≥ 3.2.0)
Imports: MASS, mgcv, nnet, pbkrtest (≥ 0.4-4), quantreg, grDevices, utils,
stats, graphics
Uwaga „Import” Pole , library(car)
załaduje te pakiety w tym samym czasie.
Dziękuję za odpowiedź. Nigdy właściwie nie załadowałem MGCV, po prostu założyłem, że to zależność od gam.Zaczynałem nową sesję R, a podany przez ciebie kod zadziałał. Zauważyłem, że to właśnie biblioteka '' 'car''' powoduje ten sam problem. Notacja '' '' '' 'nie rozwiązuje problemu między' '' gam''' '' '' '' '' '' '' '' '. –