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();
        }
예제 #2
0
        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);
        }