如何用c#計算基于格拉布斯準則的數據異常值檢驗
int[] key = { 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90 };
double[] value = { 3.240, 3.251, 3.261, 3.271, 3.282, 3.292, 3.302, 3.310, 3.319, 3.329, 3.336, 3.345, 3.353, 3.361, 3.368, 3.376, 3.383, 3.391, 3.397, 3.405, 3.411, 3.418, 3.424, 3.430, 3.437, 3.442, 3.449, 3.454, 3.460, 3.466, 3.471, 3.476, 3.482, 3.487, 3.492, 3.496, 3.502, 3.507, 3.511, 3.516, 3.521, 3.525, 3.519, 3.534, 3.539, 3.543, 3.547, 3.511, 3.555, 3.559, 3.563 };
Dictionary<int, double> dic = new Dictionary<int, double>();
//上面為格拉布斯臨界表部分數據;
private void button1_Click(object sender, EventArgs e){for (int i = 0; i < key.Length; i++){dic.Add(key[i], value[i]);}//循環將格拉布斯臨界表放在鍵值對集合string path = @"C:\Users\lenovo\Desktop\dg.txt";string[] dg = File.ReadAllLines(path);double[] dgs = new double[dg.Length];//讀取文檔里的數據并放在數組double sum = 0;for (int i = 0; i < dg.Length; i++){dgs[i] = Convert.ToInt32(dg[i]);sum += dgs[i];}//求出數據和double avg = sum / dg.Length;//數據平均值textBox1.Text = avg.ToString("#0.0000");//顯示數據平均值double fc = 0;for (int i = 0; i < dg.Length; i++){fc+= Math.Pow(dgs[i] - avg, 2);}//方差分母double fcz = fc /( dgs.Length - 1);//方差double fczz = Math.Sqrt(fcz);//標準差textBox2.Text = fczz.ToString("#0.0000");//顯示標準差textBox3.Text = dic[dg.Length].ToString("#0.0000");//根據數據個數顯示g(n,a)double gna = dic[dg.Length] * fczz;//g(n,a)*σ(X)foreach (var item in dgs){if(Math.Abs(item - avg) > gna){double s = item;textBox4.AppendText(item.ToString()+"\r\n");}}//遍歷找出(X-avg)大于g(n,a)*σ(X)的數據并顯示}
總結
以上是生活随笔為你收集整理的C#格拉布斯准则的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。