2012-02-14 7 views
5

최종 단계 모델 구축을 자동화하려고했습니다. 두 개의 서로 다른 모델의 예측 변수를 하나의 최종 모델로 결합하고 싶습니다. update.formula()으로 놀았지만 이전 lmfit $ 통화를 새 것으로 업데이트 할 수 있음을 깨달았습니다 (예 : update.formula(lmfit$call,lmfitnew$call)). 여기에 내가 두 모델에서 벚꽃 선택 변수에 필요하고 이것은 내가 내 최종 모델에서하고 싶은 것입니다 어떻게 두 개의 다른 선형 모델의 예측 변수를 하나로 결합 할 수 있습니까?

lmfit1 <- lm(y~ x1+x2+x3, data = modelready) 
best.ngc_fit <- stepAIC(lmfit1, direction="backward") 
best.ngc_fit$call 

lm(formula = y~ x2+x3, data = modelready) 

lmfit2 <- lm(y ~ a+b+c+d+f, data=fcstmodel) 
best.fcst_fit <- stepAIC(lmfit2, direction ="backward") 
best.fcst_fit$call 

lm(formula = y~ a+c+d+f, data = fcstmodel) 

한 최종

실행

best.full_fit <- lm(y~x2+x3+a+c+d+f, data = fullmodel) 
내가 수동으로 문제없이 그것을 할 수

, 그러나 나는 전체 과정을 덜 지루하게하기 위해 그것을 자동화하고 싶다. 이것은 각 모델의 구성 요소를 추출하고 새로운 디자인 매트릭스로 결합의 문제의 경우

어떤 도움이 많이

+0

왜 데이터를 병합하고 전체 론적 모델을 먼저 만들어보십시오. x1, x2, x3 = 0으로 설정하면 a, b, c, d, f> 0이고 그 반대가됩니다. 즉, 변수 x가 적절하게 채워지는 x1, x2, x3, x4, a, b, c, d, f 열을 포함하는 data.frame을 사용 하시겠습니까? –

+0

Brandon, 귀하의 의견에 감사드립니다.이 모델은 원래 SAS로 작성되었습니다. 모델 구성 방식은 두 가지 최상의 모델을 결합하는 것입니다. 최우선 모델의 예측 변수는 거시 경제 변수와 관련된 물가 지수 (주택 가격 지수), 차선 모델의 예측 변수는 실업률 등과 같은 노동 지수와 관련이있다. 모델로의 데이터 흐름의 기본 구조를 변경할 자유가 없습니다. 그렇게한다면 나는 이것을 고위 경영진에게 팔 수 없다. 나는 미국에서 선도적 인 은행을 위해 일하고 있으며, 우리가하는 것들은 우리에게 의미가 없기 때문에 대중에게 그렇게합니다. – Anand

답변

4

고급 기능을 사용하려면 수식 패키지를 사용할 수 있습니다.

formula(as.Formula(terms(lm1),formula(Formula(terms(lm2)), lhs=0)), collapse=TRUE) 

y ~ X1 + X2 + X3 + (X5 + X7) 
5

이해할 수있을 것이다, 그 다음은 stepAIC을 사용하는 사실에 관계없이 작동합니다 :

dfrm <- data.frame(y=rnorm(100), replicate(7, rnorm(100))) 
lm1 <- lm(y ~ X1+X2+X3, dfrm) 
lm2 <- lm(y ~ X5+X7, dfrm) 
lm1.fm <- attr(terms(lm1), "term.labels") 
lm2.fm <- attr(terms(lm2), "term.labels") 
lm3.fm <- as.formula(paste("y ~ ", paste(c(lm1.fm, lm2.fm), collapse= "+"))) 
lm3 <- lm(lm3.fm, dfrm) 

여기에 우리가 뭐에 대한 자세한 정보를 얻을 수 help(terms.object)를 참조

> names(dfrm) 
[1] "y" "X1" "X2" "X3" "X4" "X5" "X6" "X7" 
> lm3.fm 
y ~ X1 + X2 + X3 + X5 + X7 

이, 아이디어를 해결하려면 반환한다. 예를 들어 lm1best.ngc_fitlm2으로 바꾸고 best.fcst_fit으로 바꿔야합니다.

+0

크리스토프, 고마워요. 그것은 매우 잘 작동했고 lm()에 의해 생성 된 객체를 깊이 파헤쳐 학습하는 데 도움이되었습니다. 귀하의 웹 사이트를 방문하여 R 충돌 수업을 제공하는 훌륭한 교사임을 깨달았습니다. 온라인 수업이 있으면 알려주세요. 다시 한번 감사드립니다. – Anand

+0

이걸 듣고 다행이라면 R 오브젝트에 깊이 들어가는 데 도움이됩니다. R 온라인 도움말을보고 함수에서 반환되는 내용을 확인하고 R 프롬프트로 간단한'str (your.object) '를 실행하는 것이 좋습니다. 내 코스에 대한 의견을 보내 주셔서 감사합니다 (가장 최근 슬라이드는 [here] (http://www.aliquote.org/cours/2012_biomed/)이지만 프랑스어로되어 있으며 다른 좋은/훌륭한 자습서가 많이 있습니다. 약간의 인터넷 검색으로 :-) – chl

관련 문제