diff -r 9535b5c74e85 -r af0513df339f Bag.st --- a/Bag.st Thu Jul 04 17:45:33 2013 +0200 +++ b/Bag.st Thu Jul 04 17:46:20 2013 +0200 @@ -427,6 +427,30 @@ ^ count ! ! +!Bag methodsFor:'statistical functions'! + +variance + "compute the variance over a complete data set (and not of a sample)" + + |m sz sumDeltaSquares| + + m := self arithmeticMean. + sumDeltaSquares := 0. + sz := 0. + self + valuesAndCountsDo:[:val :count | + sumDeltaSquares := sumDeltaSquares + ((val - m) squared). + sz := sz + 1. + ]. + + ^ sumDeltaSquares / sz + + " + TestCase assert:( #(1 1 1 2 2 2 1 1 1 2 2 2) asBag variance = #(1 1 1 2 2 2 1 1 1 2 2 2) variance). + TestCase assert:( #(1 1 1 1 1 0 0 0 0 0) asBag variance = #(1 1 1 1 1 0 0 0 0 0) variance). + " +! ! + !Bag methodsFor:'testing'! includes:anObject @@ -450,10 +474,10 @@ !Bag class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libbasic/Bag.st,v 1.45 2013-06-25 11:23:48 cg Exp $' + ^ '$Header: /cvs/stx/stx/libbasic/Bag.st,v 1.46 2013-07-04 15:46:20 stefan Exp $' ! version_CVS - ^ '$Header: /cvs/stx/stx/libbasic/Bag.st,v 1.45 2013-06-25 11:23:48 cg Exp $' + ^ '$Header: /cvs/stx/stx/libbasic/Bag.st,v 1.46 2013-07-04 15:46:20 stefan Exp $' ! !