2016-07-21 5 views
0

평균적 모델 (http://www.inside-r.org/packages/cran/MuMIn/docs/model.avg)을 얻기 위해 R에서 MuMln 패키지를 사용하고 있습니다. 패키지에는 model.avg (http://www.inside-r.org/node/123636)이 반환 한 개체에 대해 특별히 predict 함수가 포함되어 있습니다. '평균'에서만 예측할 수있다 : (avgm, 전체 = TRUE)이모델 평균을 사용하여 오류 및 MuMln을 사용하여 R을 예측하는 중

# Example from Burnham and Anderson (2002), page 100: 
    fm1 <- lm(y ~ X1 + X2 + X3 + X4, data = Cement) 

    ms1 <- dredge(fm1) 

    # obtain model average for AIC delta <2 
    avgm <- model.avg(ms1, subset=delta<2) 

    # predict from the averaged model 
    averaged.full <- predict(avgm, full = TRUE) 

하지만 predict.averaging에

오류가 계속 : 나는 나와있는 예제를 사용하여 시도했다, 코드는 다음과 같이 모델 목록을 포함하는 객체

나는 예제를 따르고 model.avg에 의해 반환 된 객체를 사용했기 때문에 이해할 수 없습니다. 내가 놓친 게 있니?

답변

2

개체를 "model.selection" 개체에서 직접 생성하면 에 필요한 구성 요소 모델이 포함되어 있지 않습니다. 모델에 맞는 model.avg(..., fit = TRUE)을 다시 사용할 수 있습니다. 두 번 모델을 피팅을 방지하기 위해

먼저 lapply(dredge(..., evaluate = FALSE), eval) 그것에 이후 사용 model.avg(..., subset = ...) 모든 모델의 목록을 만들 수 있습니다.

+0

아하겠습니다. 'evaluate = FALSE'가 필요한 이유는 무엇입니까? 미안하지만, 기본 'eval' 함수에 익숙하지 않은 경우, 그 대신 작업을 수행합니까? –

+0

기본적으로'dredge'와'evaluate = FALSE'는 명령리스트 ('lm (...)')를 생성하고'eval'은 그것들을 실행합니다. 그렇지 않으면'dredge'는 모델을 한 번 실행하고'get.models' 또는'model.avg (..., fit = TRUE)'는 다시 실행합니다. 작은 모델이 적은 경우 컴퓨팅 시간에 눈에 띄는 차이는 없습니다. –