我需要對數字集進行一些統計計算,而我需要計算的其中一項是中值絕對偏差。我是用ISO標準提供,所有它告訴我是在C中計算中值絕對偏差
我不知道做什麼用這些信息,因爲我沒有任何統計學的數學訓練。因此,我不能將上面的代碼翻譯成C#函數。
我需要對數字集進行一些統計計算,而我需要計算的其中一項是中值絕對偏差。我是用ISO標準提供,所有它告訴我是在C中計算中值絕對偏差
我不知道做什麼用這些信息,因爲我沒有任何統計學的數學訓練。因此,我不能將上面的代碼翻譯成C#函數。
中位數是的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]);
我會信任你,因爲我喜歡你的鬍子。謝謝。 –
@Captain Kenpachi:不要相信,我寧願跑一些測試;) –
當然。我確實有一套我可以比較的結果。 –
製作簡單的步驟:
1.找到位數med
x[]
陣列的(你可以排序數組,並獲得中間值,但也有更有效的方法)
2.構建陣列的絕對差值d[]
中位
3. d[]
陣列的查找中位數
4.計算值由
如何編寫一個函數,該函數將計算中位數,你會發現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));
}
我應該補充說,另外有用的Math.Net庫不包括MAD功能。 –
whats med(x)?中位數? – WhileTrueSleep
數學沒有這個。你需要爲此創建自己的方法。你需要有一個明確的算法。從他們那裏走下坡路。 –