commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Warren Tang <warren.c.t...@gmail.com>
Subject Re: [math] SummaryStatistics.setVarianceImpl Usage
Date Fri, 21 Oct 2011 08:46:10 GMT
The getSecondMoment does not return the real second central moment which
should be equal to variance. I think it is confusing and should be
stressed in the document.


On 10/17/2011 1:23 AM, Warren Tang wrote:
> Thanks for the workaround. I've reported the bug here:
> https://issues.apache.org/jira/browse/MATH-691
>
> Regards,
> Warren Tang <http://blog.tangcs.com>
>
>
> On Sunday, October 16, 2011 11:24:26 PM, Mikkel Meyer Andersen wrote:
>> Dear Warren,
>>
>> This is probably a bug. Sorry for this. Would you be so kind to report
>> it as described on http://commons.apache.org/math/issue-tracking.html
>> .
>>
>> What you can do instead is this:
>> int[] scores = {1, 2, 3, 4};
>>
>> SummaryStatistics stats = new SummaryStatistics();
>> for(int i : scores) {
>> stats.addValue(i);
>> }
>> double sd = FastMath.sqrt(stats.getSecondMoment() / stats.getN());
>>
>> System.out.println(sd);
>>
>> So, calculating sd as:
>> double sd = FastMath.sqrt(stats.getSecondMoment() / stats.getN());
>>
>> And then there is no need to stats.setVarianceImpl(new Variance(false)).
>>
>> Cheers, Mikkel.
>>
>> 2011/10/16 Warren Tang <warren.c.tang@gmail.com>:
>>> Hi, Mikkel
>>>
>>> I'm using commons-math 2.2. The code to reproduce the issue.
>>>
>>> import org.apache.commons.math.stat.descriptive.SummaryStatistics;
>>> import org.apache.commons.math.stat.descriptive.moment.Variance;
>>>
>>> @Test public void testStandardDeviation() {
>>> int[] scores = {1, 2, 3, 4};
>>> SummaryStatistics stats = new SummaryStatistics();
>>> stats.setVarianceImpl(new Variance(false)); //use "population variance"
>>> for(int i : scores) {
>>> stats.addValue(i);
>>> }
>>> double sd = stats.getStandardDeviation();
>>> System.out.println(sd);
>>> }
>>>
>>> Regards,
>>> Warren Tang <http://blog.tangcs.com>
>>>
>>> On 10/16/2011 10:43 PM, Mikkel Meyer Andersen wrote:
>>>>
>>>> Dear Warren,
>>>>
>>>> Could you provide values for the scores-variable in the current
>>>> example making it possible to reproduce?
>>>>
>>>> Are you in fact using version 1.2 as reflected by the link you gave?
>>>> Or which version are you using?
>>>>
>>>> Cheers, Mikkel.
>>>>
>>>> 2011/10/16 Warren Tang<warren.c.tang@gmail.com>:
>>>>>
>>>>> Hello, everyone
>>>>>
>>>>> I'm trying to get a "population standard deviation
>>>>>
>>>>> <http://commons.apache.org/math/api-1.2/org/apache/commons/math/stat/descriptive/moment/StandardDeviation.html>"
>>>>>
>>>>> (non-bias-corrected) from SummaryStatistics.
>>>>>
>>>>> This is what I did:
>>>>>
>>>>> SummaryStatistics stats = new SummaryStatistics();
>>>>> stats.setVarianceImpl(new Variance(false)); //use "population
>>>>> variance"
>>>>> ( sum((x_i - mean)^2) / n )
>>>>> for(int i : scores) {
>>>>> stats.addValue(i);
>>>>> }
>>>>> double sd = stats.getStandardDeviation();
>>>>>
>>>>> However, the value of "sd" is "NaN". How can I do it correctly?
>>>>>
>>>>> -- 
>>>>> Regards,
>>>>> Warren Tang<http://blog.tangcs.com>
>>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
>>>> For additional commands, e-mail: user-help@commons.apache.org
>>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
>> For additional commands, e-mail: user-help@commons.apache.org
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Mime
View raw message