Exemplo n.º 1
0
        public LinRegressionResults GetRegressionResult(GadgetParameters gadgetOptions, List <string> columnNames, List <DictionaryDTO> inputDtoList, IEnumerable <EwavDataFilterCondition> ewavDataFilters, List <EwavRule_Base> rules, string filterString = "")
        {
            if (gadgetOptions.UseAdvancedDataFilter)
            {
                dh = new DashboardHelper(gadgetOptions, filterString, rules);
                gadgetOptions.UseAdvancedDataFilter  = true;
                gadgetOptions.AdvancedDataFilterText = filterString;
            }
            else
            {
                dh = new DashboardHelper(gadgetOptions, ewavDataFilters, rules);
            }
            DataTable            dt;
            LinRegressionResults results = new LinRegressionResults();

            try
            {
                dt = dh.GenerateTable(columnNames, gadgetOptions);
            }
            catch (Exception e)
            {
                results.ErrorMessage = e.Message;
                return(results);
            }
            Dictionary <string, string> inputVariableList = RegressionManager.ConvertDtoToDic(inputDtoList);


            StatisticsRepository.LinearRegression linearRegression = new StatisticsRepository.LinearRegression();

            StatisticsRepository.LinearRegression.LinearRegressionResults regressionResults = linearRegression.LinearRegression(inputVariableList, dt);

            results.RegressionResults = RegressionManager.ConvertToLinRegResults(regressionResults);

            results.CorrelationCoefficient = results.RegressionResults.CorrelationCoefficient;
            results.RegressionDf           = results.RegressionResults.RegressionDf;
            results.RegressionF            = results.RegressionResults.RegressionF;
            results.RegressionMeanSquare   = results.RegressionResults.RegressionMeanSquare;
            results.RegressionSumOfSquares = results.RegressionResults.RegressionSumOfSquares;
            results.ResidualsDf            = results.RegressionResults.ResidualsDf;
            results.ResidualsMeanSquare    = results.RegressionResults.ResidualsMeanSquare;
            results.ResidualsSumOfSquares  = results.RegressionResults.ResidualsSumOfSquares;
            results.TotalDf           = results.RegressionResults.TotalDf;
            results.TotalSumOfSquares = results.RegressionResults.TotalSumOfSquares;
            results.Variables         = results.RegressionResults.Variables;
            if (results.RegressionResults.ErrorMessage != null)
            {
                results.ErrorMessage = results.RegressionResults.ErrorMessage.Replace("<tlt>", string.Empty).Replace("</tlt>", string.Empty);
            }

            return(results);
        }
Exemplo n.º 2
0
        /// <summary>
        /// GetFactory that converts LogisticRegressionResults values to LogRessionResults(custom) class.
        /// </summary>
        /// <param name="logisticRegressionResults"></param>
        /// <returns></returns>
        internal static LinRegressionResults ConvertToLinRegResults(StatisticsRepository.LinearRegression.LinearRegressionResults linearRegressionResults)
        {
            LinRegressionResults linRegResults = new LinRegressionResults();

            linRegResults.CorrelationCoefficient = linearRegressionResults.correlationCoefficient;
            linRegResults.RegressionDf           = linearRegressionResults.regressionDf;
            linRegResults.RegressionF            = linearRegressionResults.regressionF;
            linRegResults.RegressionMeanSquare   = linearRegressionResults.regressionMeanSquare;
            linRegResults.RegressionSumOfSquares = linearRegressionResults.regressionSumOfSquares;
            linRegResults.ResidualsDf            = linearRegressionResults.residualsDf;
            linRegResults.ResidualsMeanSquare    = linearRegressionResults.residualsMeanSquare;
            linRegResults.ResidualsSumOfSquares  = linearRegressionResults.residualsSumOfSquares;
            linRegResults.TotalDf           = linearRegressionResults.totalDf;
            linRegResults.TotalSumOfSquares = linearRegressionResults.totalSumOfSquares;
            linRegResults.Variables         = ConvertToVariableClass(linearRegressionResults.variables);
            linRegResults.ErrorMessage      = linearRegressionResults.errorMessage;
            return(linRegResults);
        }
        public string BuildInputParams(
            string chartType,
            string chartTitle,
            string independentTitle,
            string dependentTitle,
            string independentValueFormat,
            string dependentValueFormat,
            string interval,
            string intervalUnit,
            object startFrom,
            DataTable regressionTable)
        {
            StringBuilder chartLineSeries = new StringBuilder();

            string independentValueType = "";
            string dependentValueType   = "";

            chartType        = chartType.Replace("\"", "");
            chartTitle       = chartTitle.Replace("\"", "");
            independentTitle = independentTitle.Replace("\"", "");
            dependentTitle   = dependentTitle.Replace("\"", "");

            switch (chartType.ToUpperInvariant().Replace(" ", ""))
            {
            case SilverlightStatics.Area:
                chartType = SilverlightStatics.Area;
                break;

            case SilverlightStatics.Column:
                chartType = SilverlightStatics.Bar;
                break;

            case SilverlightStatics.Bubble:
                chartType = SilverlightStatics.Bubble;
                break;

            case SilverlightStatics.EpiCurve:
                chartType = SilverlightStatics.Histogram;
                break;

            case SilverlightStatics.Bar:
                chartType = SilverlightStatics.RotatedBar;
                break;

            case SilverlightStatics.Line:
                chartType = SilverlightStatics.Line;
                break;

            case SilverlightStatics.Pie:
                chartType = SilverlightStatics.Pie;
                break;

            case SilverlightStatics.Scatter:
                chartType = SilverlightStatics.Scatter;
                break;

            case SilverlightStatics.Stacked:
                chartType = SilverlightStatics.Stacked;
                break;

            case SilverlightStatics.TreeMap:
                chartType = SilverlightStatics.TreeMap;
                break;

            default:
                chartType = SilverlightStatics.Bar;
                break;
            }

            chartLineSeries.Append("chartLineSeries=");

            DataTable distinct = regressionTable.DefaultView.ToTable(true, "SeriesName");

            if (regressionTable.Rows.Count == 0)
            {
                return(string.Empty);
            }

            foreach (DataRow row in distinct.Rows)
            {
                string seriesName = row["SeriesName"].ToString();
                string filter     = string.Format("SeriesName = '{0}'", seriesName);

                DataRow[] regressionData = regressionTable.Select(filter);

                if (chartLineSeries.ToString().EndsWith("chartLineSeries=") == false)
                {
                    chartLineSeries.Append(SilverlightStatics.SeparateLineSeries);
                }

                chartLineSeries.Append("(");
                chartLineSeries.Append("LineSeriesTitle");
                chartLineSeries.Append(seriesName);
                chartLineSeries.Append("LineSeriesTitle");

                Type indepValueType = typeof(string);
                indepValueType       = regressionData[0]["Predictor"].GetType();
                independentValueType = indepValueType.ToString();

                chartLineSeries.Append(SilverlightStatics.IndependentValueFormat);
                chartLineSeries.Append(independentValueFormat);
                chartLineSeries.Append(SilverlightStatics.IndependentValueFormat);

                chartLineSeries.Append(SilverlightStatics.DependentValueFormat);
                chartLineSeries.Append(dependentValueFormat);
                chartLineSeries.Append(SilverlightStatics.DependentValueFormat);

                chartLineSeries.Append(SilverlightStatics.LineSeriesDataString);

                foreach (DataRow regression in regressionData)
                {
                    if (regression["Predictor"] is DateTime)
                    {
                        string dateTimeString = ((DateTime)regression["Predictor"]).ToString(_dateTimeFormat);
                        chartLineSeries.Append(dateTimeString);
                    }
                    else
                    {
                        chartLineSeries.Append(regression["Predictor"].ToString());
                    }

                    chartLineSeries.Append(SilverlightStatics.SeparateIndDepValues);
                    chartLineSeries.Append(regression["Response"].ToString());
                    chartLineSeries.Append(SilverlightStatics.SeparateDataPoints);
                }

                if (chartLineSeries.ToString().EndsWith(SilverlightStatics.SeparateDataPoints))
                {
                    string series = chartLineSeries.ToString().Substring(0, chartLineSeries.Length - SilverlightStatics.SeparateDataPoints.Length);
                    chartLineSeries = new StringBuilder();
                    chartLineSeries.Append(series);
                }

                chartLineSeries.Append(SilverlightStatics.LineSeriesDataString);
            }

            if (chartType == SilverlightStatics.Scatter)
            {
                List <NumericDataValue> dataValues = new List <NumericDataValue>();
                NumericDataValue        minValue   = null;
                NumericDataValue        maxValue   = null;
                foreach (DataRow row in regressionTable.Rows)
                {
                    if (row["Response"].Equals(DBNull.Value) || row["Predictor"].Equals(DBNull.Value))
                    {
                        continue;
                    }
                    NumericDataValue currentValue = new NumericDataValue()
                    {
                        DependentValue = Convert.ToDecimal(row["Response"]), IndependentValue = Convert.ToDecimal(row["Predictor"])
                    };
                    dataValues.Add(currentValue);
                    if (minValue == null)
                    {
                        minValue = currentValue;
                    }
                    else
                    {
                        if (currentValue.IndependentValue < minValue.IndependentValue)
                        {
                            minValue = currentValue;
                        }
                    }
                    if (maxValue == null)
                    {
                        maxValue = currentValue;
                    }
                    else
                    {
                        if (currentValue.IndependentValue > maxValue.IndependentValue)
                        {
                            maxValue = currentValue;
                        }
                    }
                }

                StatisticsRepository.LinearRegression linearRegression  = new StatisticsRepository.LinearRegression();
                Dictionary <string, string>           inputVariableList = new Dictionary <string, string>();
                inputVariableList.Add("Response", "dependvar");
                inputVariableList.Add("intercept", "true");
                inputVariableList.Add("includemissing", "false");
                inputVariableList.Add("p", "0.95");
                inputVariableList.Add("Predictor", "unsorted");

                StatisticsRepository.LinearRegression.LinearRegressionResults regresResults = linearRegression.LinearRegression(inputVariableList, regressionTable);

                object[] result = new object[] { dataValues, regresResults, maxValue, minValue };

                decimal coefficient = Convert.ToDecimal(regresResults.variables[0].coefficient);
                decimal constant    = Convert.ToDecimal(regresResults.variables[1].coefficient);

                NumericDataValue newMaxValue = new NumericDataValue();
                newMaxValue.IndependentValue = maxValue.IndependentValue + 1;
                newMaxValue.DependentValue   = (coefficient * maxValue.IndependentValue) + constant;
                NumericDataValue newMinValue = new NumericDataValue();
                newMinValue.IndependentValue = minValue.IndependentValue - 1;
                newMinValue.DependentValue   = (coefficient * minValue.IndependentValue) + constant;

                chartLineSeries.Append("LineSeriesDataString)^((LineSeriesTitleLinear RegressionLineSeriesTitleIndependentValueFormatIndependentValueFormatDependentValueFormatDependentValueFormatLineSeriesDataString");
                chartLineSeries.Append(newMinValue.IndependentValue.ToString());
                chartLineSeries.Append("^sidv^");
                chartLineSeries.Append(newMinValue.DependentValue.ToString());
                chartLineSeries.Append("^&^");
                chartLineSeries.Append(newMaxValue.IndependentValue.ToString());
                chartLineSeries.Append("^sidv^");
                chartLineSeries.Append(newMaxValue.DependentValue.ToString());
                chartLineSeries.Append("LineSeriesDataString");
            }

            chartLineSeries.Append(")");

            string inputParams = string.Empty;

            if (chartType.Length > 0)
            {
                inputParams += string.Format("chartType={0},", chartType);
            }
            if (chartTitle.Length > 0)
            {
                inputParams += string.Format("chartTitle={0},", chartTitle);
            }

            if (independentTitle.Length > 0)
            {
                inputParams += string.Format("independentLabel={0},", independentTitle);
            }
            if (dependentTitle.Length > 0)
            {
                inputParams += string.Format("dependentLabel={0},", dependentTitle);
            }

            if (independentValueFormat.Length > 0)
            {
                inputParams += string.Format("independentValueFormat={0},", independentValueFormat);
            }
            if (dependentValueFormat.Length > 0)
            {
                inputParams += string.Format("dependentValueFormat={0},", dependentValueFormat);
            }

            if (independentValueType.Length > 0)
            {
                inputParams += string.Format("independentValueType={0},", independentValueType);
            }
            if (dependentValueType.Length > 0)
            {
                inputParams += string.Format("dependentValueType={0},", dependentValueType);
            }

            if (interval.Length > 0)
            {
                inputParams += string.Format("interval={0},", interval);
            }
            if (intervalUnit.Length > 0)
            {
                inputParams += string.Format("intervalUnit={0},", intervalUnit);
            }

            if (startFrom is DateTime)
            {
                startFrom = ((DateTime)startFrom).ToString(_dateTimeFormat);
            }
            else
            {
                startFrom = startFrom.ToString();
            }


            if (((string)startFrom).Length > 0)
            {
                inputParams += string.Format("startFrom={0},", ((string)startFrom));
            }

            inputParams += chartLineSeries.Replace(",", SilverlightStatics.Comma);
            return(inputParams);
        }
Exemplo n.º 4
0
        public ScatterDataDTO GenerateTable(GadgetParameters gadgetOptions,
                                            IEnumerable <EwavDataFilterCondition> ewavDataFilters, List <EwavRule_Base> rules, string filterString = "")
        {
            List <ListOfStringClass> lls = new List <ListOfStringClass>();

            if (gadgetOptions.UseAdvancedDataFilter)
            {
                dh = new DashboardHelper(gadgetOptions, filterString, rules);
                gadgetOptions.UseAdvancedDataFilter  = true;
                gadgetOptions.AdvancedDataFilterText = filterString;
            }
            else
            {
                dh = new DashboardHelper(gadgetOptions, ewavDataFilters, rules);
            }

            MyString ms       = new MyString();
            string   xAxisVar = gadgetOptions.MainVariableName;
            string   yAxisVar = gadgetOptions.CrosstabVariableName;

            List <string> columns = new List <string>();

            columns.Add(xAxisVar);
            columns.Add(yAxisVar);


            DataTable dt = dh.GenerateTable(columns, gadgetOptions);



            List <NumericDataValue> dataValues = new List <NumericDataValue>();
            NumericDataValue        minValue   = null;
            NumericDataValue        maxValue   = null;

            //regressTable.FieldsList.Fields

            //foreach (DataRow row in regressTable.Rows)
            foreach (DataRow row in dt.Rows)
            {
                //if (regressTable.GetValueAtRow(yAxisVar, row).Equals(DBNull.Value) || regressTable.GetValueAtRow(xAxisVar, row).Equals(DBNull.Value))
                if (row[yAxisVar].Equals(DBNull.Value) || row[xAxisVar].Equals(DBNull.Value))
                {
                    continue;
                }
                NumericDataValue currentValue = new NumericDataValue()
                {
                    DependentValue = Convert.ToDecimal(row[yAxisVar]), IndependentValue = Convert.ToDecimal(row[xAxisVar])
                };
                //NumericDataValue currentValue = new NumericDataValue() { DependentValue = Convert.ToDecimal(regressTable.GetValueAtRow(yAxisVar, row)), IndependentValue = Convert.ToDecimal(regressTable.GetValueAtRow(xAxisVar, row)) };
                dataValues.Add(currentValue);
                if (minValue == null)
                {
                    minValue = currentValue;
                }
                else
                {
                    if (currentValue.IndependentValue < minValue.IndependentValue)
                    {
                        minValue = currentValue;
                    }
                }
                if (maxValue == null)
                {
                    maxValue = currentValue;
                }
                else
                {
                    if (currentValue.IndependentValue > maxValue.IndependentValue)
                    {
                        maxValue = currentValue;
                    }
                }
            }

            StatisticsRepository.LinearRegression linearRegression  = new StatisticsRepository.LinearRegression();
            Dictionary <string, string>           inputVariableList = new Dictionary <string, string>();

            inputVariableList.Add(yAxisVar, "dependvar");
            inputVariableList.Add("intercept", "true");
            inputVariableList.Add("includemissing", "false");
            inputVariableList.Add("p", "0.95");
            inputVariableList.Add(xAxisVar, "unsorted");

            StatisticsRepository.LinearRegression.LinearRegressionResults regresResults = linearRegression.LinearRegression(inputVariableList, dt);
            LinRegressionResults results = new LinRegressionResults();

            results = RegressionManager.ConvertToLinRegResults(regresResults);

            //results.CorrelationCoefficient = results.RegressionResults.CorrelationCoefficient;
            //results.RegressionDf = results.RegressionResults.RegressionDf;
            //results.RegressionF = results.RegressionResults.RegressionF;
            //results.RegressionMeanSquare = results.RegressionResults.RegressionMeanSquare;
            //results.RegressionSumOfSquares = results.RegressionResults.RegressionSumOfSquares;
            //results.ResidualsDf = results.RegressionResults.ResidualsDf;
            //results.ResidualsMeanSquare = results.RegressionResults.ResidualsMeanSquare;
            //results.ResidualsSumOfSquares = results.RegressionResults.ResidualsSumOfSquares;
            //results.TotalDf = results.RegressionResults.TotalDf;
            //results.TotalSumOfSquares = results.RegressionResults.TotalSumOfSquares;
            //results.Variables = results.RegressionResults.Variables;
            if (results.ErrorMessage != null)
            {
                results.ErrorMessage = results.ErrorMessage.Replace("<tlt>", string.Empty).Replace("</tlt>", string.Empty);
            }


            ScatterDataDTO scatterDTO = new ScatterDataDTO();

            scatterDTO.DataValues    = dataValues;
            scatterDTO.RegresResults = results;
            scatterDTO.MinValue      = minValue;
            scatterDTO.MaxValue      = maxValue;

            //RegressionManager lrm = new RegressionManager();
            //lls = lrm.ConvertDataTableToList(dt);
            //return new List<ListOfStringClass>();

            return(scatterDTO);
        }