实现用于重新采样数据集的引导方法。假设原木价格遵循随机游走,但使用ARMA模型

实现用于重新采样数据集的引导方法。假设原木价格遵循随机游走,但使用ARMA模型,r,statistics-bootstrap,R,Statistics Bootstrap,这是我的密码 我的教授要求:假设原木价格遵循ARMA模型的随机游动,实现数据集重采样的自举方法 随机行走只是让我想起了ARIMA0,1,0,但我不知道如何将bootstrap与ARMA模型结合起来。简单地说,bootstrap只是递归地生成样本,并进行替换,以便拟合模型。然后对它们的性能进行聚合 下面是一个快速试验,以获得自举系数,假设ARIMA1,0,1。由于没有明确规定,我不确定实际需求 #install.packages("quantmod") #install.packages("dat

这是我的密码

我的教授要求:假设原木价格遵循ARMA模型的随机游动,实现数据集重采样的自举方法


随机行走只是让我想起了ARIMA0,1,0,但我不知道如何将bootstrap与ARMA模型结合起来。

简单地说,bootstrap只是递归地生成样本,并进行替换,以便拟合模型。然后对它们的性能进行聚合

下面是一个快速试验,以获得自举系数,假设ARIMA1,0,1。由于没有明确规定,我不确定实际需求

#install.packages("quantmod")
#install.packages("dataframes2xls")
#install.packages("bootstrap")
#install.packages("fArma")
library(bootstrap)
library(quantmod)
library(dataframes2xls)
library(fArma)

require(TTR)

getSymbols("SNE",src="yahoo",from = as.Date("2011-04-20"), to =as.Date("2015-04-22")) 

SNElog <- diff( log( Cl( SNE ) ) )
SNElog <- SNElog[-1,]

SNElogT <- as.ts( tail(SNElog, 1000))

SNElogTimeArma <- armaFit( formula=~arima(0,1,0), data=SNElogT )

SNE.Adjusted.boot.sum <- numeric(1000)
for(i in 1:1000)
{
  this.samp <- SNElog [ sample(1000,1000,replace=T, prob=??? )]
  SNE.Adjusted.boot.sum[i] <- sum(this.samp)
}
请注意,我只制作了2个随机样本replengthprice,2,您的结果将与不同的设置不同,甚至与相同的设置不同-回想一下,引导生成随机样本

bootstrap的关键思想在于armaFitformula、sampledata、trial、replace=TRUE,其中模型适合bootstrap样本,而不是实际数据

我希望这是有帮助的

library(fArma)
set.seed(1237)
price <- diff(sample(log(100:120), 101, replace = TRUE))

# bootstrap
boot <- function(trial, formula, data) {
  mod <- armaFit(formula, sample(data, trial, replace = TRUE))
  c(mod@fit$coef)
}

coef <- do.call(rbind, lapply(rep(length(price), 2), boot, formula = ~ arima(1,0,1), data = price))
apply(coef, 2, mean)

        ar1         ma1   intercept 
-0.66724275  0.67331811 -0.00551791