标签: statistics-bootstrap

加速时间序列模拟(用于引导)

我需要在具有非标准依赖性的时间序列上运行引导程序.所以为了做到这一点,我需要创建一个通过时间调整来模拟时间序列的函数.

testing<-function(){
  sampleData<-as.zoo(data.frame(index=1:1000,vol=(rnorm(1000))^2,x=NA))
  sampleData[,"x"]<-sampleData[,"vol"]+rnorm(1000) #treat this is completely exognenous and unknown in connection to vol
  sampleData<-cbind(sampleData,mean=rollmean(sampleData[,"vol"],k=3,align="right"))
  sampleData<-cbind(sampleData,vol1=lag(sampleData[,"vol"],k=-1),x1=lag(sampleData[,"x"],k=-1),mean1=lag(sampleData[,"mean"],k=-1))

  #get estimate
  mod<-lm(vol~vol1+x1+mean1,data=sampleData)

  res<-mod$residuals

  for(i in 5:1000){
    #recursively estimate
    sampleData[i,"vol"]<-as.numeric(predict(mod,newdata=data.frame(sampleData[i-1,])))+res[i-3]

    #now must update other paramaters
      #first our rolled average
      sampleData[i,"mean"]<-mean(sampleData[(i-3):i,"vol"])

      #reupdate our lagged variables
      sampleData[i,"vol1"]<-sampleData[i-1,"vol"]
      sampleData[i,"mean1"]<-sampleData[i-1,"mean"]

  }

  lm(vol~vol1+x1+mean1,data=sampleData)
}
Run Code Online (Sandbox Code Playgroud)

当我运行此代码并测量运行时间时

system.time(testing())
user  system elapsed 
2.711   0.201   2.915 
Run Code Online (Sandbox Code Playgroud)

这对我来说是一个小问题,因为将集成此代码来构建引导程序.这意味着每个步骤的任何时间乘以约100.而我正在更新这几千次.这意味着单次运行需要数小时(到几天)才能运行.

反正加速这段代码了吗?

亲切的问候,

马修

r time-series statistics-bootstrap

3
推荐指数
1
解决办法
446
查看次数

通过boot.ci函数获取多个统计信息的Bootstrap Confidence Intervals

我希望通过boot.ci函数获得多个统计信息的bootstrap置信区间.这是我的MWE.

我有两个统计信息,out并希望找到这两个统计信息的bootstrap置信区间.但是,boot.ci函数仅为第一个统计量(t1*)提供自举置信区间,但不为第二个统计量(t2*)提供自举置信区间.

set.seed(12345)
df <- rnorm(n=10, mean = 0, sd = 1)


Boot.fun <- 
  function(data, idx) {
    data1 <- sample(data[idx], replace=TRUE)
    m1 <- mean(data1)
    sd1 <- sd(data1)
    out <- cbind(m1, sd1)
    return(out)
  }

Boot.fun(data = df)

library(boot)
boot.out <- boot(df, Boot.fun, R = 20)
boot.out

RDINARY NONPARAMETRIC BOOTSTRAP


Call:
  boot(data = df, statistic = Boot.fun, R = 20)


Bootstrap Statistics :
  original     bias    std. error
t1* -0.4815861  0.3190424   0.2309631
t2*  0.9189246 -0.1998455   0.2499412

boot.ci(boot.out=boot.out, …
Run Code Online (Sandbox Code Playgroud)

r statistics-bootstrap

3
推荐指数
1
解决办法
1884
查看次数

如何从 R 中的引导导出结果?

我有一个包含 540 个观测值的时间序列,我使用以下代码对其进行了 999 次重新采样:

boot.mean = function(x,i){boot.mean = mean(x[i])}
z1 = boot(x1, boot.mean, R=999)
z1
ORDINARY NONPARAMETRIC BOOTSTRAP

Call:
boot(data = x1, statistic = boot.mean, R = 999)

Bootstrap Statistics :
        original        bias    std. error
t1* -0.009381397 -5.903801e-05 0.002524366
Run Code Online (Sandbox Code Playgroud)

尝试导出结果给了我以下错误:

write.csv(z1, "z1.csv")

Error in as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors = stringsAsFactors) : 
  cannot coerce class ""boot"" to a data.frame
Run Code Online (Sandbox Code Playgroud)

如何将结果导出到 .csv 文件?

我期望获得一个包含 540 个观察 999 次的文件,目标是应用包中的approx_entropy函数pracma,获得 999 个近似熵值并绘制 Latex 中的分布。

r export-to-csv statistics-bootstrap

3
推荐指数
1
解决办法
1133
查看次数

R 中的 bootstrap 加权平均值

我知道如何引导向量的平均值:

library(boot)
samplemean <- function(x, d) {
  return(mean(x[d]))
}
results_qsec <- boot(data=mtcars$qsec, statistic = samplemean, R=1000)
Run Code Online (Sandbox Code Playgroud)

mtcars$qsec但是,考虑到例如值是 in以及这些值的权重是 in ,我如何引导加权平均值mtcars$wt

r statistics-bootstrap

3
推荐指数
1
解决办法
2816
查看次数

R:从引导结果向量计算 BCa

我正在寻找一种方法,使用引导结果向量(这是人口增长率的引导估计 - lambda)来计算 R 中的偏差校正加速置信区间。然而,我发现的包要么是使用特定的对象类型(如“boot”包中),要么不计算 BCa 类型置信区间。我使用 for 循环引导结果然后将结果存储在向量中的原因是,对于每个引导重新采样,我首先得到一个 80 x 33 的结果矩阵,它定义了每年采样中每个总体的参数,而这些参数又为每个群体定义 lambda。据我所知,这在引导包中会很麻烦,并且很容易作为 for 循环进行编程。实际的功能集相当复杂,无法包含在这里。

我确实尝试使用这个问题作为伪造“启动”对象的指南,但它不起作用:How can I use pre bootstrapped data to acquire a BCaconfidence Interval?

假设我有观察到的 lambda 估计值

lambda = 1.18
Run Code Online (Sandbox Code Playgroud)

我们模拟引导估计的向量

library(fGarch)
lambdaBS = rsnorm(999,mean=lambda-0.04,sd=0.11,xi=2.5)
plot(density(lambdaBS))
Run Code Online (Sandbox Code Playgroud)

这是右偏和有偏见的。

我希望,使用这些信息,当前存在一个函数可以计算 BCa 置信区间,否则很容易编写一个函数来执行此操作。到目前为止,我还没有发现这种情况。

r confidence-interval statistics-bootstrap

3
推荐指数
1
解决办法
2865
查看次数

R Survey 包如何计算引导置信区间?

我想知道如何使用复制权重和调查包的限制实现来构建引导置信区间/标准误差。

\n

看看survey包的confint 实现,它似乎只是简单地采用了标准错误theta复制后生成的列表的标准误差,并将其乘以与给定 alpha 范围相对应的统计数据。

\n

但这并不真正符合我所知道的任何引导程序实现。通常,您会使用 theta 分布的百分位数来获取样本均值分布的置信区间。T 和 BCa 间隔是另一回事。

\n

这是我的 R 代码。我没有使用提供的权重,而是让repweights权重以相同的概率生成为“具有替换的样本”权重。

\n
data(api)\nd <- apiclus1 %>% select(fpc, dnum,api99)\ndclus1<-svydesign(id=~dnum, data=d, fpc=~fpc)\nrclus1<-as.svrepdesign(dclus1,type="bootstrap", replicates=100)\n
Run Code Online (Sandbox Code Playgroud)\n

为了测试置信区间,我们可以使用:

\n
test_mean <- svymean(~api99, rclus1)\nconfint(test_mean, df=degf(rclus1))\nconfint(test_mean, df=degf(rclus1)) - mean(d$api99)\n
Run Code Online (Sandbox Code Playgroud)\n

哪些结果:

\n
         2.5 %   97.5 %\napi99 554.2971 659.6592\n          2.5 %   97.5 %\napi99 -52.68107 52.68107\n
Run Code Online (Sandbox Code Playgroud)\n

很明显,该区间是对称的,这违背了使用引导程序的一些目的。

\n

那么让我们试试这个:

\n
test_bs <- withReplicates(rclus1, function(w, data) weighted.mean(data$api99, w), return.replicates=T)\n
Run Code Online (Sandbox Code Playgroud)\n

这将引导重复,其中权重是重复权重(我假设是替换权重)。以下是在复制中使用 BCa 间隔的间隔:

\n
bca(test$replicates) …
Run Code Online (Sandbox Code Playgroud)

r survey sampling confidence-interval statistics-bootstrap

3
推荐指数
1
解决办法
320
查看次数

Matlab Bootstrap 未完成重采样

我想在 Matlab 中执行引导程序。我有 100 个原始数据点,我希望引导程序的每次迭代只选择 57 个随机替换点。我该如何实现?

我似乎无法在 Matlab 函数中找到此功能bootstrp

问候,

matlab statistics-bootstrap

2
推荐指数
1
解决办法
480
查看次数

逻辑回归分类器的自举聚合(装袋)

因此,我正在抽取N个引导样本,并在这些样本上训练N个逻辑回归分类器。每个分类器都给我一些进入二元类的概率,然后我对这N个概率求平均以得出最终预测。

我的问题是我是否将N组回归系数取平均值并在logistic回归分类器中使用该组平均系数并将输出概率作为最终预测,这与取所得N概率的平均值相同吗?如上一段所述?

regression machine-learning resampling logistic-regression statistics-bootstrap

2
推荐指数
1
解决办法
1257
查看次数

R 引导功能 - 绘图中 t 和 t* 的解释 - 标准图形的修改

我开始使用该包,但bootR理解参数的含义tt*绘图时遇到了一些麻烦。

一个基本的代码如下:

library(boot)
mydata <- c(0.461, 3.243, 8.822, 3.442) 
meanFunc <- function(mydata, i){mean(mydata[i])}
bootMean <- boot(mydata, meanFunc, 250)
plot(bootMean)
Run Code Online (Sandbox Code Playgroud)

使用命令时,plot.boot我获得了这个图形:

在此处输入图片说明

它代表什么t*。为什么标题说 t 的直方图但在 x 轴上我们有t*

作为附加问题:如何修改此图形的属性,例如颜色、平铺或轴?

谢谢

statistics graphics plot r statistics-bootstrap

2
推荐指数
1
解决办法
2808
查看次数

R 中的自举相关

我正在尝试在 R 中进行引导相关性。我有两个变量 Var1 和 Var2,我想获得 Pearson 相关性的引导 p.value。

my variables look like this:
      x            y
1   .6080522    1.707642
2   1.4307273   1.772616
3   0.8226198   1.768537
4   1.7714221   1.265276
5   1.5986213   1.855719
6   1.0000000   1.606106
7   1.1678940   1.671457
8   0.6630012   1.608428
9   1.0842423   1.670619
10  0.5592512   1.107783
11  1.6442616   1.492832
12  0.8326965   1.643923
13  1.1696954   1.763181
14  0.7484543   1.762921
15  1.0842423   1.591566
16  0.9014748   1.718669
17  0.7604917   1.782863
18  0.8566499   1.796216
19  1.4307273   1.913675
20  1.7579695   1.903155
Run Code Online (Sandbox Code Playgroud)

到目前为止我有这个:

data = as.data.frame(data) …
Run Code Online (Sandbox Code Playgroud)

r correlation statistics-bootstrap

2
推荐指数
1
解决办法
8141
查看次数