Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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
R 参数超出范围:ets、optim_R_Parameters_Holtwinters_Geor - Fatal编程技术网

R 参数超出范围:ets、optim

R 参数超出范围:ets、optim,r,parameters,holtwinters,geor,R,Parameters,Holtwinters,Geor,我已经在R中编写了一个代码,它添加了权重,并运行加法holt winters进行预测。但是,对于我的一些数据,它给出了错误: etsmodel中的错误(y、错误类型[i]、趋势类型[j]、季节类型[k]、阻尼类型[l],: 参数超出范围 有人能告诉我为什么它会这样做,以及我怎样才能阻止它在未来发生吗 这是我的密码: suppressMessages(library(lmtest)) suppressMessages(library(car)) suppressMessages(library(t

我已经在R中编写了一个代码,它添加了权重,并运行加法holt winters进行预测。但是,对于我的一些数据,它给出了错误:

etsmodel中的错误(y、错误类型[i]、趋势类型[j]、季节类型[k]、阻尼类型[l],: 参数超出范围

有人能告诉我为什么它会这样做,以及我怎样才能阻止它在未来发生吗

这是我的密码:

suppressMessages(library(lmtest))
suppressMessages(library(car))
suppressMessages(library(tseries))
suppressMessages(library(forecast))
suppressMessages(library(TTR))
suppressMessages(library(geoR))
suppressMessages(library(MASS))

#-------------------------------------------------------------------------------
Input.data <- matrix(c("08Q1","08Q2","08Q3","08Q4","09Q1","09Q2","09Q3","09Q4","10Q1","10Q2","10Q3","10Q4","11Q1","11Q2","11Q3","11Q4","12Q1","12Q2","12Q3","12Q4","13Q1","13Q2","13Q3","13Q4","14Q1","14Q2","14Q3",73831.11865,84750.47149,85034.80061,99137.19637,62626.50672,72144.77761,74726.1774,122203.5416,84872.02354,96054.77537,93849.93456,136380.3862,94252.32737,101044.518,112453.256,138807.2089,102091.1436,102568.8303,98839.36528,129249.4421,91207.28917,93060.79801,87776.30512,124342.2055,87128.55797,90261.46195,86371.5614),ncol=2,byrow=FALSE)


Frequency <- 1/4

Forecast.horizon <- 4

Start.date <- c(8, 1)

Data.col <- as.numeric(Input.data[, length(Input.data[1, ])])

Data.col.ts <- ts(Data.col, deltat=Frequency, start = Start.date)

trans<- abs(round(BoxCox.lambda(Data.col, method = "loglik"),5))
categ<-as.character( c(cut(trans,c(0,0.25,0.75,Inf),right=FALSE)) )
Data.new<-switch(categ,
                 "1"=log(Data.col.ts),
                 "2"=sqrt(Data.col.ts),
                 "3"=Data.col.ts
)

mape <- function(percent.error)              
  mean(abs(percent.error))
#----- Weighting ---------------------------------------------------------------
fweight <- function(x){
  PatX <- 0.5+x 
  return(PatX)
}

integvals <- rep(0, length.out = length(Data.new))
for (i in 1:length(Data.new)){
  integi <- integrate(fweight, lower = (i-1)/length(Data.new), upper= i/length(Data.new))
  integvals[i] <- 2*integi$value
}

HWAW <- ets(Data.new, model = "AAA", damped = FALSE, opt.crit = "mse", ic="aic", lower = c(0.03, 0.03, 0.03, 0.04), 
            upper = c(0.997, 0.997, 0.997, 0.997), bounds = "usual", restrict = FALSE)
parASW <- round(HWAW$par[1:3], digits=3)
HWAOPT <- function(parASW)
{
  HWAddW <- ets(Data.new, model = "AAA", alpha = parASW[1], beta = parASW[2], gamma = parASW[3], damped = FALSE, opt.crit = "mae", ic="aic",
                lower = c(0.001, 0.001, 0.001, 0.0001), upper = c(0.999, 0.999, 0.999, 0.999), bounds = "admissible", restrict = FALSE)
  error <- c(resid(HWAddW))
  error <- t(error) %*% integvals
  percent.error <- 100*(error/c(Data.new))
  MAPE <- mape(percent.error)
  return(MAPE)
}
OPTHWA <- optim(parASW, HWAOPT, method="L-BFGS-B", lower=c(rep(0.01, 3)), upper=c(rep(0.99, 3)), control = list(fnscale= 1, maxit = 3000))
# Alternatively, set  method="Nelder-Mead" or method="L-BFGS-B" 
parS4 <- OPTHWA$par
HWAW1 <- ets(Data.new, model = "AAA", alpha = parS4[1], beta = parS4[2], gamma = parS4[3], damped = FALSE, opt.crit = "mae", ic="aic",
             lower = c(0, 0, 0, 0), upper = c(0.999, 0.999, 0.999, 0.999), bounds = "admissible", restrict = FALSE)
suppressMessages(库(lmtest))
抑制信息(库(车))
抑制消息(库(tseries))
抑制消息(库(预测))
抑制消息(库(TTR))
抑制消息(库(geoR))
抑制消息(库(MASS))
#-------------------------------------------------------------------------------

Input.data最有可能的情况是,由HWAW估算的参数(在第4部分中四舍五入到小数点后3位)是不允许的。β必须小于α,γ必须小于1减去α:

检查要传入的参数:

HWAW1 <- ets(..., alpha = parS4[1], beta = parS4[2], gamma = parS4[3], ...)

HWAW1我正在编写一个
hw
模型,其中包含
alpha
beta
gamma
参数,参数
beta
小于
alpha
gamma
小于
beta
。我仍然得到错误。
这是我的模型和错误消息

tsx <- ts(data = x, start = c(2016, 10), frequency = 12)
hw(y = tsx, h = 16, alpha = 0.6, beta = 0.3, gamma = 0.2)

tsx学习创建一个最小的可复制示例。我已经去掉了不需要的部分,但其他一切都很重要。看起来你没有做过任何基本的调试。如果你不知道怎么做,搜索web并堆栈溢出,或者问一个关于调试实践的问题。找出错误发生的确切位置rs并检查抛出错误的函数调用的输入是否与您期望的一样。我已经调试过,它说错误来自于它检查参数和上下限,但当我删除边界时,它仍然给出了错误