Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Statsmodels arima模型返回错误_Python_Pandas_Statsmodels - Fatal编程技术网

Python Statsmodels arima模型返回错误

Python Statsmodels arima模型返回错误,python,pandas,statsmodels,Python,Pandas,Statsmodels,我已经开始学习statsmodels软件包,无法使用arima实现基本预测 错误是 ValueError:给定一个对象,索引不包含日期 我尝试将此作为一个版本: 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_co

我已经开始学习statsmodels软件包,无法使用arima实现基本预测

错误是

ValueError:给定一个对象,索引不包含日期

我尝试将此作为一个版本:

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)
为什么会这样

日期-收入数据看起来正常:

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

您只需使用as_matrix()转换数据帧即可

示例工作代码:

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有许多未解决的问题,它只能暂时帮助您

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