배경 : 나는 사용자가 NLME의 lme()
기능에 예측 인자로 사용할 데이터 세트에 변수의 이름을 지정할 수있는 래퍼 함수를 쓴사용 R의 재 공식화() 조건에 대한 분산 분석()
계층 적 선형 모델에 적합합니다. 관련 부분은 다음과 같습니다
predictors <- str_c(c(w,x), collapse = " + ")
mod = lme(fixed = reformulate(termlabels = predictors, response = y),
random = reformulate(termlabels = paste0("1|", cluster_label)),
data = dat)
곳 w
레벨 2 (클러스터 수준) 예측, x
는 레벨 1 (단위 수준) 예측 인자이며, cluster_label
고유 정의하는 변수의 이름입니다 클러스터.
mod = lme(fixed = y ~ w1 + w2 + x1, random = ~1|school, data = tmp)
문제 :
기능 실행을 w = c("w1","w2)
이 x = "x1"
, 내 클러스터가 (모델을 피팅하는 간다까지로) 다음 school
에 의해 정의 된 경우 예를 들어,이 호출하는 것과 같습니다 잘 됐네. ,
Error in reformulate(termlabels = predictors, response = y) :
object 'predictors' not found
와 : 내 문제로 인해 reformulate
내 사용 나는이 같은 모델 객체를 비교하는 anova()
을 사용할 수 있도록하려면,하지만 나는 다음과 같은 오류가이 작업을 수행 할 때, 내가 수집이다 내가 summary(mod)
를 호출 할 때 실제로, 나는 다른 반환 된 정보 중 다음 줄을 얻을 그래서이 인수를 사용하는 방법이있다, 나는 anova()
추가 인수가 ...
를 통해 전달 될 수 있습니다 것을 알 수
Fixed: reformulate(termlabels = predictors, response = y)
을되도록 기능 원하는대로 동작합니까? 또는이 오류가 발생하지 않고 반환 된 모델 객체 중 두 개에 대해 우도 비율 테스트를 수행하는 다른 방법이 있습니까? 추가 세부 정보를 제공해야하는지 알려주세요.
재현 예 : 이들은 잘 예를 재현 HSB12 데이터이다
. 이를 위해서는 nlme
및 stringr
패키지가 필요합니다.
fitVAM <- function(dat,y,w,x,cluster_label) {
library(nlme)
library(stringr)
predictors <- str_c(c(w,x),collapse=" + ")
mod = lme(fixed = reformulate(termlabels = predictors, response = y),
random = reformulate(termlabels = paste0("1|", cluster_label)),
data = dat)
return(mod)
}
dat <- read.csv("http://www.ats.ucla.edu/stat/paperexamples/singer/hsb12.csv")
mod1 <- fitVAM(dat = dat, y = "mathach", w = "meanses", x = "female", cluster_label = "school")
mod2 <- fitVAM(dat = dat, y = "mathach", w = "meanses", x = c("female", "ses"), cluster_label = "school")
anova(mod1,mod2)
당신은 테스트를 용이하게 재현 예제를 제공 주실 래요? – Roland
방금 예제를 추가했습니다. – psychometriko
아. 그 .csv 파일을 읽는 더 좋은 방법이 있다는 것을 알고있었습니다. 편집 해 주셔서 감사합니다. – psychometriko