commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Phil Steitz <phil.ste...@gmail.com>
Subject Re: [math] SummaryStatistics.setVarianceImpl Usage
Date Fri, 21 Oct 2011 15:41:00 GMT
On 10/21/11 1:46 AM, Warren Tang wrote:
> 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.

That is a good point. The javadoc for SecondMoment points this out,
saying it "Computes a statistic related to the Second Central
Moment" and then presents the formula used. I would be +0 for making
SecondMoment, ThirdMoment and FourthMoment have package scope (i.e.,
removing them from the public API) because they are nonstandard and
really only there to be used by the updating formulas for Variance,
Skewness and Kurtosis.

Phil
>
>
> 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
>
>


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


Mime
View raw message