标签: forecasting

在 R 中使用 ARIMAX 进行预测

我曾经在 SAS 中每周预测计算机的销售量,基于大致两个参数 - 定价和营销支出(车辆级别 - 因此有几个变量)。这在 SAS 中很容易,因为我可以使用PROC ARIMA.

你能帮我过渡到 R 吗?我已经导入了数据集,执行auto.arima并分析了一些变量的 p 值。但是,我不知道如何进行未来 26 周的预测。任何帮助将不胜感激!

modeling r time-series forecasting

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

用于样本外预测的 ARMA.predict 不适用于浮点数?

在我为样本内分析开发了我的小 ARMAX 预测模型后,我想预测一些样本外的数据。

我用于预测计算的时间序列从 2013-01-01 开始,到 2013-12-31 结束!

这是我正在使用的数据:

hr = np.loadtxt("Data_2013_17.txt")
index = date_range(start='2013-1-1', end='2013-12-31', freq='D')
df = pd.DataFrame(hr, index=index)
holidays = ['2013-1-1', '2013-3-29', '2013-4-1', '2013-5-1', '2013-5-9', '2013-5-20', '2013-10-3', '2013-12-25', '2013-12-26']
# holidays for all Bundesländer 
idx = df.asfreq('B').index - DatetimeIndex(holidays)
indexed_df = df.reindex(idx)
# indexed_df = df.asfreq('B') (includes holidays)
# 'D'=day
#'B'=business day
# W@MON=shows only mondays

# external variable  
hr_ = np.loadtxt("Data_2_2013.txt")
index = date_range(start='2013-1-1', end='2013-12-31', freq='D')
df = pd.DataFrame(hr_, index=index)
idx2 = df.asfreq('B').index - DatetimeIndex(holidays)
external_df1 …
Run Code Online (Sandbox Code Playgroud)

python time-series forecasting statsmodels

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

时间序列预测的延迟问题

我在使用神经网络预测时间序列时遇到问题。一些预测数据与预期数据相符,如下所示:(黑色是实时序列,蓝色是我的神经网络的输出)

澳大利亚能源需求 时间序列:澳大利亚能源需求。

但同样的代码,对于其他时间序列,预测数据与预期数据不符,并且有一个单位的延迟,如下:

在此输入图像描述 时间序列:沃尔玛股票价格。 在此输入图像描述 时间序列:美元 Libra 兑换。

我找到了一些关于神经网络的一些变体的文章,并在结果部分显示了像我的结果一样具有延迟的图,如下所示:

在此输入图像描述 时间序列:美元 Libra 兑换。(文章链接:http://www.sciencedirect.com/science/article/pii/S1877050915015793

有人知道这是一种常见行为还是我的代码有问题?大约三个月前,我遇到了这个问题,因为我试图找出代码中的一些错误,但没问题。

谢谢,我很感激任何提示。

matlab machine-learning time-series neural-network forecasting

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

预测包中 auto.arima() 中的季节性

my_data <- c(232,294,320,314,336,189,331,185,161,140,49,7,0,3,4,9,38,169,275,316,366,422,328,283,213,238,220,193,250,308,224,190,188,99,41,17,19,9,1,3,10,108,149,189,168,170,155,101,119,89,142,169,192,242,152,141,105,76,39,20,17,13,5,3,8,54,102,102,155,159,164,200,183,144,204,190,219,158,128,142,130,86,58,13,12,0,6,4,20,302,297,312,345,293,233,275,233,199,279,250,208,161,200,181,133,140,17,14,2,0,2,4,36,183,379,371,356,425,320,282,172,214,226,250,196,239,183,194,135,75,28,11,2,3,5,4,29,212,316,343,375,431,225,248,209,258,262,230,218,162,193,178,126,131,37,7,5,3,0,1,20,149,258,408,316,307,352,247,285,236,254,321,233,175,264,114,104,82,37,49,4,16,2,14,22,169,259,355,379,346,261,256,220,238,227,201,242,185,121,160,114,91,33,9,4,2,0,2,22,62,114,156,190,186,140,155,141,135,140,137,179,128,156,124,98,66,63,32,27,0,21,5,4,39,73,162,175,207,183,121,174,107,160,177,258,170,152,165,117,59,35,69,7,0,3,3,28,98,165,194,200,190,162,160,170,200,189,187,141,224,152,115,111,47,20,15,2,0,0,29,10,59,170,212,164,201,193,182,277,283,376,310,194,247,177,164,140,192,95,49,10,10,2,5,38,52,156,331,480,378,231,172,132,199,245,267,192,223,182,168,152,81,20,14,13,6,14,16,6,21,51,113,94,103,113,93,205,98,118,97,138,112,98,99,79,74,71,38,31,30,31,38,41,48,131,159,212,134,150,145,149,105,142,149,122,137,193,105,68,75,35,33,41,38,33,29,44,54,85,109,118,117,113,107,112,92,112,98,111,81,120,113,66,55,10,20,26,25,3,10,15,30,60,91,97,67,100,99,75,92,98,126,116,103,110,87,124,66,55,30,31,28,28,31,29,49,109,144,152,116,106,88,164,127,121,161,186,104,81,79,103,69,47,35,35,30,28,34,42,56,114,110,149,153,112,151,138,151,141,139,206,225,166,173,185,384,221,100,61,51,35,44,38,83,87,182,205,243,191,144,106,112,167,234,147,136,152,107,156,53)
Run Code Online (Sandbox Code Playgroud)

从 acf/pacf 相关图中可以看出,my_data 有 24 个周期的清晰季节。

library(forecast)
tsdisplay(my_data)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明 如何配置 auto.arima 以捕捉季节性?

很遗憾

auto.arima(my_data, seasonal = TRUE, approximation = FALSE, stepwise = FALSE)
Run Code Online (Sandbox Code Playgroud)

只考虑 (p,d,q) 因素,而不是预期的 (p,d,q)(P,D,Q)[24]

Series: my_data 
ARIMA(3,1,2)                    

Coefficients:
         ar1      ar2      ar3      ma1     ma2
      1.8061  -0.8164  -0.0587  -1.9453  0.9672
s.e.  0.0478   0.0896   0.0474   0.0178  0.0171

sigma^2 estimated as 2261:  log likelihood=-2581.68
AIC=5175.36   AICc=5175.54   BIC=5200.52
Run Code Online (Sandbox Code Playgroud)

r time-series forecasting

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

使用dplyr从名称中提取列表

我有一个数据表,其中包含许多产品的日期消耗.我生成了每个产品的预测,现在想要获得平均值,并在期间+1上限80%.问题是预测对象是一个具有不同结构的列表,具体取决于所使用的方法,因此我无法通过索引来检索值(我可以通过名称来检索data.table).

这是(虚拟)数据和代码:

# load required libraries
library(data.table)
library(xts)
library(forecast)
library(dplyr)

# create random data
set.seed(1)
a <- data.table(prod = sample(LETTERS[1:5], 20, TRUE), cons = sample(1:50, 20, TRUE), dt = sample(seq(as.Date("2016/06/01"), as.Date("2016/07/27"), by = "day"), 20, FALSE))

# create a time series of purchases
b <- a[, .(C=sum(cons)), by = .(dt, prod)][, x := .(list(xts(x = C, order.by = dt))), by = prod]
b <- b[, .SD[1,], by = prod]

# create a "reference" timeseries
dts <- xts(order.by = …
Run Code Online (Sandbox Code Playgroud)

r forecasting dplyr data.table

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

bsts软件包的预测置信区间比预测中的auto.arima宽得多

我最近阅读了Google的史蒂文·斯科特(Steven Scott)的贝叶斯结构时间序列模型的bsts软件包,并希望将其与我用于各种预测任务的预测软件包中的auto.arima函数相对应。

我在几个示例上进行了尝试,并对该程序包的效率和预测点印象深刻。但是,当我查看预测方差时,我几乎总是发现bsts最终给出了比auto.arima更大的置信度范围。这是有关白噪声数据的示例代码

library("forecast")
library("data.table")
library("bsts")
truthData = data.table(target = rnorm(250))
freq = 52
ss = AddGeneralizedLocalLinearTrend(list(), truthData$target)
ss = AddSeasonal(ss, truthData$target, nseasons = freq)
tStart = proc.time()[3]
model = bsts(truthData$target, state.specification = ss, niter = 500)
print(paste("time taken: ", proc.time()[3] - tStart))
burn = SuggestBurn(0.1, model)
pred = predict(model, horizon = 2 * freq, burn = burn, quantiles = c(0.10, 0.90))

## auto arima fit
max.d = 1; max.D = 1; max.p = 3; max.q = 3; max.P = …
Run Code Online (Sandbox Code Playgroud)

r time-series bayesian forecasting

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

动态预测data.table方式?

我需要使用创建动态预测

v(t) = b0 + b1*v(t-1) + b2*v(t-2) + b3*x(t-1) + b4*x(t-2)
Run Code Online (Sandbox Code Playgroud)

数据集在时间0处看起来像这样.在实际数据中,有80个不同的x和100K"日期".

date           v   vLag1   vLag2   x    xLag1   xLag2   b1    b2   b3    b4 
2016-06-30    NA   105     95      33   11      23      0.2   3.2  -1.2  0.4
2016-07-01    NA   NA      NA      43   33      11      0.2   3.2  -1.2  0.4
2016-07-02    NA   NA      NA      52   43      33      0.2   3.2  -1.2  0.4
Run Code Online (Sandbox Code Playgroud)

目标是预测v,用值替换所有NA.我创建了vLag1,vLag2,xLag1,xLag2,这样我就可以 在一行中计算v.

所有的xb都是提前知道的,所以我创建了上面显示的滞后x.该b的是系数.

对于每个日期,V(t)的被预测,并且该预测V(t)的的将反馈到下一个日期的v …

r shift predict forecasting data.table

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

ts(x) 中的错误:“ts”对象必须有一个或多个观察结果

当我使用forecast库进行预测时,我注意到以下代码没有按预期运行:

library(forecast)
library(dplyr)
df1 <- data.frame(gp=gl(20,5), dt=seq(1:100))

get <- function (df1){
  ts1 <- ts((df1%>%filter(gp==2))$dt)
  as.numeric(forecast(ar(ts1),15)$mean)
}    

print(get(df1))
Run Code Online (Sandbox Code Playgroud)

错误返回是:

ts(x) 中的错误:“ts”对象必须有一个或多个观察结果

可能是由arar.burg功能引起的。因为如果您将功能更改为ets或其他功能,则该功能运行良好。

更奇怪的是,如果把代码改成:

library(forecast)
library(dplyr)
df1 <- data.frame(gp=gl(20,5), dt=seq(1:100))
ts1 <- ts((df1%>%filter(gp==2))$dt)

get <- function (ts1){
  as.numeric(forecast(ar(ts1),15)$mean)
}


print(get(ts1))
Run Code Online (Sandbox Code Playgroud)

代码也运行正常。我认为这可能是ar功能上的一个错误,问题在某种程度上与范围有关。对此有什么想法吗?

r forecasting dplyr

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

na.fail.default(as.ts(x))出错:在时间序列预测中缺少对象中的值

我正在尝试使用的salesData预测执行适合的诊断

acf(SalesDataFC$residuals)
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误:

salesDataFC $残差

         Jan         Feb         Mar         Apr         May
Run Code Online (Sandbox Code Playgroud)

2012 NA NA NA NA NA

2013 1.00454060 0.74436890 0.59266194 0.53535119 0.18350112

2014 1.99667197 -3.32464848 0.28314025 2.30886777 7.90332419

2015 1.71499831 -0.52401427 0.34252510 -1.64516043 2.77034325

         Jun         Jul         Aug         Sep         Oct
Run Code Online (Sandbox Code Playgroud)

2012 NA NA NA NA NA

2013 0.05094251 -0.22804463 -1.91518053 2.58830624 0.26477677

2014 4.40433679 0.32271024 1.57947031 1.43734334 -3.20311270

2015 -2.20471818 -0.90067401 -3.44177911 5.48261863 -2.98716442

         Nov         Dec
Run Code Online (Sandbox Code Playgroud)

2012 NA NA

2013-4.73145658 4.89403358

2014 2.11005638 -2.66661403

2015 0.01368218 1.55215790

ACF(salesDataFC $残差)

na.fail.default(as.ts(x))出错:对象中缺少值

analytics r time-series forecasting

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

Python:pmdarima、autoarima 不适用于大数据

我有一个数据框,每 15 分钟进行大约 80.000 次观察。季节性参数 m 假定为 96,因为模式每 24 小时重复一次。当我在 auto_arima 算法中插入这些信息时,需要很长时间(几个小时)才能发出以下错误消息:

MemoryError: Unable to allocate 5.50 GiB for an array with shape (99, 99, 75361) and data type float64
Run Code Online (Sandbox Code Playgroud)

我正在使用的代码:

stepwise_fit = auto_arima(df['Hges'], seasonal=True, m=96, stepwise=True, 
                          stationary=True, trace=True)
print(stepwise_fit.summary())
Run Code Online (Sandbox Code Playgroud)

我尝试将其重新采样为每小时值,以将数据量和 m 因子减少到 24,但我的计算机仍然无法计算结果。

处理大数据时如何使用 auto_arima 找到权重因子?

python forecasting arima

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