使用 ARMAResult.predict() 函数的正确方法

2024-03-25

根据这个问题如何使用 statsmodels 和 Python 获得 AR 模型中的常数项? https://stackoverflow.com/questions/24172454/how-to-get-constant-term-in-ar-model-with-statsmodels-and-python。我现在尝试使用 ARMA 模型来拟合数据,但我再次找不到解释模型结果的方法。这是我根据所做的使用 statsmodels 进行 ARMA 样本外预测 https://stackoverflow.com/questions/18616588/arma-out-of-sample-prediction-with-statsmodels and ARMAResults.predict API 文档 http://statsmodels.sourceforge.net/stable/generated/statsmodels.tsa.arima_model.ARMAResults.predict.html#statsmodels.tsa.arima_model.ARMAResults.predict.

# 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()

这是我得到的最好结果


您在数据子集上训练模型,然后进行样本外预测。 AR(MA) 预测快速收敛到数据的平均值。这就是为什么您会看到第一个结果。在第二个结果中,您没有进行样本外预测,而只是获得了样本外拟合值。

前几个观察数据点使用卡尔曼滤波器递归进行拟合(这是完全最大似然估计和条件最大似然估计之间的区别)。

我会拿起一本好的预测教科书并复习它以理解这种行为。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ARMAResult.predict() 函数的正确方法 的相关文章

随机推荐

  • 当 Flexbox 项目以列模式换行时,容器不会增加其宽度

    我正在研究一个嵌套的弹性盒布局 它应该按如下方式工作 最外层 ul main 是一个水平列表 当向其中添加更多项目时 该列表必须向右扩展 如果它变得太大 应该有一个水平滚动条 main display flex flex direction
  • maven2:从 WAR 中排除目录

    I tried this http maven apache org plugins maven war plugin examples adding filtering webresources html从我的 WAR 文件中排除整个目录
  • 查找将一个 NumPy ndarray 的行映射到另一个 NumPy ndarray 的一组索引

    我有两个结构化的 2Dnumpy数组是equal原则上 意义 A numpy array a1 b1 c1 a2 b2 c2 a3 b3 c3 a4 b4 c4 B numpy array a2 b2 c2 a4 b4 c4 a3 b3 c
  • 在 React 中将类组件转换为函数式组件

    我正在学习 React hooks 因此为了做到这一点 我尝试将类组件转换为函数组件 但我仍然遇到一些错误 这是作为类编写的原始工作组件 import React Component from react import NavBar fro
  • Restkit:迁移到 0.20

    我正在尝试迁移到 RestKit 0 20 pre2 目前我设法迁移我的映射 至少编译器不再抱怨 但我在创建请求时遇到问题 之前我使用了不再存在的 RKObjectLoader 我之前的代码如下 RKObjectLoader objectL
  • 如何从 Cassandra 获取排序计数器

    我有一排计数器 我想让它的列按值排序 有什么策略或数据模型吗 恐怕没有办法让 Cassandra 为你做这件事 您需要从 Cassandra 获取整行 对大行进行分页 并在客户端中对其进行排序 如果您的解决方案可以处理非最新结果 您可以使用
  • R 中的 na.strings = c()

    我是 R 新手并开始探索na strings c 函数与read csv 我已经读到 使用此选项 所有缺失的值将被替换为 NA 但我在我的文件中没有看到这种情况发生 尽管使用了 但我没有看到输出有任何差异na strings c 如果我遗漏
  • 如何删除由 addEventListener 以事件对象作为参数绑定的匿名函数

    例如 document addEventListener keyup function ev if ev ctrlKey dosomething false 有什么办法可以去掉匿名函数吗 你可以自己写一个小接口addEventListene
  • tinymce 4 如何添加事件处理程序

    在tinymce 3中 我们似乎可以这样做 Adds a click handler to the current document tinymce dom Event add document click function e conso
  • Angular:延迟加载模块重新加载时重置服务状态

    我的申请中关于服务的结构如下 AppModule AppComponent and HomeComponent Lazy1 Lazy2 Lazy3 我的应用程序从 AppComponent 开始 它重定向到 HomeComponent 然后
  • 正则表达式不以数字开头

    如何创建一个匹配所有开头不带数字的字母数字的正则表达式 现在我有 0 9 a zA Z0 9 例如 1ab 不匹配 ab1 匹配 1 bc 不匹配 bc 1 匹配 你所写的内容存在三处错误 首先 要否定一个字符类 您可以将 inside括号
  • 雪花中有保存或加载工作表的选项吗?

    雪花中有保存或加载工作表的选项吗 或者将工作表下载到本地并从本地加载 我的意思不是通过剪贴板将其粘贴到某些文本编辑器并保存这样的选项 Snowflake 会自动保存您的工作表 您还可以将脚本从本地加载到工作表 但是无法下载工作表 Saved
  • QOpenGLWidget显示黑屏

    我尝试了此处描述的 QOpenGLWidget 示例 https stackoverflow com a 31524956 4564882 https stackoverflow com a 31524956 4564882 但我只得到一个
  • 使用IDLE时的工作目录是什么?

    所以 我正在学习 Python 想创建一个简单的脚本来从互联网下载文件 然后将其写入文件 但是 我正在使用 IDLE 并且不知道 IDLE 中的工作目录是什么或如何更改它 如果我不知道工作目录或如何更改它 如何在 IDLE 中执行文件系统操
  • 如何识别“hw.machine”标识符可靠?

    我正在寻找最官方的来源来完成 维护此方法 NSString platformString NSString platform self platform if platform isEqualToString iPhone1 1 retur
  • 如何获取 Woocommerce 电子邮件通知中的 cookie 值?

    我正在使用 php cookie 从插件检索 woocommerce 感谢页面和客户订单详细信息页面的值 它在感谢页面上工作正常 但没有在电子邮件订单详细信息页面上打印任何内容 我该如何解决此问题 我尝试过使用 php 会话获取值 它仅打印
  • itextsharp - 阅读 1 列(第 1 页)和 2 列(第 2 页)的 PDF 时出现问题

    当打开首页上只有一列而其他页面上有超过一列的 PDF 文件时 我的下面的代码丢失了 有人可以告诉我我做错了什么吗 下面是我的代码 PdfReader pdfreader new PdfReader pathNmArq ITextExtrac
  • 如何在 Paw 中执行并发 HTTP 请求?

    在 Paw 中 如果我有一个长时间运行的请求并尝试调用另一个请求 则会出现一个对话框 其中显示Stop request A request is currently running 与选项Cancel Stop and Stop Send
  • 重新连接到网络后如何获取有效的 Firebase appcheck 令牌?

    我在我的 Android 应用程序中使用 Firebase appcheck 它工作得很好 只是如果我在飞行模式下启动应用程序然后禁用飞行模式 即模拟在没有网络连接的情况下打开应用程序 然后获得网络连接 它总是会失败 当我没有连接时 我会反
  • 使用 ARMAResult.predict() 函数的正确方法

    根据这个问题如何使用 statsmodels 和 Python 获得 AR 模型中的常数项 https stackoverflow com questions 24172454 how to get constant term in ar