%AR(1)预测 % 计算AR(1)模型参数 RV_diff = diff(RV_real); X_ar = RV_real(2:end)'; Y_ar = RV_real(1:end-1)'; beta = 0.8; c = 0; RV_real_pred = zeros(1,N+1); RV_real_uub = zeros(1,N+1); RV_real_llb = zeros(1,N+1); RV_real_pred(1) = RV_real(1); RV_real_uub(1) = RV_real(1); RV_real_llb(1) = RV_real(1); for i = 1:N RV_real_pred(i+1) = c + beta*RV_real(i); RV_real_uub(i+1) = RV_real_pred(i+1) + z_alpha*sqrt(var(RV_diff))*sqrt(1+beta^2); RV_real_llb(i+1) = RV_real_pred(i+1) - z_alpha*sqrt(var(RV_diff))*sqrt(1+beta^2); end % 绘制图形 t = 0:dt:T; hold on; plot(t,max(0,RV_real_pred),'k:'); plot(t,max(0,RV_real_uub),'r--',t,max(0,RV_real_llb),'r--'); 改成python代码
时间: 2024-04-18 22:23:59 浏览: 10
import numpy as np
import matplotlib.pyplot as plt
# Compute AR(1) model parameters
RV_diff = np.diff(RV_real)
X_ar = RV_real[1:]
Y_ar = RV_real[:-1]
beta = 0.8
c = 0
N = len(RV_real) - 1
RV_real_pred = np.zeros(N+1)
RV_real_uub = np.zeros(N+1)
RV_real_llb = np.zeros(N+1)
RV_real_pred[0] = RV_real[0]
RV_real_uub[0] = RV_real[0]
RV_real_llb[0] = RV_real[0]
for i in range(N):
RV_real_pred[i+1] = c + beta*RV_real[i]
RV_real_uub[i+1] = RV_real_pred[i+1] + z_alpha*np.sqrt(np.var(RV_diff))*np.sqrt(1+beta**2)
RV_real_llb[i+1] = RV_real_pred[i+1] - z_alpha*np.sqrt(np.var(RV_diff))*np.sqrt(1+beta**2)
# Plot the graph
t = np.arange(0, T, dt)
plt.plot(t, np.maximum(0, RV_real_pred), 'k:')
plt.plot(t, np.maximum(0, RV_real_uub), 'r--', t, np.maximum(0, RV_real_llb), 'r--')
plt.xlabel('Time')
plt.ylabel('RV')
plt.legend(['Predicted', 'Upper Bound', 'Lower Bound'])
plt.show()