После построения модели ARMA с использованием statsmodels.tsa.arima_model.ARMA, я хочу измерить ошибку модели, используя метод .resid()
класса ARMAResult
. Тем не менее, во время выполнения, я получил сообщение об ошибке:statsmodels.tsa.arima_model: TypeError: объект «Series» не может быть вызван
Traceback (most recent call last):
File "smtest.py", line 161, in <module>
arma(df, 'input')
File "smtest.py", line 81, in arma
print arma11.resid()
TypeError: 'Series' object is not callable
На самом деле, исходный код statsmodels.tsa.arima_model.ARMAResults.resid() является следующее:
@cache_readonly
def resid(self):
return self.model.geterrors(self.params)
и часть моего кода:
def arma(df, colname):
"""
Compute the ARMA result for dataframe provided, than plot
Parameters
----------
df : dataframe
colname : column name in the dataframe df
"""
values_realtime = df[colname]
arma11 = sm.tsa.ARMA(values_realtime, (1, 1)).fit()
arma12 = sm.tsa.ARMA(values_realtime, (1, 2)).fit()
arma13 = sm.tsa.ARMA(values_realtime, (1, 3)).fit()
arma31 = sm.tsa.ARMA(values_realtime, (3, 1)).fit()
arma41 = sm.tsa.ARMA(values_realtime, (4, 1)).fit()
values_predict_arma11 = arma11.predict()
values_predict_arma12 = arma12.predict()
values_predict_arma13 = arma13.predict()
values_predict_arma31 = arma31.predict()
values_predict_arma41 = arma41.predict()
# get errors I
values_error_arma11 = values_predict_arma11 - values_realtime
values_error_arma12 = values_predict_arma12 - values_realtime
values_error_arma13 = values_predict_arma13 - values_realtime
values_error_arma31 = values_predict_arma31 - values_realtime
values_error_arma41 = values_predict_arma41 - values_realtime
# get errors II
print arma11.resid()
# ...
Может кто-нибудь скажет мне, что мне делать, чтобы решить проблему? Благодарю.
'arma11.resid' Это свойство кэширования, но сфинкс не может отобразить его без'() ' в документации. В общем случае, если сообщение говорит, что оно не вызываемо, попробуйте его без вызова, т. Е. Без '()'. – user333700
Работает без '()'. И теперь я знаю лучше о питоне, спасибо! Не могли бы вы дать ответ ниже, чтобы я мог принять его? –