함수에 대한 입력 인 많은 데이터 세트가 있습니다. 데이터는 데이터 테이블에 저장되며 필자의 함수 출력에 대한 신뢰 구간을 계산합니다. 그러나 입력 데이터가 모두 같아서 오류가 발생하는 경우가 있습니다. "x 값은 모두 100입니다. \ n 신뢰 구간을 계산할 수 없습니다."어떻게이 오류를 피할 수 있습니까 (예 : 신뢰 구간 설정 모든 값이 같은 경우 0 또는 NA와 같은 임의의 값으로)?샘플링 된 세트의 모든 값이 같을 때 R boot.ci 함수에서 오류를 피하십시오.
library(boot)
library(data.table)
problem=1
data<-data.table(column1=c(1:100),column2=c(rep(100,99),problem))
resample.number=1000
confidence=0.95
sample.mean<-function(indata,x){mean(indata[x])}
boot_obj<-lapply(data,boot,statistic = sample.mean,R = resample.number)
boot.mean.f<-function(x,column){
x[column][1]
}
means<-data.table(sapply(boot_obj,boot.mean.f))
bootci_obj<-lapply(boot_obj,boot.ci, conf = confidence, type = "perc")
bootci.f<-function(x,column){
x<-x[column][4]
x<-unlist(strsplit(as.character(x[1]),","))
x<-sub("[:punct:].*","",x)
x<-sub("lis.*","",x)
x<-sub(").?","",x)
x<-na.omit(as.numeric(x))
}
cis<-data.table(t(sapply(bootci_obj,bootci.f)))
setnames(means,"V1","stat")
cis[,V1:=NULL]
cis[,V2:=NULL]
setnames(cis,c("V3","V4"),c("lci","uci"))
return(cbind(means,cis))
반환 : 예를 들어
stat lci uci
1: 50.5 44.96025 56.26797
2: 99.01 97.03000 100.00000
는
problem=1
리턴 변경 : 다른 오류로 연결 "n은 신뢰 구간을 계산할 수 없습니다 \ t의 모든 값은 100과 동일하다" .
내가 할 결과를 싶습니다
stat lci uci
1: 50.5 44.96025 56.26797
2: 100.0 0.0000 0.00000
도움말/생각이 많이 감사합니다!
내 문제를 해결하기 위해보다 효율적인 코드도 제공했습니다. * LOVE * 스택 사용. 나는 또한 당신이 boot.ci 함수로부터 데이터를 추출한 더 읽기 쉬운 방법을 좋아한다. 내가 할 수 있다면 +10. – Docuemada