public void RegressTest() { MultipleLinearRegression target = new MultipleLinearRegression(1, true); double[][] inputs = { new double[] { 80 }, new double[] { 60 }, new double[] { 10 }, new double[] { 20 }, new double[] { 30 }, }; double[] outputs = { 20, 40, 30, 50, 60 }; double error = target.Regress(inputs, outputs); double slope = target.Coefficients[0]; double intercept = target.Coefficients[1]; Assert.AreEqual(-0.264706, slope, 1e-5); Assert.AreEqual(50.588235, intercept, 1e-5); Assert.AreEqual(761.764705, error, 1e-5); double r = target.CoefficientOfDetermination(inputs, outputs); Assert.AreEqual(0.23823529, r, 1e-6); string str = target.ToString(null, System.Globalization.CultureInfo.GetCultureInfo("pt-BR")); Assert.AreEqual("y(x0) = -0,264705882352941*x0 + 50,5882352941176", str); }
public void RegressTest2() { MultipleLinearRegression target = new MultipleLinearRegression(1, false); double[][] inputs = { new double[] { 80, 1 }, new double[] { 60, 1 }, new double[] { 10, 1 }, new double[] { 20, 1 }, new double[] { 30, 1 }, }; double[] outputs = { 20, 40, 30, 50, 60 }; double error = target.Regress(inputs, outputs); double slope = target.Coefficients[0]; double intercept = target.Coefficients[1]; Assert.AreEqual(-0.264706, slope, 1e-5); Assert.AreEqual(50.588235, intercept, 1e-5); Assert.AreEqual(761.764705, error, 1e-5); double r = target.CoefficientOfDetermination(inputs, outputs); Assert.AreEqual(0.23823529, r, 1e-6); string str = target.ToString(); Assert.AreEqual("y(x0, x1) = -0,264705882352942*x0 + 50,5882352941177*x1", str); }
public void RegressTest2() { var target = new MultipleLinearRegression(2, false); Assert.IsFalse(target.HasIntercept); double[][] inputs = { new double[] { 80, 1 }, new double[] { 60, 1 }, new double[] { 10, 1 }, new double[] { 20, 1 }, new double[] { 30, 1 }, }; double[] outputs = { 20, 40, 30, 50, 60 }; double error = target.Regress(inputs, outputs); Assert.AreEqual(2, target.NumberOfInputs); Assert.AreEqual(1, target.NumberOfOutputs); double slope = target.Coefficients[0]; double intercept = target.Coefficients[1]; Assert.AreEqual(-0.264706, slope, 1e-5); Assert.AreEqual(50.588235, intercept, 1e-5); Assert.AreEqual(761.764705, error, 1e-5); double r = target.CoefficientOfDetermination(inputs, outputs); Assert.AreEqual(0.23823529, r, 1e-6); string str = target.ToString(null, System.Globalization.CultureInfo.GetCultureInfo("en-US")); Assert.AreEqual("y(x0, x1) = -0.264705882352941*x0 + 50.5882352941176*x1", str); }
public void RegressTest6() { MultipleLinearRegression target = new MultipleLinearRegression(2, false); double[][] inputs = { new double[] { 0, 0 }, new double[] { 0, 0 }, new double[] { 0, 0 }, new double[] { 0, 0 }, new double[] { 0, 0 }, }; double[] outputs = { 20, 40, 30, 50, 60 }; double error = target.Regress(inputs, outputs); double slope = target.Coefficients[0]; double intercept = target.Coefficients[1]; Assert.AreEqual(0, slope, 1e-5); Assert.AreEqual(0, intercept, 1e-5); Assert.AreEqual(9000, error); double r = target.CoefficientOfDetermination(inputs, outputs); Assert.AreEqual(-8, r, 1e-6); string str = target.ToString(null, System.Globalization.CultureInfo.GetCultureInfo("pt-BR")); Assert.AreEqual("y(x0, x1) = 0*x0 + 0*x1", str); }
private void btnSampleRunAnalysis_Click(object sender, EventArgs e) { // Check requirements if (sourceTable == null) { MessageBox.Show("A sample spreadsheet can be found in the " + "Resources folder in the same directory as this application.", "Please load some data before attempting an analysis"); return; } if (checkedListBox1.CheckedItems.Count == 0) { MessageBox.Show("Please select the dependent input variables to be used in the regression model.", "Please choose at least one input variable"); } // Finishes and save any pending changes to the given data dgvAnalysisSource.EndEdit(); sourceTable.AcceptChanges(); // Gets the column of the dependent variable String dependentName = (string)comboBox1.SelectedItem; DataTable dependent = sourceTable.DefaultView.ToTable(false, dependentName); // Gets the columns of the independent variables List<string> names = new List<string>(); foreach (string name in checkedListBox1.CheckedItems) { names.Add(name); } String[] independentNames = names.ToArray(); DataTable independent = sourceTable.DefaultView.ToTable(false, independentNames); // Creates the input and output matrices from the source data table double[][] input = independent.ToArray(); double[] output = dependent.Columns[dependentName].ToArray(); String[] sourceColumns; double[,] sourceMatrix = sourceTable.ToMatrix(out sourceColumns); // Creates the Simple Descriptive Analysis of the given source DescriptiveAnalysis sda = new DescriptiveAnalysis(sourceMatrix, sourceColumns); sda.Compute(); // Populates statistics overview tab with analysis data dgvDistributionMeasures.DataSource = sda.Measures; // Creates the Logistic Regression Analysis of the given source lra = new LogisticRegressionAnalysis(input, output, independentNames, dependentName); // Compute the Logistic Regression Analysis lra.Compute(); // Populates coefficient overview with analysis data dgvLogisticCoefficients.DataSource = lra.Coefficients; // Populate details about the fitted model tbChiSquare.Text = lra.ChiSquare.Statistic.ToString("N5"); tbPValue.Text = lra.ChiSquare.PValue.ToString("N5"); checkBox1.Checked = lra.ChiSquare.Significant; tbDeviance.Text = lra.Deviance.ToString("N5"); tbLogLikelihood.Text = lra.LogLikelihood.ToString("N5"); // Perform linear regression mlr = new MultipleLinearRegression(independentNames.Length, true); mlr.Regress(input, output); tbLinearExpression.Text = mlr.ToString(); tbLinearR.Text = mlr.CoefficientOfDetermination(input, output, false).ToString("N5"); tbLinearAdjustedR.Text = mlr.CoefficientOfDetermination(input, output, true).ToString("N5"); // Populate projection source table string[] cols = independentNames; if (!independentNames.Contains(dependentName)) cols = independentNames.Concatenate(dependentName); DataTable projSource = sourceTable.DefaultView.ToTable(false, cols); dgvProjectionSource.DataSource = projSource; }