最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

time series - Extract forecast from an ARIMA with log and difference (R) - Stack Overflow

programmeradmin4浏览0评论

I computed AR's models to predict the value of BTC. In order to make the data stationary i have transformed it :

  1. yt=log(BTS_t)
  2. dyt = yt-yt-1 I take the difference of logarithms (interpretable as the growth rate between two consecutive days). However, I want to extract the forcast of the original value of the BTC.

My code is the following :

Construct data

df_byday <- read_excel("C:/Users/33610/Downloads/dfday.xlsx")
df_byday$log <- log(df_byday$Price)
df_byday$LOGdiff1 <- c(0, diff(df_byday$log, lag = 1))
tsBTC2 <- ts(df_byday$LOGdiff1, start=c(2017,01,01), frequency=365)

Estimate :

summary(mod_ar1)
mod_ma1 <- Arima(tsBTC2, order = c(0, 0, 1))
summary(mod_ma1)
mod_ar8 <- Arima(tsBTC2, order = c(8, 0, 0))
summary(mod_ar8)
mod_arma11 <- Arima(tsBTC2, order = c(1, 0, 1))
summary(mod_arma11)

Correct for non-significant coefficients :

mod_ar8fix <- Arima(tsBTC2, order = c(8, 0, 0), fixed=c(NA,0,0,0,0,0,0,NA,NA))
summary(mod_ar8fix)

Forecast (for the transformed data) :

forecast_ar8 <- forecast(mod_ar8fix, h = 5) 
forecast_ar1 <- forecast(mod_ar1, h = 5)
forecast_ma1 <- forecast(mod_ma1, h = 5)

I want to use this forcast to predict the future value of the BTC and avoid the problem of the log and the difference

Thanks you for your helping!

I computed AR's models to predict the value of BTC. In order to make the data stationary i have transformed it :

  1. yt=log(BTS_t)
  2. dyt = yt-yt-1 I take the difference of logarithms (interpretable as the growth rate between two consecutive days). However, I want to extract the forcast of the original value of the BTC.

My code is the following :

Construct data

df_byday <- read_excel("C:/Users/33610/Downloads/dfday.xlsx")
df_byday$log <- log(df_byday$Price)
df_byday$LOGdiff1 <- c(0, diff(df_byday$log, lag = 1))
tsBTC2 <- ts(df_byday$LOGdiff1, start=c(2017,01,01), frequency=365)

Estimate :

summary(mod_ar1)
mod_ma1 <- Arima(tsBTC2, order = c(0, 0, 1))
summary(mod_ma1)
mod_ar8 <- Arima(tsBTC2, order = c(8, 0, 0))
summary(mod_ar8)
mod_arma11 <- Arima(tsBTC2, order = c(1, 0, 1))
summary(mod_arma11)

Correct for non-significant coefficients :

mod_ar8fix <- Arima(tsBTC2, order = c(8, 0, 0), fixed=c(NA,0,0,0,0,0,0,NA,NA))
summary(mod_ar8fix)

Forecast (for the transformed data) :

forecast_ar8 <- forecast(mod_ar8fix, h = 5) 
forecast_ar1 <- forecast(mod_ar1, h = 5)
forecast_ma1 <- forecast(mod_ma1, h = 5)

I want to use this forcast to predict the future value of the BTC and avoid the problem of the log and the difference

Thanks you for your helping!

Share Improve this question edited Nov 19, 2024 at 9:17 Constantin Marguier asked Nov 19, 2024 at 9:11 Constantin MarguierConstantin Marguier 113 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 1

Build the log and difference into the fitted model, and the forecast() function will take care of it for you.

e.g.,

library(forecast)

price <- ts(df_byday$Price, start = 2027, frequency = 365)
mod_arima011 <- Arima(price, order = c(0, 1, 1), lambda = 0)
forecast_arima011 <- forecast(mod_arima011, h = 5)

The lambda=0 argument specifies a logarithm. See https://otexts/fpp2/arima.html for a textbook introduction.

But since you're modelling daily data, you would be better off not using a ts object or the forecast package. Instead, consider tsibble objects with the fable package. See https://otexts/fpp3/arima.html.

发布评论

评论列表(0)

  1. 暂无评论