<s> import unittest <EOL> from mock import patch <EOL> from pycast . common . timeseries import TimeSeries <EOL> from pycast . common . matrix import Matrix <EOL> from pycast . methods . regression import Regression , LinearRegression <EOL> class RegressionTest ( unittest . TestCase ) : <EOL> """<STR_LIT>""" <EOL> def calculate_parameters_two_empty_list_test ( self ) : <EOL> """<STR_LIT>""" <EOL> tsOne = TimeSeries . from_twodim_list ( [ ] ) <EOL> tsTwo = TimeSeries . from_twodim_list ( [ ] ) <EOL> reg = Regression ( ) <EOL> self . assertRaises ( ValueError , reg . calculate_parameters , tsOne , tsTwo ) <EOL> def calculate_parameters_one_empty_list_test ( self ) : <EOL> """<STR_LIT>""" <EOL> tsOne = TimeSeries . from_twodim_list ( [ [ <NUM_LIT:1> , <NUM_LIT> ] ] ) <EOL> tsTwo = TimeSeries . from_twodim_list ( [ ] ) <EOL> reg = Regression ( ) <EOL> self . assertRaises ( ValueError , reg . calculate_parameters , tsOne , tsTwo ) <EOL> def calculate_parameters_test ( self ) : <EOL> """<STR_LIT>""" <EOL> data1 = [ <EOL> [ <NUM_LIT:1> , <NUM_LIT> ] , [ <NUM_LIT:7> , <NUM_LIT> ] , [ <NUM_LIT:2> , <NUM_LIT> ] , [ <NUM_LIT:3> , <NUM_LIT> ] , [ <NUM_LIT:4> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:5> , <NUM_LIT> ] , [ <NUM_LIT:6> , <NUM_LIT> ] , [ <NUM_LIT:8> , <NUM_LIT> ] , [ <NUM_LIT:9> , <NUM_LIT> ] <EOL> ] <EOL> data2 = [ <EOL> [ <NUM_LIT:1> , <NUM_LIT> ] , [ <NUM_LIT:2> , <NUM_LIT> ] , [ <NUM_LIT:3> , <NUM_LIT> ] , [ <NUM_LIT:4> , <NUM_LIT> ] , [ <NUM_LIT:10> , <NUM_LIT> ] , <EOL> [ <NUM_LIT:5> , <NUM_LIT> ] , [ <NUM_LIT:6> , <NUM_LIT> ] , [ <NUM_LIT:7> , <NUM_LIT> ] , [ <NUM_LIT:8> , <NUM_LIT> ] <EOL> ] <EOL> tsSrc1 = TimeSeries . from_twodim_list ( data1 ) <EOL> tsSrc2 = TimeSeries . from_twodim_list ( data2 ) <EOL> expRes = ( <NUM_LIT> , <NUM_LIT> ) <EOL> reg = Regression ( ) <EOL> res = reg . calculate_parameters ( tsSrc1 , tsSrc2 ) <EOL> self . assertEquals ( res , expRes ) <EOL> def calculate_parameters_without_match_test ( self ) : <EOL> """<STR_LIT>""" <EOL> data1 = [ [ <NUM_LIT:1> , <NUM_LIT> ] , [ <NUM_LIT:6> , <NUM_LIT> ] , [ <NUM_LIT:8> , <NUM_LIT> ] ] <EOL> data2 = [ [ <NUM_LIT:2> , <NUM_LIT> ] , [ <NUM_LIT:4> , <NUM_LIT> ] , [ <NUM_LIT:7> , <NUM_LIT> ] ] <EOL> tsOne = TimeSeries . from_twodim_list ( data1 ) <EOL> tsTwo = TimeSeries . from_twodim_list ( data2 ) <EOL> reg = Regression ( ) <EOL> self . assertRaises ( ValueError , reg . calculate_parameters , tsOne , tsTwo ) <EOL> def calculate_parameter_duplicate_dates_test ( self ) : <EOL> """<STR_LIT>""" <EOL> data1 = [ [ <NUM_LIT:1> , <NUM_LIT> ] , [ <NUM_LIT:4> , <NUM_LIT> ] ] <EOL> data2 = [ [ <NUM_LIT:1> , <NUM_LIT> ] , [ <NUM_LIT:1> , <NUM_LIT> ] ] <EOL> tsSrc1 = TimeSeries . from_twodim_list ( data1 ) <EOL> tsSrc2 = TimeSeries . from_twodim_list ( data2 ) <EOL> reg = Regression ( ) <EOL> self . assertRaises ( ValueError , reg . calculate_parameters , tsSrc1 , tsSrc2 ) <EOL> def calculate_parameter_with_short_timeseries_test ( self ) : <EOL> """<STR_LIT>""" <EOL> data1 = [ [ <NUM_LIT:1> , <NUM_LIT> ] , [ <NUM_LIT:4> , <NUM_LIT> ] ] <EOL> data2 = [ [ <NUM_LIT:1> , <NUM_LIT> ] ] <EOL> tsSrc1 = TimeSeries . from_twodim_list ( data1 ) <EOL> tsSrc2 = TimeSeries . from_twodim_list ( data2 ) <EOL> reg = Regression ( ) <EOL> self . assertRaises ( ValueError , reg . calculate_parameters , tsSrc1 , tsSrc2 ) <EOL> def match_time_series_test ( self ) : <EOL> """<STR_LIT>""" <EOL> data1 = [ [ <NUM_LIT:1> , <NUM_LIT> ] , [ <NUM_LIT:4> , <NUM_LIT> ] , [ <NUM_LIT:7> , <NUM_LIT> ] , [ <NUM_LIT:8> , <NUM_LIT> ] ] <EOL> data2 = [ [ <NUM_LIT:2> , <NUM_LIT> ] , [ <NUM_LIT:7> , <NUM_LIT> ] , [ <NUM_LIT:4> , <NUM_LIT> ] , [ <NUM_LIT:5> , <NUM_LIT> ] ] <EOL> tsSrc1 = TimeSeries . from_twodim_list ( data1 ) <EOL> tsSrc2 = TimeSeries . from_twodim_list ( data2 ) <EOL> dstX = [ [ <NUM_LIT:4> , <NUM_LIT> ] , [ <NUM_LIT:7> , <NUM_LIT> ] ] <EOL> dstY = [ [ <NUM_LIT:4> , <NUM_LIT> ] , [ <NUM_LIT:7> , <NUM_LIT> ] ] <EOL> reg = Regression ( ) <EOL> tsX , tsY = reg . match_time_series ( tsSrc1 , tsSrc2 ) <EOL> self . assertEqual ( tsX , dstX ) <EOL> self . assertEqual ( tsY , dstY ) <EOL> def predict_test ( self ) : <EOL> """<STR_LIT>""" <EOL> data1 = [ [ <NUM_LIT:1> , <NUM_LIT:1> ] , [ <NUM_LIT:2> , <NUM_LIT:2> ] , [ <NUM_LIT:3> , <NUM_LIT:3> ] ] <EOL> data2 = [ [ <NUM_LIT:1> , <NUM_LIT:3> ] , [ <NUM_LIT:2> , <NUM_LIT:5> ] , [ <NUM_LIT:3> , <NUM_LIT:7> ] ] <EOL> ts1 = TimeSeries . from_twodim_list ( data1 ) <EOL> ts2 = TimeSeries . from_twodim_list ( data2 ) <EOL> reg = Regression ( ) <EOL> result = reg . predict ( ts1 , <NUM_LIT:1> , <NUM_LIT:2> ) <EOL> self . assertEquals ( ts2 , result ) <EOL> def test_confidence_interval ( self ) : <EOL> """<STR_LIT>""" <EOL> data_x = zip ( range ( <NUM_LIT:100> ) , range ( <NUM_LIT:100> ) ) <EOL> overestimations = [ [ <NUM_LIT> , <NUM_LIT> - <NUM_LIT:1> ] , [ <NUM_LIT> , <NUM_LIT> - <NUM_LIT:3> ] , [ <NUM_LIT> , <NUM_LIT> - <NUM_LIT:1> ] , [ <NUM_LIT> , <NUM_LIT> - <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> - <NUM_LIT:1> ] ] <EOL> underestimations = [ [ <NUM_LIT> , <NUM_LIT> + <NUM_LIT:5> ] , [ <NUM_LIT> , <NUM_LIT> + <NUM_LIT:1> ] , [ <NUM_LIT> , <NUM_LIT> + <NUM_LIT:4> ] , [ <NUM_LIT> , <NUM_LIT> + <NUM_LIT:3> ] , [ <NUM_LIT> , <NUM_LIT> + <NUM_LIT:1> ] ] <EOL> data_y = data_x [ : <NUM_LIT> ] + overestimations + underestimations <EOL> ts_x = TimeSeries . from_twodim_list ( data_x ) <EOL> ts_y = TimeSeries . from_twodim_list ( data_y ) <EOL> with patch ( '<STR_LIT>' ) as sample_mock : <EOL> sample_mock . return_value = underestimations + overestimations <EOL> reg = Regression ( ) <EOL> n , m , error = reg . calculate_parameters_with_confidence ( ts_x , ts_y , <NUM_LIT> ) <EOL> self . assertEquals ( <NUM_LIT:0> , n ) <EOL> self . assertEquals ( <NUM_LIT:1> , m ) <EOL> self . assertEquals ( error [ <NUM_LIT:0> ] , - <NUM_LIT:1> ) <EOL> self . assertEquals ( error [ <NUM_LIT:1> ] , <NUM_LIT:3> ) <EOL> class LinearRegressionTest ( unittest . TestCase ) : <EOL> precision = <NUM_LIT:4> <EOL> def lstsq_test ( self ) : <EOL> """<STR_LIT>""" <EOL> volumes = [ <EOL> [ <NUM_LIT> ] , [ <NUM_LIT:20> ] , [ <NUM_LIT:20> ] , [ <NUM_LIT:20> ] , [ <NUM_LIT> ] , [ <NUM_LIT:30> ] , <EOL> [ <NUM_LIT> ] , [ <NUM_LIT:20> ] , [ <NUM_LIT:20> ] , [ <NUM_LIT:20> ] , [ <NUM_LIT> ] , [ <NUM_LIT> ] <EOL> ] <EOL> promoted = [ <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> ] <EOL> ] <EOL> expRes = [ <EOL> [ <NUM_LIT> ] , <EOL> [ <NUM_LIT> ] , <EOL> [ <NUM_LIT> ] , <EOL> [ <NUM_LIT> ] , <EOL> [ <NUM_LIT> ] <EOL> ] <EOL> volMatrix = Matrix ( <NUM_LIT:1> , <NUM_LIT:12> ) <EOL> volMatrix . initialize ( volumes ) <EOL> proMatrix = Matrix ( <NUM_LIT:5> , <NUM_LIT:12> ) <EOL> proMatrix . initialize ( promoted ) <EOL> resMatrix = LinearRegression . lstsq ( proMatrix , volMatrix ) <EOL> for row in range ( resMatrix . get_height ( ) ) : <EOL> for col in range ( resMatrix . get_width ( ) ) : <EOL> self . assertAlmostEqual ( resMatrix . get_value ( col , row ) , expRes [ row ] [ col ] , self . precision ) <EOL> def lstsq_wrong_input_size_test ( self ) : <EOL> """<STR_LIT>""" <EOL> volumes = [ [ <NUM_LIT> ] , [ <NUM_LIT:20> ] , [ <NUM_LIT:20> ] , [ <NUM_LIT:20> ] , [ <NUM_LIT> ] , [ <NUM_LIT:30> ] ] <EOL> promoted = [ <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] <EOL> ] <EOL> volMatrix = Matrix ( <NUM_LIT:1> , <NUM_LIT:6> ) <EOL> volMatrix . initialize ( volumes ) <EOL> proMatrix = Matrix ( <NUM_LIT:5> , <NUM_LIT:2> ) <EOL> proMatrix . initialize ( promoted ) <EOL> self . assertRaises ( ValueError , LinearRegression . lstsq , proMatrix , volMatrix ) <EOL> def lstsq_matrix_test ( self ) : <EOL> """<STR_LIT>""" <EOL> volumes = [ <EOL> [ <NUM_LIT> ] , [ <NUM_LIT:20> ] , [ <NUM_LIT:20> ] , [ <NUM_LIT:20> ] , [ <NUM_LIT> ] , [ <NUM_LIT:30> ] , <EOL> [ <NUM_LIT> ] , [ <NUM_LIT:20> ] , [ <NUM_LIT:20> ] , [ <NUM_LIT:20> ] , [ <NUM_LIT> ] , [ <NUM_LIT> ] <EOL> ] <EOL> promoted = [ <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> ] <EOL> ] <EOL> volMatrix = Matrix ( <NUM_LIT:1> , <NUM_LIT:12> ) <EOL> volMatrix . initialize ( volumes ) <EOL> proMatrix = Matrix ( <NUM_LIT:5> , <NUM_LIT:12> ) <EOL> proMatrix . initialize ( promoted ) <EOL> exRes = [ <EOL> [ <NUM_LIT> ] , <EOL> [ <NUM_LIT> ] , <EOL> [ <NUM_LIT> ] , <EOL> [ <NUM_LIT> ] , <EOL> [ <NUM_LIT> ] <EOL> ] <EOL> res = LinearRegression . lstsq ( proMatrix , volMatrix ) <EOL> for row in xrange ( len ( exRes ) ) : <EOL> for col in xrange ( len ( exRes [ <NUM_LIT:0> ] ) ) : <EOL> self . assertAlmostEqual ( exRes [ row ] [ col ] , res . get_value ( col , row ) , self . precision ) <EOL> def lstsq_value_error_test ( self ) : <EOL> """<STR_LIT>""" <EOL> volumes = [ [ <NUM_LIT> , <NUM_LIT> ] , [ <NUM_LIT:12> , <NUM_LIT> ] , [ <NUM_LIT> , <NUM_LIT> ] ] <EOL> promoted = [ <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:1> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> [ <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:0> ] , <EOL> ] <EOL> volMatrix = Matrix ( <NUM_LIT:2> , <NUM_LIT:3> ) <EOL> volMatrix . initialize ( volumes ) <EOL> proMatrix = Matrix ( <NUM_LIT:5> , <NUM_LIT:3> ) <EOL> proMatrix . initialize ( promoted ) <EOL> self . assertRaises ( ValueError , LinearRegression . lstsq , proMatrix , volMatrix ) </s>
