Example #1
0
        private void doQuantile()
        {
            REngine engine = REngine.GetInstance();
            daoChart _daoChart = new daoChart();

            DataSet dsRec = new DataSet();
            DataTable dtRec = new DataTable();
            ListDictionary Diets = new ListDictionary();

            dsRec = _daoChart.getRData(1);
            dtRec = dsRec.Tables[0];

            int k = 0;
            for (int j = 0; j < dtRec.Rows.Count; j++)
            {
                if (!Diets.Contains(dtRec.Rows[j]["C"].ToString()))
                {
                    Diets.Add(dtRec.Rows[j]["C"].ToString(), k);
                    k++;
                }
            }
            List<double>[] dDataAll = new List<double>[Diets.Count];
            List<double>[] dDataFemale = new List<double>[Diets.Count];
            List<double>[] dDataMale = new List<double>[Diets.Count];


            foreach (DictionaryEntry de in Diets)
            {
                dDataAll[Convert.ToInt32(de.Value.ToString())] = new List<double>();
                dDataMale[Convert.ToInt32(de.Value.ToString())] = new List<double>();
                dDataFemale[Convert.ToInt32(de.Value.ToString())] = new List<double>();
            }

            for (int i = 0; i < dtRec.Rows.Count; i++)
            {
                if (string.IsNullOrEmpty(dtRec.Rows[i]["WEIGHT"].ToString()))
                    continue;

                foreach (DictionaryEntry entry in Diets)
                {
                    if (entry.Key.ToString().Equals(dtRec.Rows[i]["C"].ToString()))
                    {
                        dDataAll[Convert.ToInt32(entry.Value.ToString())].Add(Convert.ToDouble(dtRec.Rows[i]["WEIGHT"].ToString()));

                        if (dtRec.Rows[i]["SEX"].ToString().Equals("M"))
                            dDataMale[Convert.ToInt32(entry.Value.ToString())].Add(Convert.ToDouble(dtRec.Rows[i]["WEIGHT"].ToString()));
                        else
                            dDataFemale[Convert.ToInt32(entry.Value.ToString())].Add(Convert.ToDouble(dtRec.Rows[i]["WEIGHT"].ToString()));

                        break;
                    }

                }
            }

            int meanLoop = 0;
            foreach (DictionaryEntry de in Diets)
            {
                engine.SetSymbol("ALL", engine.CreateNumericVector(dDataAll[meanLoop].ToArray()));
                var testResult = engine.Evaluate("quantile(ALL)").AsNumeric();
                tbREngine.Text += de.Key.ToString() + " All \n";
                for (int qloop = 0; qloop < 4; qloop++ )
                    tbREngine.Text += testResult[qloop].ToString() + "\n";
                tbREngine.Text += "\n";
                engine.SetSymbol("MALE", engine.CreateNumericVector(dDataMale[meanLoop].ToArray()));
                testResult = engine.Evaluate("quantile(MALE)").AsNumeric();
                tbREngine.Text += de.Key.ToString() + " Male \n";
                for (int qloop = 0; qloop < 4; qloop++)
                    tbREngine.Text += testResult[qloop].ToString() + "\n";
                tbREngine.Text += "\n";
                engine.SetSymbol("FEMALE", engine.CreateNumericVector(dDataFemale[meanLoop].ToArray()));
                testResult = engine.Evaluate("boxplot(FEMALE, vertical=true)").AsNumeric();
                tbREngine.Text += de.Key.ToString() + " Female \n";
                for (int qloop = 0; qloop < 4; qloop++)
                    tbREngine.Text += testResult[qloop].ToString() + "\n";
                tbREngine.Text += "\n";
                meanLoop++;
            }

        }
Example #2
0
        private void doTTest()
        {
            REngine engine = REngine.GetInstance();
            daoChart _daoChart = new daoChart();

            DataSet dsRec = new DataSet();
            DataTable dtRec = new DataTable();
            ListDictionary Diets = new ListDictionary();

            dsRec = _daoChart.getRData(1);
            dtRec = dsRec.Tables[0];

            int k = 0;
            for (int j = 0; j < dtRec.Rows.Count; j++)
            {
                if (!Diets.Contains(dtRec.Rows[j]["C"].ToString()))
                {
                    Diets.Add(dtRec.Rows[j]["C"].ToString(), k);
                    k++;
                }
            }
            List<double>[] dData = new List<double>[Diets.Count];

            foreach (DictionaryEntry de in Diets)
            {
                dData[Convert.ToInt32(de.Value.ToString())] = new List<double>();
            }

            for (int i = 0; i < dtRec.Rows.Count; i++)
            {
                if (string.IsNullOrEmpty(dtRec.Rows[i]["WEIGHT"].ToString()))
                    continue;

                foreach (DictionaryEntry entry in Diets)
                {
                    if (entry.Key.ToString().Equals(dtRec.Rows[i]["C"].ToString()))
                    {
                        dData[Convert.ToInt32(entry.Value.ToString())].Add(Convert.ToDouble(dtRec.Rows[i]["WEIGHT"].ToString()));
                        break;
                    }

                }
            }

            foreach (DictionaryEntry deVector in Diets)
            {
                NumericVector Vgroup1 = engine.CreateNumericVector(dData[Convert.ToInt32(deVector.Value)].ToArray());
                engine.SetSymbol(deVector.Key.ToString(), Vgroup1);
                foreach (DictionaryEntry compareVector in Diets)
                {
                    NumericVector Vgroup2 = engine.CreateNumericVector(dData[Convert.ToInt32(compareVector.Value)].ToArray());
                    if (!deVector.Key.ToString().Equals(compareVector.Key.ToString()))
                    {
                        engine.SetSymbol(compareVector.Key.ToString(), Vgroup2);
                        GenericVector testResult1 = engine.Evaluate("t.test(" + deVector.Key.ToString() + "," +
                        compareVector.Key.ToString() + ")").AsList();
                        double p1 = testResult1["p.value"].AsNumeric().First();
                        tbREngine.Text += deVector.Key.ToString() + "\\" + compareVector.Key.ToString();
                        tbREngine.Text += "\nP1-value = {0:0.000}" + p1 + "\n\n";
                        //engine.ClearGlobalEnvironment();
                    }
                }
            }

        }
Example #3
0
        private void doAnova()
        {
            REngine engine = REngine.GetInstance();
            daoChart _daoChart = new daoChart();

            DataSet dsRec = new DataSet();
            DataTable dtRec = new DataTable();
            ListDictionary Diets = new ListDictionary();
            List<double> dMeasure = new List<double>();
            List<string> sDiet = new List<string>();
 
            dsRec = _daoChart.getRData(1);
            dtRec = dsRec.Tables[0];
            int k = 0;
            for (int j = 0; j < dtRec.Rows.Count; j++)
            {
                if (!Diets.Contains(dtRec.Rows[j]["C"].ToString()))
                {
                    Diets.Add(dtRec.Rows[j]["C"].ToString(), k);
                    sDiet.Add(dtRec.Rows[j]["C"].ToString());
                    k++;
                }
            }
            List<double>[] dDataAll = new List<double>[Diets.Count];
            List<double>[] dDataFemale = new List<double>[Diets.Count];
            List<double>[] dDataMale = new List<double>[Diets.Count];


            foreach (DictionaryEntry de in Diets)
            {
                dDataAll[Convert.ToInt32(de.Value.ToString())] = new List<double>();
                dDataMale[Convert.ToInt32(de.Value.ToString())] = new List<double>();
                dDataFemale[Convert.ToInt32(de.Value.ToString())] = new List<double>();
            }

            for (int i = 0; i < dtRec.Rows.Count; i++)
            {
                if (string.IsNullOrEmpty(dtRec.Rows[i]["WEIGHT"].ToString()))
                    continue;

                foreach (DictionaryEntry entry in Diets)
                {
                    if (entry.Key.ToString().Equals(dtRec.Rows[i]["C"].ToString()))
                    {
                        dDataAll[Convert.ToInt32(entry.Value.ToString())].Add(Convert.ToDouble(dtRec.Rows[i]["WEIGHT"].ToString()));

                        if (dtRec.Rows[i]["SEX"].ToString().Equals("M"))
                            dDataMale[Convert.ToInt32(entry.Value.ToString())].Add(Convert.ToDouble(dtRec.Rows[i]["WEIGHT"].ToString()));
                        else
                            dDataFemale[Convert.ToInt32(entry.Value.ToString())].Add(Convert.ToDouble(dtRec.Rows[i]["WEIGHT"].ToString()));

                        break;
                    }

                }
            }

            /*double[] test = new double[Diets.Count];

            for (int j = 0; j < test.Length; j++)
            {
                test[j] = doMeans(dDataMale[j].ToArray());

            }*/

            List<string> testString = new List<string>();
            List<double> testDouble = new List<double>();
            for (int j = 0; j < dtRec.Rows.Count; j++)
            {
                if (dtRec.Rows[j]["SEX"].ToString().Equals("M"))
                {
                    testString.Add(dtRec.Rows[j]["C"].ToString());
                    testDouble.Add(Convert.ToDouble(dtRec.Rows[j]["WEIGHT"].ToString()));
                }
            }

            engine.SetSymbol("measure", engine.CreateNumericVector(testDouble.ToArray()));
            engine.SetSymbol("diet", engine.CreateCharacterVector(testString.ToArray()));

           /* var res = engine.Evaluate("anova(y ~ a, data = data.frame(y = measure, a = diet))").AsList()["Pr(>F)"].AsNumeric();

            for (int loop = 0; loop < res.Length; loop++)
                tbREngine.Text += res[loop] + "\n\n";*/

            engine.Evaluate("bob <- aov(y~a, data.frame(y = measure, a = diet)");
            var resName = engine.Evaluate("names(bob)").AsList().AsCharacter();
            int loop = 0;
            for (loop = 0; loop < resName.Length; loop++)
                tbREngine.Text += resName[loop].ToString() + "\n";

            var resSum = engine.Evaluate("summary(bob)").AsList().AsCharacter();

            string newsummary = resSum[0].ToString();
            newsummary = newsummary.Replace("list(", string.Empty);
            newsummary = newsummary.Replace("'", string.Empty);
            newsummary = newsummary.Replace("c", string.Empty);
            string[] sumArray = newsummary.Split('=');

            for (loop = 0; loop < sumArray.Length; loop++ )
                tbREngine.Text += sumArray[loop].ToString() + "\n";

           // var res = engine.Evaluate("anova1)").AsList()["Pr(>F)"].AsNumeric();
            /*List<string> test = new List<string>();
            foreach (var loop in res)
                test.Add(loop.ToString());*/

            var res1 = engine.Evaluate("tapply(measure, diet, mean)").AsNumeric();
            var res2 = engine.Evaluate("tapply(measure, diet, var)").AsNumeric();
            var res3 = engine.Evaluate("tapply(measure, diet, length)").AsNumeric();
            var res4 = engine.Evaluate("tapply(measure, diet, sd, na.rm=T)").AsNumeric();
            var res5 = engine.Evaluate("tapply(measure, diet, min, na.rm=T)").AsNumeric();
            var res6 = engine.Evaluate("tapply(measure, diet, max, na.rm=T)").AsNumeric();


            for (int j = 0; j < sDiet.Count; j++)
            {
                tbREngine.Text += sDiet[j].ToString() + "\n";
                tbREngine.Text += "Mean: " + res1[j].ToString() + "\n";
                tbREngine.Text += "Variance: " +res2[j].ToString() + "\n";
                tbREngine.Text += "Length: " + res3[j].ToString() + "\n";
                tbREngine.Text += "Standard Dev: " + res4[j].ToString() + "\n";
                tbREngine.Text += "Minimum: " + res5[j].ToString() + "\n";
                tbREngine.Text += "Maximum: " + res6[j].ToString() + "\n";
                tbREngine.Text += "Standard Error of the Means: " + (Math.Sqrt(Convert.ToDouble(res4[j].ToString()))/(Convert.ToDouble(res3[j].ToString()))).ToString() + "\n\n";
            }

        }