带“的自举置信区间”;Inf";在最终估算中-启动/dplyr包
我试图从拟合模型(曲线的最大斜率)中引导一个值。虽然我认为代码可能更有效,但我认为它通常是有效的(关于如何提高效率的建议也会受到欢迎)。我遇到的问题是,当我得到最终样本值时,其中一个单元格中有带“的自举置信区间”;Inf";在最终估算中-启动/dplyr包,r,dplyr,infinite,confidence-interval,statistics-bootstrap,R,Dplyr,Infinite,Confidence Interval,Statistics Bootstrap,我试图从拟合模型(曲线的最大斜率)中引导一个值。虽然我认为代码可能更有效,但我认为它通常是有效的(关于如何提高效率的建议也会受到欢迎)。我遇到的问题是,当我得到最终样本值时,其中一个单元格中有Inf,这阻止了我获得置信区间。我不确定这是一个引导问题还是简单的编码方式。示例代码: library(boot) library(dplyr) df <- data.frame (id=rep(1:10,each=10), time1=rep(1:1
Inf
,这阻止了我获得置信区间。我不确定这是一个引导问题还是简单的编码方式。示例代码:
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")
通过进一步探索,我们可以看到这一点:
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
也许我遗漏了什么,但我认为
返回(mean(data1$derivative,na.rm=TRUE))
可以解决na
的任何问题。有人有什么建议吗?我猜这是个小问题。这是我第一次运行引导程序,如果我做了一些幼稚的事情,请道歉。如果有人知道如何使整个代码更高效,那将是非常好的,因为我运行的是一个大型随机效果模型,而不是简单的模型。谢谢,因为启动
使用替换重新采样,您可能会在给定的样本中获得给定id的重复时间1值。发生这种情况时,导数计算值diff(fit)/diff(time)
计算为0/0,该值应返回NaN。对于maxx
函数的其余部分,NaN值本身不应该是有问题的(虽然我不完全清楚您试图做什么),但我怀疑是由于浮点不准确diff(fit)
有时返回非零值,这些值被零除后生成Inf或-Inf。which.max
和mean
函数不会忽略Inf,因此maxx
函数有时会返回Inf
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