J'utilise statsmodels.tsa.arima_model.ARIMA
, et j'ai pris la racine carrée de la variable endogène avant de la brancher dans l'algorithme. Le modèle utilise un ordre de 1 differentiation:Comment annuler la différenciation (ordre de décalage 1) d'une variable transformée racine carrée? [ARIMA()]
model = ARIMA(sj_sqrt, order=(2, 1, 0))
Après le montage du modèle et saisir les prédictions, je veux mettre les prédictions de retour sous la forme originale de comparaison avec les données d'origine. Cependant, je n'arrive pas à les transformer correctement.
Pour répliquer une version simple de ce problème, voici un code:
#original data:
test = pd.Series([1,1,1,50,1,1,1,1,1,1,1,1,40,1,1,2,1,1,1,1,1])
#sqrt transformed data:
test_sqrt = np.sqrt(test)
#sqrt differenced data:
test_sqrt_diff = test_sqrt.diff(periods=1)
#undo differencing:
test_sqrt_2 = cumsum(test_sqrt_diff)
#undo transformations:
test_2 = test_sqrt_2 ** 2
f, axarr = plt.subplots(5, sharex=True, sharey=True)
axarr[0].set_title('original data:')
axarr[0].plot(test)
axarr[1].set_title('sqrt transformed data:')
axarr[1].plot(test_sqrt)
axarr[2].set_title('sqrt differenced data:')
axarr[2].plot(test_sqrt_diff)
axarr[3].set_title('differencing undone with .cumsum():')
axarr[3].plot(test_sqrt_2)
axarr[4].set_title('transformation undone by squaring:')
axarr[4].plot(test_2)
f.set_size_inches(5, 12)
Vous pouvez voir des graphiques que les données non différenciées, est non transformée pas tout à fait sur la même échelle. test[3]
retours 50
et test_2[3]
retours 36.857864376269056