基于对数差分ARIMA模型提取BTC原始价格预测值(R语言)
还原对数差分预测值为BTC原始价格的方法
核心逆变换逻辑
你做的变换是先取BTC价格的对数,再做一阶差分得到增长率序列。要还原原始价格,需要两步逆操作:
- 从预测的差分(增长率)序列还原出对数价格:用样本最后一天的对数价格,累加未来每一步的差分预测值
- 将对数价格指数化,得到原始BTC价格
具体实现步骤(R代码)
1. 提取样本最后一天的对数价格
首先获取你现有数据中最后一天的对数价格,作为还原的起点:
last_log_price <- tail(df_byday$log, 1)
2. 还原单个模型的预测结果(以forecast_ar8为例)
# 提取未来5天的差分预测值 pred_dy <- forecast_ar8$mean # 累加差分,得到相对于最后一天的对数价格增量 cumulative_dy <- cumsum(pred_dy) # 计算预测的对数价格 pred_log_price <- last_log_price + cumulative_dy # 指数化得到原始BTC价格 pred_btc_price <- exp(pred_log_price) # 整理成数据框方便查看 ar8_pred_result <- data.frame( 预测天数 = 1:5, 预测差分 = pred_dy, 预测对数价格 = pred_log_price, 预测BTC原始价格 = pred_btc_price ) print(ar8_pred_result)
3. 批量处理其他模型
对forecast_ar1和forecast_ma1重复上述逻辑即可:
# 处理forecast_ar1 cum_dy_ar1 <- cumsum(forecast_ar1$mean) pred_btc_ar1 <- exp(last_log_price + cum_dy_ar1) # 处理forecast_ma1 cum_dy_ma1 <- cumsum(forecast_ma1$mean) pred_btc_ma1 <- exp(last_log_price + cum_dy_ma1)
4. 还原预测置信区间(可选)
如果需要还原预测的上下置信区间,对区间边界执行同样的累加和指数化操作:
# 以forecast_ar8的95%置信区间为例 lower_log <- last_log_price + cumsum(forecast_ar8$lower[,2]) upper_log <- last_log_price + cumsum(forecast_ar8$upper[,2]) lower_btc <- exp(lower_log) upper_btc <- exp(upper_log)
内容的提问来源于stack exchange,提问作者Constantin Marguier
相关产品推荐
相关产品推荐

