如何解决如何让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.NaN
。 If 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 举报,一经查实,本站将立刻删除。