2013-06-03 2 views
3

에서 가져 오는 중 여러 플롯 출력에서 ​​하나의 플롯을 가져 오려고합니다. 예 :다중 플롯 출력에서 ​​단일 플롯을 R

library(mboost); 
mod=gamboost(Ozone~.,data=airquality[complete.cases(airquality),]); 
plot(mod) 

위의 내용은 각 변수의 "부분 효과"에 대한 플롯을 생성합니다. 선형 모델 (lm)을 그릴 때 생성 된 나머지 플롯에 대해서도 동일한 결과가 나타납니다. 나는 결과를 ggplot의 저장 방법과 비슷한 목록에 저장하려고 시도했지만 단 몇 개의 그림을 추출하는 방법을 검색하는 데 몇 시간을 소비했지만 실패했습니다. 어떤 충고?

질문의 맥락에 관해서는, 나는 반짝이는 응용 프로그램에 그 플롯을 넣으 려하고 다양한 수의 플롯을 출력으로 표시하려고합니다. 다음과 같이

세션 정보는 다음과 같습니다 R 버전 2.15.2 (2012년 10월 26일) 플랫폼 : I386-레드햇 리눅스 GNU (32 비트)도이 여러 플롯을 생산

+0

감사합니다. 미안합니다. 나는 두 사이트를 자주 방문하므로 문제를 해결할 때 내 마음 속에는 같은 사이트가 있습니다. –

답변

4

많은 기능 구획의 부분 집합을 선택하는 인수 plot.lm의 경우에는 which 인수입니다. 따라서 plot(fit, which=1)을 말하면 하나의 그림 만 생성합니다.

mboost 설명서에서 해당 플로팅 기능과 비슷한 인수가 있는지 확인할 수 있습니다.

1

(나는 GAMboost에 익숙하지 않다.)

?plot.GAMBoost에 대한 설명서를 보면, 내가 인수가 select라는 존재를 참조하십시오. 관심있는 변수에이 인수를 설정하면 원하는 단일 플롯을 얻을 수 있습니다. 이것은 @GregSnow가 말한 plot.lmwhich 인수와 유사합니다.

+0

안녕 Greg & gung - 답장을 보내 주셔서 감사합니다. 나는 바보처럼 느껴진다. 나는 "어떤"논쟁을 알았지 만, 다른 사람으로부터 그것을 읽을 때까지 그것을 벡터로 사용하는 방법을 클릭하지는 않았다. 나는 다음과 같이 할 것이다 : 'plot (mod, which = names (dataSet) [i])'여기서 'i'는 바뀔 수있다. 즉, 모두가 아닌 개별적으로 수행 할 때 왜 플롯이 다른지 이유를 설명 할 수 있습니까? 위의 예제를 사용하면 : 'par (mfrow = c (2,3)); 플롯 (mod); plot (mod, which = "Day") 'Day에는 두 개의 다른 플롯이있는 것 같습니다 ... –

+0

왜 다른지, @JeP, 나는 GAMBoost에 익숙하지 않습니다. 주석에서 당신의 솔루션에 대해서'plot'은 객체'mod'의 클래스에 따라 다른 메소드를 호출 할 것입니다. 즉, 당신의 모드가 작품이면, 그것은 plot.lm을 호출합니다. 그러나 그것이 gamboost라면, 그것은 plot.GAMBoost를 호출 할 것입니다. 후자는'which'가 아니라'select' 인수를 사용합니다. – gung

+0

@JeP : 개별적으로 또는 모두 함께 수행하면 플롯이 다른 문제가 해결되어야합니다. 여러 개의 효과가 함께 표시되면 우리는 모든 플롯에 공통된 단일 y 축 스케일을 사용했습니다. 이제 각 그림은 어떤 경우에도 자체 y 축척을 갖습니다. 모든 플롯에 대해 동일한 y 축을 가지려면 이제 'ylim = ...'을 지정해야합니다. –

2

기본적으로 @ greg-snow는 적절한 해결책을 제시했습니다. 나는 이것을 조금 더 자세히 설명 할 것이다.

mboost에서 만 Day의 효과를 음모

plot(mod, which = "Day") 

를 사용할 수 있습니다. 정규식을 사용하는 경우 which 인수를 사용하여 훨씬 더 많은 작업을 수행 할 수 있습니다. 선형 및 매끄러운 효과 모델에서는 예를 들어 플롯에 대한 모든 부드러운 효과를 추출 할 수 있습니다 :

airquality$Month <- as.factor(airquality$Month) 
mod <- mod <- gamboost(Ozone ~ bbs(Solar.R) + bbs(Wind) + bbs(Temp) + bols(Month) + bbs(Day), data=airquality[complete.cases(airquality),]) 

## now plot bbs effects, i.e., smooth effects: 
par(mfrow = c(2,2)) 
plot(mod, which = "bbs") 

## or the linear effect only 
par(mfrow = c(1,1)) 
plot(mod, which = "bols") 

당신은 이름의 일부를 사용하여 작성하려는 효과를 정의합니다 (예를 들어, names(coef(mod)) 참조). 또한 플롯 which 효과를 정의하는 정수 값을 사용할 수 있습니다

plot(mod, which = 1:2) 

참고 이것은 또한 특정 추출물 계수에 사용될 수있다. 예 :

coef(mod, which = 1) 
coef(mod, which = "Solar") 
coef(mod, which = "bbs(Solar.R)") 

은 모두 같습니다. which을 지정하는 방법에 대한 자세한 내용은 coefplot을 참조하십시오. tutorial paper (Hofner 외 (2014), R 패키지를 사용하여 R - A 실습 자습서의 모델 기반 부스트 - 계산 통계, 29 : 3 -35, DOI 10.1007/s00180-012-0382-5).

이 내용은 현재 mboost에 문서화되어 있지 않지만, 앞으로 할일 목록에 있습니다 (github issue 14 참조).