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); }
/// <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); }
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); }