如何用c#計(jì)算基于格拉布斯準(zhǔn)則的數(shù)據(jù)異常值檢驗(yàn)
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>();
//上面為格拉布斯臨界表部分?jǐn)?shù)據(jù);
private void button1_Click(object sender, EventArgs e){for (int i = 0; i < key.Length; i++){dic.Add(key[i], value[i]);}//循環(huán)將格拉布斯臨界表放在鍵值對(duì)集合string path = @"C:\Users\lenovo\Desktop\dg.txt";string[] dg = File.ReadAllLines(path);double[] dgs = new double[dg.Length];//讀取文檔里的數(shù)據(jù)并放在數(shù)組double sum = 0;for (int i = 0; i < dg.Length; i++){dgs[i] = Convert.ToInt32(dg[i]);sum += dgs[i];}//求出數(shù)據(jù)和double avg = sum / dg.Length;//數(shù)據(jù)平均值textBox1.Text = avg.ToString("#0.0000");//顯示數(shù)據(jù)平均值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);//標(biāo)準(zhǔn)差textBox2.Text = fczz.ToString("#0.0000");//顯示標(biāo)準(zhǔn)差textBox3.Text = dic[dg.Length].ToString("#0.0000");//根據(jù)數(shù)據(jù)個(gè)數(shù)顯示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)的數(shù)據(jù)并顯示}
總結(jié)
以上是生活随笔為你收集整理的C#格拉布斯准则的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。