6

저는 통계 모델을 외생 변수로 학습하기 위해 statsmodels.tsa.SARIMAX()를 사용하고 있습니다. 모델이 외생 변수로 훈련 될 때 get_prediction()과 동등한 결과가 주어 지므로 반환 된 객체는 예측 된 평균 결과 배열이 아닌 예측 된 평균 및 신뢰 구간을 포함합니다. predict() 및 forecast() 메서드는 외생 변수를 사용하지만 예측 된 평균값 만 반환합니다. 여기 PREDPython Statsmodels : 외생적인 회귀 변수가있는 SARIMAX를 사용하여 평균 및 신뢰 구간 예측

SARIMA_model = sm.tsa.SARIMAX(endog=y_train.astype('float64'), 
          exog=ExogenousFeature_train.values.astype('float64'), 
          order=(1,0,0), 
          seasonal_order=(2,1,0,7), 
          simple_differencing=False) 

model_results = SARIMA_model.fit() 

pred = model_results.predict(start=train_end_date, 
           end=test_end_date, 
           exog=ExogenousFeature_test.values.astype('float64').reshape(343,1), 
           dynamic=False) 

예측 값의 배열이 아닌 당신이 get_predict를 실행 한 경우 당신이 얻을 것이라고 예측 평균 값과 신뢰 구간을 포함하는 객체()입니다. get_predict()는 외생 변수를 사용하지 않습니다.

statsmodels의 나의 버전은 0.8

답변

3

이있는 전체 결과 (PRED 간격 등을 포함)에 노출되지 않습니다으로 인해 일부 이전 버전과의 호환성 관련 문제가 발생했습니다입니다.

당신을 얻을하려면 당신이 지금 원하는 : 저자에 의해

  • https://github.com/statsmodels/statsmodels/issues/2823
  • 해결 방법 : 매개 변수를 사용 get_prediction 및 get_forecast 기능이 더 많은 정보

    pred_res = sarimax_model.get_prediction(exog=ExogenousFeature_train.values.astype('float64'), full_results=True,alpha=0.05) 
        pred_means = pred_res.predicted_mean 
        # Specify your prediction intervals by alpha parameter. alpha=0.05 implies 95% CI 
        pred_cis = pred_res.conf_int(alpha=0.05) 
    
        # You can then plot it (import matplotlib first) 
        fig = plt.figure(figsize=(12, 8)) 
        ax = fig.add_subplot(1,1,1) 
        #Actual data 
        ax.plot(y_train.astype('float64'), '--', color="blue", label='data') 
        # Means 
        ax.plot(pred_means, lw=1, color="black", alpha=0.5, label='SARIMAX') 
        ax.fill_between(pred_means.index, pred_cis.iloc[:, 0], pred_cis.iloc[:, 1], alpha=0.05) 
        ax.legend(loc='upper right') 
        plt.draw() 
    

    설명, 이동 : http://www.statsmodels.org/dev/examples/notebooks/generated/statespace_local_linear_trend.html