R의 함수에 관한 질문이 있습니다. 클러스터 된 데이터를 부트 스트래핑하는 데 사용하려는 함수입니다. 각 부트 스트랩 복제본에 내 gee 모델을 사용하고 싶습니다. 내 기능을 사용할 때 객체 "id"가 발견되지 않는다는 오류가 발생합니다. 나는 그것이 지구 환경의 사용과 관련이있을 것이라고 생각합니다.함수 내에서 geeglm을 사용할 때 범위 지정 문제
내 데이터는 다음과 같은 구조했습니다
Outcome Time Treatment Cluster ID
500 1 1 Carl 1
800 2 1 Carl 1
1000 3 1 Carl 1
1200 1 2 Pete 2
400 2 2 Pete 2
550 3 2 Pete 2
300 1 1 Rose 3
내 구문은 다음
이clusbootreg <- function(formula,family,data,id, waves,corstr,cluster, reps=4){
reg1 <- geeglm(formula,family,data,id,waves,corstr)
clusters <- names(table(cluster))
sterrs <- matrix(NA, nrow=reps, ncol=length(coef(reg1)))
for(i in 1:reps){
index <- sample(1:length(clusters), length(clusters), replace=TRUE)
aa <- clusters[index]
bb <- table(aa)
bootdat <- NULL
for(j in 1:max(bb)){
cc <- data[cluster %in% names(bb[bb %in% j]),]
for(k in 1:j){
bootdat <- rbind(bootdat, cc)
}
}
sterrs[i,] <- coef(geeglm(formula,family,bootdat,id,waves,corstr))
}
val <- cbind(coef(reg1),apply(sterrs,2,sd))
colnames(val) <- c("Estimate","Std. Error")
return(val)
}
clusbootreg(formula=Outcome~Treatment+Time+Time*Treatment,family=Gamma(link = "log"),data=data,id=ID,waves=Time, cluster=data$Cluster, reps=4)
다음과 같은 오류 메시지가 나타납니다
Error in eval(expr, envir, enclos) : object 'id' not found
이 방법을 알고있는 사람이 있습니까 이 문제를 해결하려면? 나는 이틀 동안 붙어있다.
역 추적은 나에게 알려주는
11: eval(expr, envir, enclos)
10: eval(extras, data, env)
9: model.frame.default(formula = formula, data = data, subset = waves,
weights = id, na.action = corstr, drop.unused.levels = TRUE)
8: stats::model.frame(formula = formula, data = data, subset = waves,
weights = id, na.action = corstr, drop.unused.levels = TRUE)
7: eval(expr, envir, enclos)
6: eval(mf, parent.frame())
5: glm(formula = formula, family = family, data = data, weights = id,
subset = waves, na.action = corstr)
4: eval(expr, envir, enclos)
3: eval(glmcall, parent.frame())
2: geeglm(formula, family, data, id, waves, corstr) at #2
'id = data $ ID'를 전달해야한다고 생각합니다. – Roland
의견을 보내 주셔서 감사합니다. 나는 이미 그것을 시도했지만 작동하지 않았다 .. – MaartjeG
글쎄,'traceback()'은 무엇을 말하는가? 오류가 발생한 정확한 위치를 찾아야합니다. – Roland