【发布时间】:2014-04-22 11:34:09
【问题描述】:
您好,我目前正在比较 Matlab 和 Apache 函数之间的统计数据。 这里 Apache 函数在 Java 中进行了测试。 对于相同的数据集,我从双精度数组(double[])中得到不同的结果,如下所示:
---------------------------------------
Matlab vs Apache
---------------------------------------
max = 0.5451 vs 0.5450980392156862
min = 0.4941 vs 0.49411764705882355
var = 5.4154e-05 vs 5.415357603461868E-5
std = 0.0074 vs 0.007358911334879547
mean = 0.5206 vs 0.5205525290240967
kurtosis = 3.3442 vs 0.35227427833465486
skewness = 0.2643 vs 0.26466432504210746
我检查并重新检查了我的数据,Matlabs 中的每个值都与 Java 中使用的相同。 在这里我们可以看到所有统计数据都是相同的,除了峰度。
峰度的计算方式是否可能与 Matlab 和 Apache 库不同? 如果是,那么我应该信任哪些数据?
编辑
我的数据是图像矩阵的子集(包含像素值)。 对于每个子集,我计算上述统计数据。每次,除了峰度之外,所有统计数据都完美匹配。
计算我的子集峰度的matlab代码如下:
kurtosis( sub(:) ); // sub is a n x m matrix
而我在 Java 中使用的是:
import org.apache.commons.math3.stat.descriptive.moment.Kurtosis;
// ...
Kurtosis kurt = new Kurtosis();
System.out.println("-kurtosis: " + kurt.evaluate(subImg) );
subImg 是一个 double[n x m] 数组。
【问题讨论】:
标签: apache matlab statistics kurtosis