python中result的用法_python – 使用ARMAResult.predict()函数的正确方法

根据这个问题

How to get constant term in AR Model with statsmodels and Python?.我现在正在尝试使用ARMA模型来拟合数据,但我再也找不到解释模型结果的方法.这是我根据

ARMA out-of-sample prediction with statsmodels和

ARMAResults.predict API document所做的.

# Parameter

INPUT_DATA_POINT = 200

P = 5

Q = 0

# Read Data

data = []

f = open('stock_all.csv', 'r')

for line in f:

data.append(float(line.split(',')[5]))

f.close()

# Fit ARMA-model using the first piece of data

result = arma_model(data[:INPUT_DATA_POINT], P, Q)

# Predict using model (fit dimension is len(data) + 1 why?)

fit = result.predict(0, len(data))

# Plot

plt.figure(facecolor='white')

plt.title('ARMA Model Fitted Using ' + str(INPUT_DATA_POINT) + ' Data Points, P=' + str(P) + ' Q=' + str(Q) + '\n')

plt.plot(data, 'b-', label='data')

plt.plot(range(INPUT_DATA_POINT), result.fittedvalues, 'g--', label='fit')

plt.plot(range(len(data)), fit[:len(data)], 'r-', label='predict')

plt.legend(loc=4)

plt.show()

这里的结果非常奇怪,因为它应该与我在上面的链接中提到的上一个问题的结果几乎相同.此外,我不太明白为什么有几个第一个数据点的结果,因为它不应该是有效的(没有先前的计算值).

我尝试编写自己的预测代码,如下所示(省略了与上面代码相​​同的顶部)

# Predict using model

start_pos = max(result.k_ar, result.k_ma)

fit = []

for t in range(start_pos, len(data)):

value = 0

for i in range(1, result.k_ar + 1):

value += result.arparams[i - 1] * data[t - i]

for i in range(1, result.k_ma + 1):

value += result.maparams[i - 1] * data[t - i]

fit.append(value)

# Plot

plt.figure(facecolor='white')

plt.title('ARMA Model Fitted Using ' + str(INPUT_DATA_POINT) + ' Data Points, P=' + str(P) + ' Q=' + str(Q) + '\n')

plt.plot(data, 'b-', label='data')

plt.plot(range(INPUT_DATA_POINT), result.fittedvalues, 'r+', label='fit')

plt.plot(range(start_pos, len(data)), fit, 'r-', label='predict')

plt.legend(loc=4)

plt.show()

这是我得到的最好的结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值