我需要对数字集执行一些统计计算,我需要计算的一个事项是中位数绝对偏差。我获得了ISO标准,它告诉我的全部是
我不知道如何处理这些信息,因为我没有任何统计数学训练。因此,我无法将上述内容转换为C#函数。
答案 0 :(得分:4)
Median是排序数组的 middl e元素(如果数组具有偶数项,则为两个中间项的平均值):
double[] source = new double[] { 1, 2, 3, 4, 5 };
Array.Sort(source);
double med = source.Length % 2 == 0
? (source[source.Length / 2 - 1] + source[source.Length / 2]) / 2.0
: source[source.Length / 2];
double[] d = source
.Select(x => Math.Abs(x - med))
.OrderBy(x => x)
.ToArray();
double MADe = 1.483 * (d.Length % 2 == 0
? (d[d.Length / 2 - 1] + d[d.Length / 2]) / 2.0
: d[d.Length / 2]);
答案 1 :(得分:0)
简单的步骤:
1.找到med
数组的中位数x[]
(您可以对数组进行排序并得到中间值,但有更有效的方法)
2.构建具有中位数的绝对差异的数组d[]
3.找到d[]
阵列的中位数
4. Calc MADe
答案 2 :(得分:0)
如何编程计算中位数的函数,你会发现here
然后你的功能看起来像这样
var arrOfValues = new int[] { 1, 3, 5, 7, 9 };
var di = new List<int>(); //List where all di will be stored
var median = calcMedian(); //See the link how to write it
foreach(var elem in arrOfValues)
{
di.Add(Math.Abs(elem - median));
}