public void Load(string dataType) { DataType = dataType; var regions = _regionService.GetRegionsByIndex(); var filtSubs = _computeService.GetFilteredSubjectsByComputeGroup(); var grp1 = filtSubs[ComputeGroup.GroupOne]; var grp2 = filtSubs[ComputeGroup.GroupTwo]; List<List<double>> vtxStrs1 = new List<List<double>>(); List<List<double>> vtxStrs2 = new List<List<double>>(); foreach (var r in regions) { vtxStrs1.Add(new List<double>()); vtxStrs2.Add(new List<double>()); } // Calc our global and vertex strengths for our groups List<double> grp1Vals = CalculateStrength(grp1, dataType, vtxStrs1); List<double> grp2Vals = CalculateStrength(grp2, dataType, vtxStrs2); // Sig test the verticies _rsvms = new List<RegionalStrengthViewModel>(); for (int i = 0; i < regions.Count; i++) { var lst1 = vtxStrs1[i]; var lst2 = vtxStrs2[i]; double ybt = 0; double ylt = 0; double yrt = 0; alglib.studentttest2(lst1.ToArray(), lst1.Count, lst2.ToArray(), lst2.Count, out ybt, out ylt, out yrt); RegionalStrengthViewModel rsvm = new RegionalStrengthViewModel { ROI = regions[i], GroupDifference = lst1.Average() - lst2.Average(), PValue = ybt, }; _rsvms.Add(rsvm); } int idx = 1; bool begin = true; var sortedRsvms = _rsvms.OrderBy(r => r.PValue); foreach (var rsvm in sortedRsvms) { double dIdx = (double)idx; double dReg = (double)regions.Count; double qval = (dIdx / dReg) * 0.05; rsvm.SignificantLevel = qval; if (rsvm.PValue < qval && begin) rsvm.Significant = true; else { begin = false; rsvm.Significant = false; } idx++; } AXPlotModel = LoadPlotModel(_rsvms, r => r.X, r => r.Y); SGPlotModel = LoadPlotModel(_rsvms, r => (100 - r.Y), r => r.Z); CRPlotModel = LoadPlotModel(_rsvms, r => r.X, r => r.Z); double bt = 0; double lt = 0; double rt = 0; alglib.mannwhitneyutest(grp1Vals.ToArray(), grp1Vals.Count, grp2Vals.ToArray(), grp2Vals.Count, out bt, out lt, out rt); double tbt = 0; double tlt = 0; double trt = 0; alglib.studentttest2(grp1Vals.ToArray(), grp1Vals.Count, grp2Vals.ToArray(), grp2Vals.Count, out tbt, out tlt, out trt); GrpDiff = (grp1Vals.Average() - grp2Vals.Average()).ToString("0.0000"); PValue = "p" + tbt.ToString("0.0000") + " u" + bt.ToString("0.0000"); var model = new PlotModel() { IsLegendVisible = false }; model.PlotMargins = new OxyThickness(0, 0, 0, 0); model.Axes.Add(new CategoryAxis("", "Group 1", "Group 2")); model.Axes.Add(new LinearAxis(AxisPosition.Left) { MinimumPadding = 0.1, MaximumPadding = 0.1, IntervalLength = 20 }); var s1 = new BoxPlotSeries { Title = "BoxPlotSeries", Fill = OxyColors.White, Stroke = OxyColors.DarkBlue, StrokeThickness = 2, OutlierSize = 2, BoxWidth = 0.4 }; s1.Items.Add(MakeBoxPlotItem(0, grp1Vals)); s1.Items.Add(MakeBoxPlotItem(1, grp2Vals)); model.Series.Add(s1); GlobalPlotModel = model; }
public void Load(string dataType) { DataType = dataType; var regions = _regionService.GetRegionsByIndex(); var filtSubs = _computeService.GetFilteredSubjectsByComputeGroup(); var grp1 = filtSubs[ComputeGroup.GroupOne]; var grp2 = filtSubs[ComputeGroup.GroupTwo]; List <List <double> > vtxStrs1 = new List <List <double> >(); List <List <double> > vtxStrs2 = new List <List <double> >(); foreach (var r in regions) { vtxStrs1.Add(new List <double>()); vtxStrs2.Add(new List <double>()); } // Calc our global and vertex strengths for our groups List <double> grp1Vals = CalculateStrength(grp1, dataType, vtxStrs1); List <double> grp2Vals = CalculateStrength(grp2, dataType, vtxStrs2); // Sig test the verticies _rsvms = new List <RegionalStrengthViewModel>(); for (int i = 0; i < regions.Count; i++) { var lst1 = vtxStrs1[i]; var lst2 = vtxStrs2[i]; double ybt = 0; double ylt = 0; double yrt = 0; alglib.studentttest2(lst1.ToArray(), lst1.Count, lst2.ToArray(), lst2.Count, out ybt, out ylt, out yrt); RegionalStrengthViewModel rsvm = new RegionalStrengthViewModel { ROI = regions[i], GroupDifference = lst1.Average() - lst2.Average(), PValue = ybt, }; _rsvms.Add(rsvm); } int idx = 1; bool begin = true; var sortedRsvms = _rsvms.OrderBy(r => r.PValue); foreach (var rsvm in sortedRsvms) { double dIdx = (double)idx; double dReg = (double)regions.Count; double qval = (dIdx / dReg) * 0.05; rsvm.SignificantLevel = qval; if (rsvm.PValue < qval && begin) { rsvm.Significant = true; } else { begin = false; rsvm.Significant = false; } idx++; } AXPlotModel = LoadPlotModel(_rsvms, r => r.X, r => r.Y); SGPlotModel = LoadPlotModel(_rsvms, r => (100 - r.Y), r => r.Z); CRPlotModel = LoadPlotModel(_rsvms, r => r.X, r => r.Z); double bt = 0; double lt = 0; double rt = 0; alglib.mannwhitneyutest(grp1Vals.ToArray(), grp1Vals.Count, grp2Vals.ToArray(), grp2Vals.Count, out bt, out lt, out rt); double tbt = 0; double tlt = 0; double trt = 0; alglib.studentttest2(grp1Vals.ToArray(), grp1Vals.Count, grp2Vals.ToArray(), grp2Vals.Count, out tbt, out tlt, out trt); GrpDiff = (grp1Vals.Average() - grp2Vals.Average()).ToString("0.0000"); PValue = "p" + tbt.ToString("0.0000") + " u" + bt.ToString("0.0000"); var model = new PlotModel() { IsLegendVisible = false }; model.PlotMargins = new OxyThickness(0, 0, 0, 0); model.Axes.Add(new CategoryAxis("", "Group 1", "Group 2")); model.Axes.Add(new LinearAxis(AxisPosition.Left) { MinimumPadding = 0.1, MaximumPadding = 0.1, IntervalLength = 20 }); var s1 = new BoxPlotSeries { Title = "BoxPlotSeries", Fill = OxyColors.White, Stroke = OxyColors.DarkBlue, StrokeThickness = 2, OutlierSize = 2, BoxWidth = 0.4 }; s1.Items.Add(MakeBoxPlotItem(0, grp1Vals)); s1.Items.Add(MakeBoxPlotItem(1, grp2Vals)); model.Series.Add(s1); GlobalPlotModel = model; }