2014-12-01 4 views
0

mgcv 패키지에서 s(... bs = "fs")을 통해 구성된 요인 원활한 상호 작용의 플롯을 만들었습니다. 그러나 plot.gam()xlimmain 인수 (및 다른 몇 가지 인수)가 제대로 작동하지 않는 것으로 나타 났지만 다른 종류의 매끄러운 작업을 계획하는 것과 동일한 논점이 작용합니다.몇 가지 인수가 mgcv에서 요인 원활한 상호 작용을 계획 할 때 의도 한대로 작동하지 않음

다음은 예입니다.

업데이트 : 문제가 더 잘 반영되도록 예제를 수정했습니다 (2014 년 12 월 2 일).

library(mgcv) 

# create toy data 
set.seed(1) 
d <- data.frame(
x = runif(10 * 100), 
f = rep(paste0("f", 1:10), each = 100) 
) 
d$y <- 2 * d$x + 10 + rnorm(10 * 100) 

# build a model 
model <- gam(y ~ s(x) + s(x, f, bs = "fs"), data = d) 

s(x) 기간에 대응하는 플롯을 생성하는 다음 코드를 x 축 제한을 의도 한대로, 타이틀을 둔다.

그러나

plot(model, select = 1, xlim = c(0.4, 0.6), main = "Title") 
s(x, f, bs = "fs") 기간에 대응하는 플롯을 생성하고 다음 코드를 X 축을 제한하거나 제목을 생성하지 않는다.

plot(model, select = 2, xlim = c(0.4, 0.6), main = "Title") 

나는 mgcv::plot.gam() 어떤 경우에 mgcv:::plot.fs.interaction() 또는 mgcv:::plot.mgcv.smooth()에 (의 일부) 인수를 전달하는 데 실패 의심하지만 어떻게 그것을 해결하는 방법을 이유를 알아낼 수 없었다. 나는 어떤 도움을 주셔서 감사합니다.

답변

0

나는 기본적으로 "mgcv를 수정하지"않는 무차별 대입 방식을 인정하지만, mgcv를 수정하는 것이 내 능력 위에 있다고 생각합니다.

with(d, plot(X=   seq(0,1,length=100), 
      gamPred.x2 = predict(model, 
        newdata=data.frame(x1=mean(x1), 
             x2=seq(0,1,length=100), 
             f="f5") 
     ))) 
+0

감사합니다. 이것은 실제로 지금하는 것과 비슷합니다. 문제는이 접근법이 예상 값을 플롯하지만 매끄러운 자체는 플롯하지 않는다는 것입니다. 위의 그림에서 문제가되는 부분은 실제로 x2가 다른 매끄러운 용어에 참여한다는 것입니다. 따라서 예측 된 값을 계산하면 x2가 포함 된 모든 용어가 반영됩니다. 이것은 또한 합리적인 일이지만, 나는 또한 인자 - 매끄러운 상호 작용에 기인하는 효과를 격리시키는 방법을 찾고 있습니다. –

+0

실제 문제를 설명하기에 불충분 한 복잡성으로 제시된 예는 불충분하게 복잡한 답변을받을 자격이 있습니다. –

+0

오른쪽. 지나치게 단순화 시켜서 미안해. 방금 질문을 업데이트했습니다. –