diff options
author | mguetlein <martin.guetlein@gmail.com> | 2011-05-24 09:59:02 +0200 |
---|---|---|
committer | mguetlein <martin.guetlein@gmail.com> | 2011-05-24 09:59:02 +0200 |
commit | eeb4f570f8e991b77ae5e9a7d9a58cc6b2dd115a (patch) | |
tree | 5bca0c3dbb47e4f97eac3ffc7b645cce093b3125 | |
parent | d67f6cd4e1242fce926632c948035d2776745273 (diff) |
fix r-square computation
-rwxr-xr-x | lib/predictions.rb | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/predictions.rb b/lib/predictions.rb index f97b764..4a15e1d 100755 --- a/lib/predictions.rb +++ b/lib/predictions.rb @@ -481,7 +481,12 @@ module Lib end def r_square - return sample_correlation_coefficient ** 2 + #return sample_correlation_coefficient ** 2 + + # see http://en.wikipedia.org/wiki/Coefficient_of_determination#Definitions + # see http://web.maths.unsw.edu.au/~adelle/Garvan/Assays/GoodnessOfFit.html + r_2 = 1 - residual_sum_of_squares / total_sum_of_squares + ( r_2.infinite? || r_2.nan? ) ? 0 : r_2 end def sample_correlation_coefficient @@ -493,7 +498,16 @@ module Lib end def total_sum_of_squares - return @variance_actual * ( @num_predicted - 1 ) + #return @variance_actual * ( @num_predicted - 1 ) + sum = 0 + @predicted_values.size.times do |i| + sum += (@actual_values[i]-@actual_mean)**2 if @predicted_values[i]!=nil + end + sum + end + + def residual_sum_of_squares + sum_squared_error end def target_variance_predicted |