了解在 R 中执行的引导程序的输出(tsboot,MannKendall)

机器算法验证 r 引导程序
2022-03-22 03:51:52

我对 R 中 tsboot 调用的解释有疑问。我检查了 Kendall 和引导包的文档,但并不比以前更聪明。

当我使用例如 Kendall 包中的示例运行引导程序时,其中测试统计数据是 Kendall 的 tau:

library(Kendall)
# Annual precipitation entire Great Lakes
# The Mann-Kendall trend test confirms the upward trend.
data(PrecipGL)
MannKendall(PrecipGL)

这证实了上升趋势:

tau = 0.265, 2-sided pvalue =0.00029206

然后该示例继续使用块引导程序:

#
#Use block bootstrap 
library(boot)
data(PrecipGL)
MKtau<-function(z) MannKendall(z)$tau
tsboot(PrecipGL, MKtau, R=500, l=5, sim="fixed")

我收到以下结果:

BLOCK BOOTSTRAP FOR TIME SERIES
Fixed Block Length of 5 
Call:
tsboot(tseries = PrecipGL, statistic = MKtau, R = 500, l = 5, 
sim = "fixed")


Bootstrap Statistics :
 original     bias    std. error
t1* 0.2645801 -0.2670514  0.09270585

如果我理解正确,“t1* original”是原始 MKtau,“偏差”是 R=500 自举时间序列中 MKtau 的平均值,“std.error”是 MKtaus 的标准偏差500 个样本。

我很难理解这意味着什么——这基本上告诉我所有 500 MKTaus 都低于原始值,并且原始 t1* 在自举 MKtaus 的 3 sd 范围内。因此,它有很大不同吗?

或者我会说数据集的 MKtau 是 0.26 加/减标准误差?

对于这个冗长的问题,我很抱歉,但我是一名统计新手,并且正在通过自学学习,缺乏有人来来回处理这个可能非常简单的问题。

1个回答

遇到同样的问题并使用受控数据集进行了探索——模型y = ax + bN (0, sig) 错误,我发现 Kendall 包可能不像宣传的那样工作。在我的例子中,x 是并且1:100y = x,sig = 100(误差项的方差)。

回归看起来不错,Kendall 的 tau 也是如此。除了由线性模型引起的自相关之外,这里没有自相关。使用块长度为 1、3、5 和 10 的块长度运行 Kendall 测试会产生非常大的偏差值,并且boot.ci报告没有趋势。

随后,我用这些块长度对数据的引导程序进行了手工编码,并且使用我的控制系列,我得到了关于引导程序样本的平均值及其分布的合理结果。因此,Kendall 包在块引导方面可能出现了问题。