2

関数への入力である多くのデータセットがあります。データはデータ テーブルに保存され、関数出力の信頼区間を計算しています。ただし、すべての入力データが同じで、次のようなエラーが発生する場合があります。すべての値が等しい場合の 0 または NA のような任意の値への間隔)? 例えば:

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

戻り値:「t のすべての値は 100 に等しい \n 信頼区間を計算できません」 これは他のエラーにつながります。

結果を次のようにしたいと思います。

stat      lci       uci
1:  50.5 44.96025  56.26797
2: 100.0 0.0000 0.00000
4

1 に答える 1