微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何让Apache commons math SummaryStatistics 使用更好的最小值?

如何解决如何让Apache commons math SummaryStatistics 使用更好的最小值?

org.apache.commons.math4.stat.descriptive.SummaryStatistics

SummaryStatistics 似乎使用了 min() 的简单实现。它使用认为零值的内部容器的认构造函数。如果您的数据集大于零,则统计数据永远不会代表真正的最小值。

我希望有一种方法可以使用已知值对其进行初始化以避免这种情况,但我没有看到。有没有办法在不使用我自己的统计实现的情况下解决这个问题?

谢谢

解决方法

SummaryStatitics 使用 Min 单变量统计对象来计算最小值。

基于 3.6.1 版本的实现,Min is initialized to Double.NaN

SummaryStatistics 添加新值时,Min 检查新值是否小于当前最小值,并检查当前最小值是否为 Double.NaNIf either of those conditions is true,the new value becomes the minimum

简而言之,即使所有相加的值都是正数,SummaryStatistics 也能正确计算最小值。

例如:

SummaryStatistics summary = new SummaryStatistics();

System.out.println("Initial Minimum (should be NaN):     " + summary.getMin());
summary.addValue(10.0);
System.out.println("First Value Minimum (should be 10):  " + summary.getMin());
summary.addValue(5.0);
System.out.println("Smaller Value Minimum (should be 5): " + summary.getMin());
summary.addValue(20.0);
System.out.println("Larger Value Minimum (should be 5):  " + summary.getMin());

生成以下输出:

Initial Minimum (should be NaN):     NaN
First Value Minimum (should be 10):  10.0
Smaller Value Minimum (should be 5): 5.0
Larger Value Minimum (should be 5):  5.0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。