Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带“的自举置信区间”;Inf";在最终估算中-启动/dplyr包_R_Dplyr_Infinite_Confidence Interval_Statistics Bootstrap - Fatal编程技术网

带“的自举置信区间”;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