private List <int> getDataByCriteria(VoivodeshipNames name, int sportIndex, StatisticsDataFields field) { List <int> dataList = new List <int>(); if (name != VoivodeshipNames.None && sportIndex >= 0) { dataList.Add(VoivodeshipData[(int)name][sportIndex].GetByFiled(field)); } else if (name != VoivodeshipNames.None) { for (int i = 0; i < VoivodeshipData[(int)name].Length; i++) { dataList.Add(VoivodeshipData[(int)name][i].GetByFiled(field)); } } else if (sportIndex >= 0) { for (int i = 0; i < VoivodeshipData.Length; i++) { dataList.Add(VoivodeshipData[i][sportIndex].GetByFiled(field)); } } else { for (int i = 0; i < VoivodeshipData.Length; i++) { for (int j = 0; j < VoivodeshipData[i].Length; j++) { dataList.Add(VoivodeshipData[i][j].GetByFiled(field)); } } } return(dataList); }
public int GetMedian(VoivodeshipNames name, int sportIndex, StatisticsDataFields field) { List <int> data = getDataByCriteria(name, sportIndex, field); data.Sort(); return(getMedian(data)); }
public double GetSkewness(VoivodeshipNames name, int sportIndex, StatisticsDataFields field) { List <int> data = getDataByCriteria(name, sportIndex, field); double arithmeticAverage = getArithmeticAverage(data); double standardDeviation = getStandardDeviation(data); data.Sort(); double median = getMedian(data); return(3 * ((arithmeticAverage - median) / standardDeviation)); }
public List <Point> GetPointsByCriteria(VoivodeshipNames name, int sportIndex, StatisticsDataFields fieldX, StatisticsDataFields fieldY) { List <Point> points = new List <Point>(); if (name != VoivodeshipNames.None && sportIndex >= 0) { points.Add(new Point( VoivodeshipData[(int)name][sportIndex].GetByFiled(fieldX), VoivodeshipData[(int)name][sportIndex].GetByFiled(fieldY) )); } else if (name != VoivodeshipNames.None) { for (int i = 0; i < VoivodeshipData[(int)name].Length; i++) { points.Add(new Point( VoivodeshipData[(int)name][i].GetByFiled(fieldX), VoivodeshipData[(int)name][i].GetByFiled(fieldY) )); } } else if (sportIndex >= 0) { for (int i = 0; i < VoivodeshipData.Length; i++) { points.Add(new Point( VoivodeshipData[i][sportIndex].GetByFiled(fieldX), VoivodeshipData[i][sportIndex].GetByFiled(fieldY) )); } } else { for (int i = 0; i < VoivodeshipData.Length; i++) { for (int j = 0; j < VoivodeshipData[i].Length; j++) { points.Add(new Point( VoivodeshipData[i][j].GetByFiled(fieldX), VoivodeshipData[i][j].GetByFiled(fieldY) )); } } } return(points); }
private void updateResults() { string selectedName = (string)voivodeshipComboBox.SelectedValue; VoivodeshipNames selectedArea = VoivodeshipNamesExtensions.Parse(selectedName); int sportIndex = sportComboBox.SelectedIndex - 1; StatisticsDataFields dataField = (StatisticsDataFields)propertyComboBox.SelectedIndex; double arithmeticAverage = dataHolder.GetArithmeticAverage(selectedArea, sportIndex, dataField); int median = dataHolder.GetMedian(selectedArea, sportIndex, dataField); String dominant = ""; foreach (int dominantValue in dataHolder.GetDominant(selectedArea, sportIndex, dataField)) { dominant += dominantValue + ", "; } double quarterDeviation = dataHolder.GetQuarterDeviation(selectedArea, sportIndex, dataField); double standardDeviation = dataHolder.GetStandardDeviation(selectedArea, sportIndex, dataField); double skewness = dataHolder.GetSkewness(selectedArea, sportIndex, dataField); double giniCoefficient = dataHolder.GetGiniCoefficient(selectedArea, sportIndex, dataField); String skewnessDescription = String.Format("{0:0.00} ", skewness); if (skewness < 0) { skewnessDescription += "(Lewostronna asymetria)"; } else if (skewness > 0) { skewnessDescription += "(Prawostronna asymetria)"; } else { skewnessDescription += "(Rozkład symetryczny)"; } arithmeticAverageLabel.Content = String.Format("{0:0.00}", arithmeticAverage); medianLabel.Content = median.ToString(); dominantLabel.Content = dominant; quarterDeviationLabel.Content = String.Format("{0:0.00}", quarterDeviation); standardDeviationLabel.Content = String.Format("{0:0.00}", standardDeviation); skewnessLabel.Content = skewnessDescription; giniCoefficientLabel.Content = String.Format("{0:0.00}", giniCoefficient); }
private void update() { string axisX = (string)axisXComboBox.SelectedValue; string axisY = (string)axisYComboBox.SelectedValue; int sportIndex = sportComboBox.SelectedIndex - 1; string selectedName = (string)voivodeshipComboBox.SelectedValue; VoivodeshipNames selectedArea = VoivodeshipNamesExtensions.Parse(selectedName); StatisticsDataFields dataFieldX = (StatisticsDataFields)axisXComboBox.SelectedIndex; StatisticsDataFields dataFieldY = (StatisticsDataFields)axisYComboBox.SelectedIndex; chart.ChartAreas["chartArea"].AxisX.Title = axisX; chart.ChartAreas["chartArea"].AxisY.Title = axisY; chart.Series["series"].Points.Clear(); List <Point> points = dataHolder.GetPointsByCriteria(selectedArea, sportIndex, dataFieldX, dataFieldY); double pearsonCoefficient = dataHolder.GetPearsonCorrelationCoefficient(points); string pearsonCoefficientDescription = String.Format("{0:0.00} ", pearsonCoefficient); if (pearsonCoefficient < 0.2) { pearsonCoefficientDescription += "(brak związku liniowego)"; } else if (pearsonCoefficient < 0.4) { pearsonCoefficientDescription += "(słaba zależność)"; } else if (pearsonCoefficient < 0.7) { pearsonCoefficientDescription += "(umiarkowana zależność)"; } else if (pearsonCoefficient < 0.9) { pearsonCoefficientDescription += "(dość silna zależność)"; } else { pearsonCoefficientDescription += "(bardzo silna zależność)"; } pearsonCoefficientLabel.Content = pearsonCoefficientDescription; foreach (Point point in points) { chart.Series["series"].Points.AddXY(point.X, point.Y); } }
public double GetGiniCoefficient(VoivodeshipNames name, int sportIndex, StatisticsDataFields field) { List <int> data = getDataByCriteria(name, sportIndex, field); data.Sort(); int sum = 0; double avg = 0; for (int i = 0; i < data.Count; i++) { sum += (2 * i - data.Count - 1) * data[i]; avg += data[i]; } avg /= data.Count; return(sum / ((data.Count * data.Count) * avg)); }
public List <int> GetDominant(VoivodeshipNames name, int sportIndex, StatisticsDataFields field) { List <int> data = getDataByCriteria(name, sportIndex, field); data.Sort(); int maxValue = int.MinValue; int count; Dictionary <int, int> dictionary = new Dictionary <int, int>(); foreach (int value in data) { if (dictionary.TryGetValue(value, out count)) { count += 1; dictionary[value] = count; } else { count = 1; dictionary.Add(value, count); } if (count > maxValue) { maxValue = count; } } List <int> results = new List <int>(); foreach (KeyValuePair <int, int> entry in dictionary) { if (entry.Value == maxValue) { results.Add(entry.Key); } } return(results); }
public int GetByFiled(StatisticsDataFields field) { switch (field) { case StatisticsDataFields.Sections: return(Sections); case StatisticsDataFields.Total: return(Total); case StatisticsDataFields.Womens: return(Womens); case StatisticsDataFields.Boys: return(Boys); case StatisticsDataFields.Girls: return(Girls); } return(0); }
public double GetQuarterDeviation(VoivodeshipNames name, int sportIndex, StatisticsDataFields field) { List <int> data = getDataByCriteria(name, sportIndex, field); data.Sort(); if (data.Count < 2) { return(0); } double lowerQuartile, upperQuartile; int index; if (data.Count % 4 == 0) { index = data.Count / 4; lowerQuartile = (data[index] + data[index + 1]) / 2; } else { index = (int)Math.Round(data.Count / 4.0); lowerQuartile = data[index]; } if ((3 * data.Count) % 4 == 0) { index = (3 * data.Count) / 4; upperQuartile = (data[index] + data[index + 1]) / 2; } else { index = (int)Math.Round((3 * data.Count) / 4.0); upperQuartile = data[index]; } return((upperQuartile - lowerQuartile) / 2.0); }
public double GetStandardDeviation(VoivodeshipNames name, int sportIndex, StatisticsDataFields field) { List <int> data = getDataByCriteria(name, sportIndex, field); return(getStandardDeviation(data)); }
public double GetArithmeticAverage(VoivodeshipNames name, int sportIndex, StatisticsDataFields field) { List <int> data = getDataByCriteria(name, sportIndex, field); return(getArithmeticAverage(data)); }