计算C#中的中位数绝对偏差

时间:2017-04-25 12:11:45

标签: c# math statistics

我需要对数字集执行一些统计计算,我需要计算的一个事项是中位数绝对偏差。我获得了ISO标准,它告诉我的全部是

enter image description here

我不知道如何处理这些信息,因为我没有任何统计数学训练。因此,我无法将上述内容转换为C#函数。

3 个答案:

答案 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));
}