適合モデルから値をブートストラップしようとしています(カーブの最大勾配)。私が考えているコードはもっと効率的だと思うが、一般的にはうまくいくと思うが(より効率的にする方法も歓迎されるだろう)私が持っている問題は、私が最終的なサンプル値を持っているときに最後にあります。Inf
がセルの1つにあり、信頼区間が得られません。私はこれがブートストラップの問題であるのか、それとも私がそれをコード化したのか単純なのかどうかはわかりません。サンプルコード:ブートストラップ信頼区間と最終推定値の "Inf" - boot/dplyrパッケージ
library(boot)
library(dplyr)
df <- data.frame (id=rep(1:10,each=10),
time1=rep(1:10,10),
ff=runif(100, 100, 150),
gg=runif(100, 120, 170))
set.seed(10)
#function
maxx<-function(formula, data,varr,indices) {
data <- data[indices,] # allows boot to select sample
fit <- lm(formula, data=data)
data$fit<-fit$fitted.values
data<-filter(data,time1>5)
data1<-data %>% group_by_(varr) %>% mutate(derivative = c(NA,diff(fit)/diff(time1))) %>%
group_by(id) %>%
slice(which.max(derivative)) %>%
ungroup() %>%
as.data.frame()
return(mean(data1$derivative,na.rm = TRUE))
}
res <- boot(data=df, statistic=maxx,
R=10, formula=ff~gg,varr="id")
が、これは動作しますが、細胞の一つに起因するInf
にSEを取得することはできません
R>res
ORDINARY NONPARAMETRIC BOOTSTRAP
Call:
boot(data = df, statistic = maxx, R = 10, formula = ff ~ gg,
varr = "id")
Bootstrap Statistics :
original bias std. error
t1* 0.1726803 Inf NaN
res
res$t
我々は、さらにそれを探索することで、これを見ることができます:たぶん
R>res$t
[,1]
[1,] 0.50399242
[2,] 0.52171509
[3,] 0.04568459
[4,] 1.41317481
[5,] 0.39741115
[6,] 0.10703703
[7,] 0.52206909
[8,] 0.91624253
[9,] Inf
[10,] 0.05076168
R>boot.ci(res, type="normal")
Error in ci.out[[4L]] : subscript out of bounds
をI何かを逃したが、return(mean(data1$derivative,na.rm = TRUE))
はNA
の問題を解決すると思った。誰にも何か提案はありますか?私はこれが小さな修正だと推測しています。ブートストラップを実行しているのはこれが初めてのことです。提示された単純なモデルではなく、大きなランダム効果モデルを実行しているときに、コード全体をより効率的にする方法が分かっていれば、おかげ