private void ResetTargetVariableDependentMembers() { DeregisterParameterEvents(); ((IStringConvertibleMatrix)ClassNamesParameter.Value).Columns = 1; ((IStringConvertibleMatrix)ClassNamesParameter.Value).Rows = ClassValuesCache.Count; for (int i = 0; i < Classes; i++) { ClassNamesParameter.Value[i, 0] = "Class " + ClassValuesCache[i]; } ClassNamesParameter.Value.ColumnNames = new List <string>() { "ClassNames" }; ClassNamesParameter.Value.RowNames = ClassValues.Select(s => "ClassValue: " + s); PositiveClassParameter.ValidValues.Clear(); foreach (var className in ClassNames) { PositiveClassParameter.ValidValues.Add(new StringValue(className).AsReadOnly()); } ((IStringConvertibleMatrix)ClassificationPenaltiesParameter.Value).Rows = Classes; ((IStringConvertibleMatrix)ClassificationPenaltiesParameter.Value).Columns = Classes; ClassificationPenaltiesParameter.Value.RowNames = ClassNames.Select(name => "Actual " + name); ClassificationPenaltiesParameter.Value.ColumnNames = ClassNames.Select(name => "Estimated " + name); for (int i = 0; i < Classes; i++) { for (int j = 0; j < Classes; j++) { if (i != j) { ClassificationPenaltiesParameter.Value[i, j] = 1; } else { ClassificationPenaltiesParameter.Value[i, j] = 0; } } } RegisterParameterEvents(); }
public AnovaResult Anova(double probability) { if (probability > 1 || probability < 0) { throw new Exception("Probability must be between 1 and 0"); } //Verify if all groups have the same number of datapoints List <int> noValues = ClassValues.Select(a => a.Value.Count).Distinct().ToList(); if (noValues.Count != 1) { Console.WriteLine(Locus + " does not present quantitation values for all replicates"); throw new Exception("Number of values in all classes must be the same for anova test"); } string allGroups = string.Join(",", MyChart.Series.Select(a => a.Name).ToList()); AnovaResult result = MyChart.DataManipulator.Statistics.Anova(probability, allGroups); return(result); }