2014-04-14 2 views
0

아래 코드에서 모델 1 & 2는 올바르게 작동하고 동일한 결과를 산출합니다. 모델 4는 잘 작동합니다.올레 (ols)에 대한 상호 작용이있는 공식

require(rms) 

    mtcars$ind <- I(mtcars$gear==4) 

    dd <- datadist(mtcars) 
    options(datadist = "dd") 

    ols(as.formula(mpg ~ wt + cyl + gear + cyl:gear), data=mtcars) #1 
    ols(as.formula(mpg ~ wt + cyl + gear + cyl * gear), data=mtcars) #2 

    ols(as.formula(mpg ~ wt + cyl + gear + cyl:ind), data=mtcars)  #3 
    ols(as.formula(mpg ~ wt + cyl + gear + cyl * ind), data=mtcars) #4 

모델 3 다음 오류

Error in if (!length(fname) || !any(fname == zname)) { : 
     missing value where TRUE/FALSE needed 

에게 OLS와 RMS에서 I는 디버그 (설정하려고

2: Design(eval.parent(m)) 
    1: ols(as.formula(mpg ~ wt + cyl + gear + cyl:ind), data = mtcars) 

추적의 출력()이다) ::: 디자인을 제공하며 아주 멀지 않았다 !! 나는 rms :: lrm()을 사용할 때이 문제에 부딪 쳤고 ol에서 일어난다는 것을 깨달았다.

# 3은 # 3이 작동하지 않는 이유는 무엇입니까? 그들은 하나의 수식에서 동일한 용어를 사용하는데 :을 사용하고 다른 하나는 *을 사용합니다. 고마워.

+1

왜 'as.formula'에서 수식을 래핑합니까? 꼭 필요한 것은 아닙니다. 또한 질문을 쉽게 대답 할 수 있도록 [재현 가능한 예] (http://stackoverflow.com/a/5963610/1412059)를 제공해야합니다. 그러나 세 번째 모델에는'cyl : ind'라는 상호 작용이 포함되어 있지만'ind'는 주 효과로 포함되어 있지 않습니다. 그와 같은 것은 매우 구체적인 상황에서만 좋은 아이디어이지만 일반적으로는 아닙니다. 'ols'는 상호 작용의 효과가 항상 주 효과로 존재한다고 가정한다는 것은 잘 추측 할 수 있습니다. – Roland

+0

고맙습니다 @roland. 여기에 인스턴스를 생성하는 코드는 없지만 mtcars는 [datasets] (https://stat.ethz.ch/R-manual/R-devel/library/datasets/html/mtcars.html)의 일부입니다. 따라서 위의 코드는있는 그대로 실행될 수 있습니다. – ironv

답변

0

감사합니다. @roland. # 4를 실행하면 다른 주요 효과가 추가 된 것으로 보입니다. 다음은 # 4와 똑같은 출력을 생성합니다 :

ols(mpg ~ wt + cyl + gear + ind + cyl:ind, data=mtcars) #3b 
    ols(mpg ~ wt  + gear  + cyl * ind, data=mtcars) #4b 
관련 문제