2017-04-25 54 views
1

我需要對數字集進行一些統計計算,而我需要計算的其中一項是中值絕對偏差。我是用ISO標準提供,所有它告訴我是在C中計算中值絕對偏差

enter image description here

我不知道做什麼用這些信息,因爲我沒有任何統計學的數學訓練。因此,我不能將上面的代碼翻譯成C#函數。

+0

我應該補充說,另外有用的Math.Net庫不包括MAD功能。 –

+0

whats med(x)?中位數? – WhileTrueSleep

+0

數學沒有這個。你需要爲此創建自己的方法。你需要有一個明確的算法。從他們那裏走下坡路。 –

回答

3

中位數是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]); 
+2

我會信任你,因爲我喜歡你的鬍子。謝謝。 –

+1

@Captain Kenpachi:不要相信,我寧願跑一些測試;) –

+1

當然。我確實有一套我可以比較的結果。 –

0

製作簡單的步驟:
1.找到位數medx[]陣列的(你可以排序數組,並獲得中間值,但也有更有效的方法)
2.構建陣列的絕對差值d[]中位
3. d[]陣列的查找中位數
4.計算值由

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