public static void CalculareFrociniCriterion(List <KeyValuePair <DateTime, double> > data, double standartDeviation, double expectedValue, out double criterion, out double criticalCriterion, string signLevel) { standartDeviation = Math.Sqrt(data.Sum(item => Math.Pow(item.Value - expectedValue, 2)) / (data.Count)); var z = (from item in data select(item.Value - expectedValue) / standartDeviation); DataBaseND db = new DataBaseND() { nameDB = "DBCriterionND.db" }; db.ConnectionBD(); int id_laplas = 2; Dictionary <double, double> laplasValues = db.CriterionValue("0", id_laplas); db.CloseConnectionDB(); var f = (from item in z select(0.5 + FindLaplFunctionValue(laplasValues, item))).ToList(); double sum = 0; for (int index = 1; index <= f.Count(); index++) { sum += Math.Abs(f[index - 1] - (Convert.ToDouble(index) - 0.5) / Convert.ToDouble(f.Count())); } if (f.Count() < 5) { throw new Exception("Данных слишком мало. Необходимо хотя бы больше 5."); } int count; if (f.Count() > 21) { count = 21; } else { count = f.Count(); } int id_criterion = 4; criticalCriterion = FindCriticalK(count, id_criterion, signLevel); double sqrt_countData = Math.Sqrt(f.Count()); criterion = (1 / sqrt_countData) * sum; }
public Data() { if (!string.IsNullOrEmpty(Properties.Settings.Default.Languages)) { System.Threading.Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.GetCultureInfo(Properties.Settings.Default.Languages); System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo(Properties.Settings.Default.Languages); } //костыль с базой данных для статистического анализа DataBaseND db = new DataBaseND() { nameDB = "Resources\\BDUsersND.db" }; db.UpdateUserStatus(); db.CloseConnectionDB(); InitializeComponent(); }
public static void CalculateKolmogorovSmirnovCriterion(List <KeyValuePair <DateTime, double> > data, double standartDeviation, double expectedValue, out double criterion, out double criticalCriterion, string signLevel) { standartDeviation = Math.Sqrt(data.Sum(item => Math.Pow(item.Value - expectedValue, 2)) / (data.Count)); var z = (from item in data select(item.Value - expectedValue) / standartDeviation); DataBaseND db = new DataBaseND() { nameDB = "DBCriterionND.db" }; db.ConnectionBD(); int id_laplas = 2; Dictionary <double, double> laplasValues = db.CriterionValue("0", id_laplas); db.CloseConnectionDB(); var f = (from item in z select(0.5 + FindLaplFunctionValue(laplasValues, item))).ToList(); List <double> d_plus = new List <double>(); List <double> d_minus = new List <double>(); for (int index = 1; index <= f.Count(); index++) { d_plus.Add(Convert.ToDouble(index) / Convert.ToDouble(f.Count()) - f[index - 1]); d_minus.Add(f[index - 1] - Convert.ToDouble((index - 1)) / Convert.ToDouble(f.Count())); } double d_n; if (d_plus.Max() > d_minus.Max()) { d_n = d_plus.Max(); } else { d_n = d_minus.Max(); } int id_criterion = 3; criticalCriterion = FindCriticalK(0, id_criterion, signLevel); double sqrt_countData = Math.Sqrt(f.Count()); criterion = d_n * (sqrt_countData - 0.01 + (0.85 / sqrt_countData)); }
public static void CalculatePirsonCriteria(List <KeyValuePair <DateTime, double> > data, List <KeyValuePair <string, double> > columns, double standartDeviation, double expectedValue, double delta, out double criterion, out double criticalCriterion, string signLevel) { DataBaseND db = new DataBaseND() { nameDB = "DBCriterionND.db" }; db.ConnectionBD(); Dictionary <double, double> laplasValues = db.CriterionValue("0", 2); db.CloseConnectionDB(); /*var tmp = manager.GetString("lapl").Split(new string[] { Environment.NewLine }, * StringSplitOptions.RemoveEmptyEntries).Select(item => item.Replace(".", ","));*/ // var tmp = File.ReadAllLines("lapl.txt").Select(item => item.Replace('.', ',')); /* foreach (var item in tmp) * laplasValues.Add(double.Parse(item.Split(' ')[0], new CultureInfo("ru-RU")), double.Parse(item.Split(' ')[1], new CultureInfo("ru-RU")));*/ /*var xAvg = (from item in columns * let xLeft = double.Parse(item.Key.Split(new string[] { " - " }, StringSplitOptions.RemoveEmptyEntries)[0]) * let xRight = double.Parse(item.Key.Split(new string[] { " - " }, StringSplitOptions.RemoveEmptyEntries)[1]) * let xCenter = (xRight + xLeft) / 2 * select xCenter * item.Value * data.Count).Sum() / data.Count;*/ var x1 = (from item in columns let xi = double.Parse(item.Key.Split(new string[] { " - " }, StringSplitOptions.RemoveEmptyEntries)[0]) select(xi - expectedValue) / standartDeviation); var x2 = (from item in columns let xi = double.Parse(item.Key.Split(new string[] { " - " }, StringSplitOptions.RemoveEmptyEntries)[1]) select(xi - expectedValue) / standartDeviation); var p = (from item in x1.Zip(x2, (first, second) => new { item1 = first, item2 = second }) select(FindLaplFunctionValue(laplasValues, item.item2) - FindLaplFunctionValue(laplasValues, item.item1)) * data.Count); var k = (from item in columns.Zip(p, (first, second) => new { item1 = first, item2 = second }) select Math.Pow((item.item1.Value * data.Count * delta) - item.item2, 2) / item.item2); double sumK = k.Sum(); double critK = FindCriticalK(columns.Count - 2 - 1, 1, signLevel); criterion = sumK; criticalCriterion = critK; var c = (from item in columns select(item.Value * delta * data.Count)); }