Created
June 24, 2014 03:07
-
-
Save rockarts/8edc3e2a3bc37a02d6da to your computer and use it in GitHub Desktop.
Class For Calculating the Standard Deviation of Arrays
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| require 'minitest/autorun' | |
| # Test case provided by: http://en.wikipedia.org/wiki/Standard_deviation | |
| class TestStandardDeviation < MiniTest::Unit::TestCase | |
| def setup | |
| @values = [2, 4, 4, 4, 5, 5, 7, 9] | |
| end | |
| def test_average_is_calculated | |
| average = @values.inject{ |memo, element| memo + element} / @values.length | |
| assert_equal 5, average | |
| end | |
| def test_mean_is_calculated | |
| average = @values.inject{ |memo, element| memo + element} / @values.length | |
| mean = @values.inject(0){ |memo, element| memo + ((element - average) ** 2).abs} / @values.length | |
| assert_equal 4, mean | |
| end | |
| def test_standard_deviation_is_calculated | |
| average = @values.inject{ |memo, element| memo + element} / @values.length | |
| mean = @values.inject(0){ |memo, element| memo + ((element - average) ** 2).abs} / @values.length | |
| standard_deviation = Math.sqrt(mean) | |
| assert_equal 2, standard_deviation | |
| end | |
| def test_standard_deviation | |
| standard_deviation = StandardDeviation.new(@values) | |
| assert_equal 2, standard_deviation.calculate | |
| end | |
| end | |
| class StandardDeviation | |
| def initialize(values) | |
| @values = values | |
| end | |
| def calculate | |
| average = @values.inject{ |memo, element| memo + element} / @values.length | |
| mean = @values.inject(0){ |memo, element| memo + ((element - average) ** 2).abs} / @values.length | |
| Math.sqrt(mean) | |
| end | |
| end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment