gpt4 book ai didi

python-3.x - 使用 statsmodel 中的 arma_order_select_ic 选择 ARMA 模型订单

转载 作者:行者123 更新时间:2023-12-02 04:34:29 31 4
gpt4 key购买 nike

我使用 statsmodel 库中的 arma_order_select_ic 来计算 ARMA 模型的 (p,q) 顺序,我使用 for 循环来循环数据帧每一列中的不同公司。代码如下:

import pandas as pd
from statsmodels.tsa.stattools import arma_order_select_ic

df = pd.read_csv("Adjusted_Log_Returns.csv", index_col = 'Date').dropna()

main_df = pd.DataFrame()


for i in range(146):
order_selection = arma_order_select_ic(df.iloc[i].values, max_ar = 4,
max_ma = 2, ic = "aic")
ticker = [df.columns[i]]

df_aic_min = pd.DataFrame([order_selection["aic_min_order"]], index =
ticker)

main_df = main_df.append(df_aic_min)


main_df.to_csv("aic_min_orders.csv")

代码运行良好,最后我在 csv 文件中得到了所有结果,但令我困惑的是,当我在 for 循环之外计算单个公司的 (p,q) 时,我会得到不同的结果

order_selection = arma_order_select_ic(df["ABL"].values, max_ar = 4, 
max_ma = 2, ic = "aic")

在 for 循环中计算时,公司 ABL 的顺序为 (1,1),而在 for 循环之外计算时,其顺序为 (4,1)。

所以我的问题是我做错了什么或者为什么会这样?任何帮助将不胜感激。

提前致谢

最佳答案

从您的代码中可以清楚地看出,您正在尝试在'数据上查找 ARMA 模型的参数,但这不是代码所做的:您在循环的参数。

考虑一下:

import pandas as pd

df = pd.DataFrame({'a': [3, 4]})

>>> df.iloc[0]
a 3
Name: 0, dtype: int64

>>> df['a']
0 3
1 4
Name: a, dtype: int64

您可能应该将代码更改为

for c in df.columns:
order_selection = arma_order_select_ic(df[c].values, max_ar = 4,
max_ma = 2, ic = "aic")
ticker = [c]

关于python-3.x - 使用 statsmodel 中的 arma_order_select_ic 选择 ARMA 模型订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50389434/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com