Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.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
我对皮尔逊的置信区间是否太好了';s R在非常不平衡的数据集上使用引导?_R_Confidence Interval_Correlation - Fatal编程技术网

我对皮尔逊的置信区间是否太好了';s R在非常不平衡的数据集上使用引导?

我对皮尔逊的置信区间是否太好了';s R在非常不平衡的数据集上使用引导?,r,confidence-interval,correlation,R,Confidence Interval,Correlation,我在任何地方都找不到描述的这种类型的引导问题,其中的数据是如此不平衡的:50个y值与2500个值产生50个表示成为x的值。另一件事:产生平均值的50个地层是内部自相关时间序列。自举平均直方图看起来大部分是正态分布 问题1:当我从所有2500个值而不是直接从50个x,y对引导时,我无法直觉到置信区间的改善是否太好而不真实:0.39的范围改善到了0.039。即10倍窄。当只有50个y值可用时,这是没有意义的——或者是吗?我开始怀疑在这种情况下的引导,或者我自己下面提供的R代码,或者我的理论理解。我应

我在任何地方都找不到描述的这种类型的引导问题,其中的数据是如此不平衡的:50个y值与2500个值产生50个表示成为x的值。另一件事:产生平均值的50个地层是内部自相关时间序列。自举平均直方图看起来大部分是正态分布

问题1:当我从所有2500个值而不是直接从50个x,y对引导时,我无法直觉到置信区间的改善是否太好而不真实:0.39的范围改善到了0.039。即10倍窄。当只有50个y值可用时,这是没有意义的——或者是吗?我开始怀疑在这种情况下的引导,或者我自己下面提供的R代码,或者我的理论理解。我应该相信结果还是有理论上的理由不相信?(我查阅了几篇论文,我知道bootstrap并不总是那么精确,而且对于相关CI存在更好的变体和方法,例如:)

直接引导平均值:R=0.608(0.3878,0.7790)

从基础值引导:R=0.608(0.5916,0.6290)

问题2:为什么根据这个实验,包含所有数据会更好?我可以用两种方式来解释:

(错误的方式)假设我从50个固定y值和50个平均X值引导。然后,我有固定的x值,没有变化,应该得到比我引入不确定性(每个x平均值的分布)更窄的CI,使用所有2500个值

(实验证明是正确的)另一方面:假设我在两步引导中使用所有2500个值,首先计算平均值,然后从中计算x,y相关性。然后,我使用了比50个x-平均值更多的信息,并且应该得到一个更窄的Pearson相关性置信区间

由于使用了更多的信息,我希望第二种方法能够为Pearson's R产生更窄的置信区间,但我不知道如何或为什么,我很好奇

这绝对不是商业行为。我帮助一位即将发表一篇论文的朋友,我相信这篇论文对整体健康有益。我自己也从中受益,主要是通过学习R(是的,我是一个R和Tidyverse新手),以及为一个好的事业做一些真正的科学的刺激。我的职业是系统开发人员

以下是使用所有数据的R代码,删除了不必要的内容:

testst <-function(tb,i) {
  # Generate correlation between yStrat and xStrat.
  # arg: tibble with about 2500 rows with about 50 strata 
  
  tbi <- tb[i, ] # Bootstrap sample
  
  yTbi <- tbi %>% group_by(StratumID) %>% 
    summarise(yStrat=last(YPrevalence)) # All Y identical per stratum
                                        # Could have used unique as well 
  # Apply mean to each stratum of bootstrapped draws from stratum
  xTbi <- tbi %>% group_by(StratumID) %>%
      summarise(xStrat = mean(XConsumption, na.rm = TRUE)) 

  # Apply cor to fixed y values against each stratum mean
  pears <- cor(x = xTbi$xStrat,
                 y = yTbi$yStrat,
                 method = "pearson")

  return(c(pears))
}

# Executing on tibble tbd with ~2500 rows, ~50 strata. One fix Y-value per stratum
tbd$StratumID <- as_factor(tbd$StratumID)
bt <- boot(tbd,testst,R=10000,strata=tbd$StratumID)
bc<-boot.ci(bt,type="bca",index=1)
testst%
总结(xStrat=平均值(XConsumption,na.rm=TRUE))
#将cor应用于各层平均值的固定y值

梨谢谢你@ben bolker!你的回答让我想到了这篇论文:。它证实了,正如我所怀疑的那样,由于自相关性,我拥有的有效样本量实际上大大减少了。我认为我可以通过在每个时间序列上使用块引导来调整该方法。 当我有时间的时候,我也会查找引导残差


(顺便说一句:我的问题被转移到这个论坛上,我似乎不再拥有它了——“你没有问任何问题”——因此,由于缺乏“声誉”,我不能只添加一条评论”)

你可能想引导剩余数据,而不是原始数据;这将有助于保留数据的结构,但需要付出一些额外的假设。此外,如果您想处理时间自相关,您可能需要一个块引导。