diff options
author | Christoph Helma <helma@in-silico.ch> | 2010-07-20 11:31:27 +0200 |
---|---|---|
committer | Christoph Helma <helma@in-silico.ch> | 2010-07-20 11:31:27 +0200 |
commit | 5f243f1e9e0a8e12cd8a2267bcec3140d21bf445 (patch) | |
tree | e755d51a453ed710dd4d78437b197c408d5687eb /lib/predictions.rb | |
parent | 2963e4f7c355394130297ad181cd30f5e78d1017 (diff) | |
parent | 2a4fe800d1fad7da3a835f664ce1af864e827c0f (diff) |
Merge commit 'mguetlein/test'
Conflicts:
application.rb
Diffstat (limited to 'lib/predictions.rb')
-rw-r--r-- | lib/predictions.rb | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/lib/predictions.rb b/lib/predictions.rb index a183534..f6351f8 100644 --- a/lib/predictions.rb +++ b/lib/predictions.rb @@ -97,6 +97,12 @@ module Lib @variance_predicted = 0 @variance_actual = 0 + + @sum_actual = 0 + @sum_predicted = 0 + @sum_multiply = 0 + @sum_squares_actual = 0 + @sum_squares_predicted = 0 end end @@ -134,6 +140,12 @@ module Lib @prediction_mean, old_prediction_mean, predicted_value ) @variance_actual = Util.compute_variance( @variance_actual, @num_predicted, @actual_mean, old_actual_mean, actual_value ) + + @sum_actual += actual_value + @sum_predicted += predicted_value + @sum_multiply += (actual_value*predicted_value) + @sum_squares_actual += actual_value**2 + @sum_squares_predicted += predicted_value**2 end end end @@ -418,9 +430,23 @@ module Lib Math.sqrt(@sum_abs_error / (@num_with_actual_value - @num_unpredicted).to_f) end + def sum_squared_error + return @sum_squared_error + end + def r_square - return 0 if @variance_actual==0 - return @variance_predicted / @variance_actual + return sample_correlation_coefficient ** 2 + end + + def sample_correlation_coefficient + # formula see http://en.wikipedia.org/wiki/Correlation_and_dependence#Pearson.27s_product-moment_coefficient + return ( @num_predicted * @sum_multiply - @sum_actual * @sum_predicted ) / + ( Math.sqrt( @num_predicted * @sum_squares_actual - @sum_actual**2 ) * + Math.sqrt( @num_predicted * @sum_squares_predicted - @sum_predicted**2 ) ) + end + + def total_sum_of_squares + return @variance_actual * ( @num_predicted - 1 ) end def target_variance_predicted |