簡體   English   中英

Statsmodels arima模型返回錯誤

[英]Statsmodels arima model returns error

我已經開始學習statsmodels包,無法用arima實現基本的預測。

錯誤是

ValueError:給定一個pandas對象,索引不包含日期

我正在嘗試這個版本:

df = make_df(filename_data)

y = []
x = []

# here I am preparing day by day sequence as that I have inconsistent data and I set 0 to NAN values

start_date = df[date_col].min()
end_date = df[date_col].max()



while start_date <= end_date:

    x.append(start_date)

    try:
        y.append(
            df[df[date_col] == start_date][rev_col].values[0])
    except:
        y.append(0)

    start_date += datetime.timedelta(days=1)

y = np.array(y)
x = np.array(x)

y = pd.TimeSeries(y, index=x)
print(y)
arma_mod = sm.tsa.ARMA(y, order=(2,2))
arma_res = arma_mod.fit(trend='nc', disp=-1)

在此之前我嘗試過

df = make_df(filename_data)

y = np.array(df[rev_col])
x = np.array(df[date_col])

y = pd.TimeSeries(y, index=x)

為什么會這樣?

日期 - 收入數據看起來不錯:

2014-08-04      59477
2014-08-05      29989
2014-08-06      29989
2014-08-07     116116

您可以使用as_matrix()簡單地轉換DataFrame。

工作代碼示例:

from statsmodels.tsa.arima_model import ARIMA
import numpy as np

def plot_residuals(data, ord=(2, 0, 1)):
    model = ARIMA(endog=data, order=(ord[0], 0, ord[1])).fit()
    plt.plot(model.resid)
    plt.show()

data = np.log(data.values) - np.log(data.values.shift()).to_frame().dropna().as_matrix()
plot_residuals(data, (2, 0, 1))

由於statsmodels有許多未解決的問題,它只能暫時幫助你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM