2016-07-25 6 views
0

단계에서와 비슷하게 R에서 GAM의 변수 선택을 자동화하는 방법이 있습니까? step.gamselection.gam의 설명서를 읽었지만 아직 작동하는 코드로 대답을 보지 못했습니다. 또한 method= "REML"select = TRUE을 시도했지만 모델에서 중요하지 않은 변수는 제거하지 않았습니다.mgcv로 변수 선택

나는 스텝 모델을 만든 다음 이러한 변수를 사용하여 GAM을 만들 수 있다고 계산했지만 효율적인 것은 아닙니다.

예 :

library(mgcv) 

set.seed(0) 
dat <- data.frame(rsp = rnorm(100, 0, 1), 
        pred1 = rnorm(100, 10, 1), 
        pred2 = rnorm(100, 0, 1), 
        pred3 = rnorm(100, 0, 1), 
        pred4 = rnorm(100, 0, 1)) 

model <- gam(rsp ~ s(pred1) + s(pred2) + s(pred3) + s(pred4), 
      data = dat, method = "REML", select = TRUE) 

summary(model) 

#Family: gaussian 
#Link function: identity 

#Formula: 
#rsp ~ s(pred1) + s(pred2) + s(pred3) + s(pred4) 

#Parametric coefficients: 
#   Estimate Std. Error t value Pr(>|t|) 
#(Intercept) 0.02267 0.08426 0.269 0.788 

#Approximate significance of smooth terms: 
#   edf Ref.df  F p-value 
#s(pred1) 0.8770  9 0.212 0.1174 
#s(pred2) 1.8613  9 0.638 0.0374 * 
#s(pred3) 0.5439  9 0.133 0.1406 
#s(pred4) 0.4504  9 0.091 0.1775 
--- 
#Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

#R-sq.(adj) = 0.0887 Deviance explained = 12.3% 
#-REML = 129.06 Scale est. = 0.70996 n = 100 
+0

는 I 위쪽 열 개 변수를 갖는 통계 통계에서 그렇게 많은 것은 아님), 권력 예측에 큰 손실없이 일부 변수를 줄이고 싶습니다. – IJH

+0

프로그래밍에 관한 것이 아니기 때문에이 질문을 주제로 닫으려고 합니다만 통계 (모델 선택) –

답변

1

MARRA 및 목재 (2011, 전산 통계 및 데이터 분석 (55), 2,372에서 2,387 사이)이 GAMS에서 기능 선택에 대한 다양한 접근 방법을 비교한다. 그들은 평탄도 선택 절차에서 추가적인 패널티가 가장 좋은 결과를 낳았다 고 결론 지었다. 이것은 select = TRUE 인수/설정을 사용하여 :: mgcv에 GAM()를 활성화 또는 다음의 변형 중 하나 일 수있다 : (I 사용하는 다른 데이터 세트의 일부

model <- gam(rsp ~ s(pred1,bs="ts") + s(pred2,bs="ts") + s(pred3,bs="ts") + s(pred4,bs="ts"), data = dat, method = "REML") 
model <- gam(rsp ~ s(pred1,bs="cr") + s(pred2,bs="cr") + s(pred3,bs="cr") + s(pred4,bs="cr"), 
      data = dat, method = "REML",select=T) 
model <- gam(rsp ~ s(pred1,bs="cc") + s(pred2,bs="cc") + s(pred3,bs="cc") + s(pred4,bs="cc"), 
      data = dat, method = "REML") 
model <- gam(rsp ~ s(pred1,bs="tp") + s(pred2,bs="tp") + s(pred3,bs="tp") + s(pred4,bs="tp"), data = dat, method = "REML") 
+0

'bs ='를 추가하면 무엇을 할 수 있습니까? – IJH