In [1]:
import pandas as pd
import numpy as np

import pyaf.ForecastEngine as autof
import pyaf.Bench.TS_datasets as tsds


%matplotlib inline

In [2]:
b1 = tsds.generate_random_TS(12, 'D', 4243, "linear" , 52 , "" , 0.01)
b2 = tsds.generate_random_TS(12 , 'D', 4242, "poly" , 52 , "" , 0.01)


GENERATING_RANDOM_DATASET Signal_12_D_4243_linear_52__0.01_20
TREND 76.91383696439541 -1.0638593345711 0.9954661351814997
GENERATING_RANDOM_DATASET Signal_12_D_4242_poly_52__0.01_20
TREND -35.01010267649731 8.808291590368945 1.8280158855438828

In [3]:
def compute_R2(signal , estimator):
    lMean = np.mean(signal.values)
    SSTot = np.dot((signal.values - lMean), (signal.values - lMean)) + 1.0e-10
    SSRes = np.dot((estimator.values - signal.values), (estimator.values - signal.values))
    R2 = 1.0 - SSRes/SSTot
    print("compute_R2_sig" , signal.T)
    print("compute_R2_est" , estimator.T)
    print("compute_R2" , lMean, SSTot, SSRes, R2)
    return R2

In [4]:
compute_R2(b1.mPastData.Signal , b2.mPastData.Signal)


compute_R2_sig 0     -0.365727
1      5.990854
2     12.226381
3     18.435008
4     25.248230
5     31.915865
6     38.297449
7     44.228520
8     50.433997
9     57.302744
10    63.178568
Name: Signal, dtype: float64
compute_R2_est 0      2.137169
1      2.656958
2      2.691334
3      2.403626
4      1.655721
5     -0.438003
6     -1.975673
7     -4.115653
8     -7.601332
9    -10.571572
10   -15.119331
Name: Signal, dtype: float64
compute_R2 31.5356262017 4483.58114829 20033.3475039 -3.46815767159
Out[4]:
-3.4681576715938753

In [ ]: