目前,我每天都在汇总大量数据,并且每天我都在计算当前值的中位数。现在我需要将所有这些每日结果汇总到每月的基础上,当然我需要再次计算中位数。
有没有办法计算中位数的中位数并使其在统计上正确?我想避免再次使用原始数据,因为它的数量很大:)
作为一个小的概念证明,我制作了这个 javascript - 也许它有助于找到一种方法:
var aSortedNumberGroups = [];
var aSortedNumbers = [];
var aMedians = [];
Math.median = function(aData)
{
var fMedian = 0;
var iIndex = Math.floor(aData.length/2);
if (!(aData.length%2)) {
fMedian = (aData[iIndex-1]+aData[iIndex])/2;
} else {
fMedian = aData[iIndex];
}
return fMedian;
};
for (var iCurrGroupNum = 0; iCurrGroupNum < 5; ++iCurrGroupNum) {
var aCurrNums = [];
for (var iCurrNum = 0; iCurrNum < 1000; ++iCurrNum) {
var iCurrRandomNumber = Math.floor(Math.random()*10001);
aCurrNums.push(iCurrRandomNumber);
aSortedNumbers.push(iCurrRandomNumber);
}
aCurrNums.sort(function(oCountA,oCountB) {
return (iNumA < iNumB) ? -1 : 1;
});
aSortedNumberGroups.push(aCurrNums);
aMedians.push(Math.median(aCurrNums));
}
console.log("Medians of each group: "+JSON.stringify(aMedians, null, 4));
console.log("Median of medians: "+Math.median(aMedians));
console.log("Median of all: "+Math.median(aSortedNumbers));
正如您将看到的,所有原始数字的中位数和中位数的中位数之间通常有一个巨大的上限,我希望它彼此非常接近。
非常感谢!