我使用Apache DescriptiveStatistics来计算统计数据,但是存在问题。我有一堆实体生成值,每次迭代我想更新与实体相关的值。
例如,我可以跟踪整个城市1000个不同位置的当前温度,我希望能够计算该城市的一些平均温度:
for (Location location: locations) {
double temperature = location.getCurrentTemperature();
stats.update(location, temperature);
}
// Average: stats.getMean();
有办法吗?
答案 0 :(得分:0)
Apache Commons Math不提供您要求的基于密钥的确切更新。
但是,如果对于每次迭代,您使用来自所有位置的观察,并且如果从迭代到迭代维护位置的数量和顺序,则DescriptiveStatistics
可能有效。
初始化DescriptiveStatistics
实例,窗口大小等于位置数。然后,在每次迭代之后,DescriptiveStatistics的均值应该是所有位置的平均值。
// initialize stats with fixed window size
DescriptiveStatistics stats = new DescriptiveStatistics(locations.size());
// add current value from each location
for (Location location : locations) {
stats.addValue(location.getCurrentTemperature());
}
// after each loop the stats will be computed across all the locations
double average = stats.getMean();