2016-08-19 5 views
5

gam 패키지로 만든 R에 gam 객체를 플롯하려고합니다. Error in 1:object$nsdf : argument of length 0 when using plot.gam에보고 된 동일한 오류가 나타납니다. 그러나 거기에있는 해결책은 최신 버전으로 업데이트됩니다 (제 생각에는) 저를 위해 일하지 않습니다. 나는 R 3.3.1, gam 1.12 및 mgcv 1.8.12 (mgcv는 plot.gam 함수의 출처)를 실행 중입니다.

불행히도 내가 작업중인 데이터를 공유 할 수 없습니다. 그러나 다음 코드는 Intro의 p.294에서 직접 가져 왔습니다. - R과 통계 학습에 나를 위해 오류를 재생하기 :

library(gam) 
library(ISLR) # contains the Wage dataset used here 
gam.mod <- gam(wage ~ s(year, 4) + s(age, 5) + education, data = Wage) 
plot(gam.mod) 

아무도 여기에 무슨 또는 해결 방법을하는 것입니다 무엇을 알고 있나요?

감사합니다.

답변

4

제안

그것은 좋은 생각이 R 세션이 GAM 분석을 실행하기 위해 OK 여부를 확인하기 위해이 장난감 기능이 될 수 있습니다.

GAM_status <- function() { 
    if (all(c("gam", "mgcv") %in% .packages())) print("Not OK") 
    else print("OK") 
    } 

nsdf

자유의 엄격한 정도의 수는 용어가 독점적으로 mgcv에 사용되는 입니다. 언급 한대로 mgcvplot.gam 함수의 출처입니다.

문제는 사용자가 gammgcv 두 개의 호환되지 않는 패키지가 동시에 R 세션에있는 것입니다. gam.modgam::gam으로 맞춘 다음 mgcv::plot.gam으로 모델을 플롯합니다.

일반적으로 ::을 사용하면 실제로 적용되지 않습니다. 일반적으로 두 개의 패키지에 마스크 기능이있는 경우 ::이 해결책입니다. 그러나 mgcvgam의 경우 이는 완전히 불가능합니다. 따라서 제 제안은 gam을 사용하는 경우 R 세션에서 mgcv을 만지지 마십시오. 그 반대도 마찬가지입니다.

그래서 신선한 R 세션을 시작하고 다음을 수행하면 모든 것이 정상입니다!


enter image description here

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) 

는 답변 주셔서 감사합니다. 실제로 mgcv을로드 한 적이 없으며, 나는 단지 gam에 대한 의존성이라고 가정했습니다. 저는 신선한 R 세션을 시작했고 제공 한 코드가 효과가있었습니다. 나는 실제로 같은 문제를 일으키는 car 라이브러리라는 것을 알았습니다.

mgcvgam 서로에 의존하지 않고, mgcvgam보다 더 인기가 있기 때문에, 많은 패키지는 car, 예를 들어, mgcv에 종속성이 :은 "수입"필드

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 

주 , library(car)이 패키지를 동시에로드합니다.

+0

답장을 보내 주셔서 감사합니다. 나는 실제로 mgcv를로드하지 않았습니다. 단지 gam에 종속 된 것으로 가정했습니다. 저는 신선한 R 세션을 시작했고 제공 한 코드가 작동했습니다. 실제로 같은 문제를 일으키는 것은''자동차''라이브러리라는 것을 알게되었습니다. '''::''표기법은''gam'''과''car'' 사이의 문제를 해결하지 못합니다. –