维基媒体 /running-stat
在线统计算法的PHP实现
v2.1.0
2022-07-20 12:56 UTC
Requires
- php: >=7.2.0
Requires (Dev)
- mediawiki/mediawiki-codesniffer: 39.0.0
- mediawiki/mediawiki-phan-config: 0.11.1
- mediawiki/minus-x: 1.1.1
- ockcyp/covers-validator: 1.4.0
- php-parallel-lint/php-console-highlighter: 1.0.0
- php-parallel-lint/php-parallel-lint: 1.3.2
- phpunit/phpunit: ^8.5
- wikimedia/testing-access-wrapper: ^1.0.0
README
RunningStat可以在在线、常量空间内计算一组点的中心趋势、形状和极值。它使用一种巧妙的一次性算法来计算方差,详情见此处:https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#On-line_algorithm
这个特定的实现将John D. Cook的样本C++实现改编为PHP。另请参阅
RunningStat实例可以组合。结果RunningStat具有与它被用来积累每个点时的相同状态。这个特性很有吸引力,因为它允许单独的执行线程并行处理一个流。更重要的是,可以在聚合过程的中间点分阶段积累个别点,而不损失精度。用户浏览器的JavaScript性能样本可以积累并与来自其他浏览器的性能数据聚合器的测量结果相结合。在跟踪的Web请求过程中多次调用的函数可以在传输到性能数据聚合器之前在MediaWiki中积累。
使用方法
以下是使用它的方法
use Wikimedia\RunningStat; $rstat = new RunningStat(); foreach ( [ 49.7168, 74.3804, 7.0115, 96.5769, 34.9458, 36.9947, 33.8926, 89.0774, 23.7745, 73.5154, 86.1322, 53.2124, 16.2046, 73.5130, 10.4209, 42.7299, 49.3330, 47.0215, 34.9950, 18.2914, ] as $sample ) { $rstat->addObservation( $sample ); } printf( "n = %d; min = %.2f; max = %.2f; mean = %.2f; variance = %.2f; stddev = %.2f\n", count( $rstat ), $rstat->min, $rstat->max, $rstat->getMean(), $rstat->getVariance(), $rstat->getStdDev() ); // Output: // n = 20; min = 7.01; max = 96.58; mean = 47.59; variance = 725.71; stddev = 26.94
许可证
GPL-2.0-or-later