New Version 6.0!

Try it for free with our fully functional 60-day trial version.

Download now!

QuickStart Samples

Polynomial Regression QuickStart Sample (Visual Basic)

Illustrates how to fit data to polynomials using the PolynomialRegressionModel class in Visual Basic.

C# code F# code IronPython code Back to QuickStart Samples

Option Infer On

Imports System.Data
Imports Extreme.Mathematics
Imports Extreme.Statistics

Namespace Extreme.Numerics.QuickStart.VB
    ' Illustrates the use of the PolynomialRegressionModel class
    ' to perform polynomial regression.
    Module PolynomialRegression

        Sub Main()
            ' Polynomial regression can be performed using 
            ' the PolynomialRegressionModel class.
            '
            ' This QuickStart sample uses data from the National Institute
            ' for Standards and Technology's Statistical Reference Datasets
            ' library at http:'www.itl.nist.gov/div898/strd/.

            ' Note that, due to round-off error, the results here will not be exactly
            ' the same as the NIST results, which were calculated using 500 digits
            ' of precision!

            ' We use the 'Pontius' dataset, which contains measurement data
            ' from the calibration of load cells. The independent variable is the load.
            ' The dependent variable is the deflection.
            Dim deflection = Vector.Create(New Double() _
            {
                0.11019, 0.21956, 0.32949, 0.43899, 0.54803, 0.65694, 0.76562,
                0.87487, 0.98292, 1.09146, 1.20001, 1.30822, 1.41599, 1.52399,
                1.63194, 1.73947, 1.84646, 1.95392, 2.06128, 2.16844, 0.11052,
                0.22018, 0.32939, 0.43886, 0.54798, 0.65739, 0.76596, 0.87474, 0.983,
                1.0915, 1.20004, 1.30818, 1.41613, 1.52408, 1.63159, 1.73965,
                1.84696, 1.95445, 2.06177, 2.16829
            })
            Dim load = Vector.Create(New Double() _
            {
                150000.0, 300000, 450000, 600000, 750000, 900000,
                1050000, 1200000, 1350000, 1500000, 1650000, 1800000,
                1950000, 2100000, 2250000, 2400000, 2550000, 2700000,
                2850000, 3000000, 150000, 300000, 450000, 600000,
                750000, 900000, 1050000, 1200000, 1350000, 1500000,
                1650000, 1800000, 1950000, 2100000, 2250000, 2400000,
                2550000, 2700000, 2850000, 3000000
            })

            ' Now create the regression model. We supply the dependent and independent
            ' variable, and the degree of the polynomial:
            Dim model = New PolynomialRegressionModel(deflection, load, 2)

            ' The Compute method performs the actual regression analysis.
            model.Compute()

            ' The Parameters collection contains information about the regression 
            ' parameters.
            Console.WriteLine("Variable                  Value    Std.Error  t-stat  p-Value")
            For Each param As Parameter In model.Parameters
                ' Parameter objects have the following properties:
                ' - Name, usually the name of the variable:
                ' - Estimated value of the parameter:
                ' - Standard error:
                ' - The value of the t statistic for the hypothesis that the parameter
                '    is zero.
                ' - Probability corresponding to the t statistic.
                Console.WriteLine("{0,-19}{1,12:E4}{2,12:E2}{3,8:F2} {4,7:F4}", _
                    param.Name, _
                    param.Value, _
                    param.StandardError, _
                    param.Statistic, _
                    param.PValue)
            Next
            Console.WriteLine()

            ' In addition to these properties, Parameter objects have a GetConfidenceInterval
            ' method that returns a confidence interval at a specified confidence level.
            ' Notice that individual parameters can be accessed using their numeric index.
            ' Parameter 0 is the intercept, if it was included.
            Dim confidenceInterval As Interval = model.Parameters(0).GetConfidenceInterval(0.95)
            Console.WriteLine("95% confidence interval for constant term: {0:E4} - {1:E4}", _
                confidenceInterval.LowerBound, confidenceInterval.UpperBound)
            Console.WriteLine()

            ' There is also a wealth of information about the analysis available
            ' through various properties of the LinearRegressionModel object:
            Console.WriteLine("Residual standard error: {0:E3}", model.StandardError)
            Console.WriteLine("R-Squared:               {0:F4}", model.RSquared)
            Console.WriteLine("Adjusted R-Squared:      {0:F4}", model.AdjustedRSquared)
            Console.WriteLine("F-statistic:             {0:F4}", model.FStatistic)
            Console.WriteLine("Corresponding p-value:   {0:E5}", model.PValue)
            Console.WriteLine()

            ' Much of this data can be summarized in the form of an ANOVA table:
            Console.WriteLine(model.AnovaTable.ToString())

            Console.WriteLine("Press Enter key to continue.")
            Console.ReadLine()
        End Sub

    End Module

End Namespace