Multiple Linear Regression in Visual Basic QuickStart Sample
Illustrates how to use the LinearRegressionModel class to perform a multiple linear regression in Visual Basic.
View this sample in: C# F# IronPython
Option Infer On
Imports Numerics.NET.DataAnalysis
Imports Numerics.NET.Statistics
Imports Numerics.NET.Data.Text
' Illustrates the use of the LinearRegressionModel class
' to perform multiple linear regression.
Module MultipleRegression
Sub Main()
' The license is verified at runtime. We're using
' a 30 day trial key here. For more information, see
' https://numerics.net/trial-key
Numerics.NET.License.Verify("64542-18980-57619-62268")
' Multiple linear regression can be performed using
' the LinearRegressionModel class.
'
' This QuickStart sample uses data test scores of 200 high school
' students, including science, math, and reading.
' First, read the data from a file into a data frame.
Dim frame = DelimitedTextFile.ReadDataFrame("..\..\..\..\Data\hsb2.csv")
' Now create the regression model. Parameters are the data frame,
' the name of the dependent variable, and a string array containing
' the names of the independent variables.
Dim lm As New LinearRegressionModel(frame,
"science", {"math", "female", "socst", "read"})
' Alternatively, we can use a formula to describe the variables
' in the model. The dependent variable goes on the left, the
' independent variables on the right of the ~
Dim lm2 = New LinearRegressionModel(frame,
"science ~ math + female + socst + read")
' We can set model options now, such as whether to exclude
' the constant term:
' model.NoIntercept = false
' The Fit method performs the actual regression analysis.
lm.Fit()
' The Parameters collection contains information about the regression
' parameters.
Console.WriteLine("Variable Value Std.Error t-stat p-Value")
For Each param As Parameter(Of Double) In lm.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 = lm.Parameters(0).GetConfidenceInterval(0.95)
Console.WriteLine("95% confidence interval for intercept: {0:F4} - {1:F4}",
confidenceInterval.LowerBound, confidenceInterval.UpperBound)
' Parameters can also be accessed by name:
confidenceInterval = lm.Parameters.Get("math").GetConfidenceInterval(0.95)
Console.WriteLine("95% confidence interval for 'math': {0:F4} - {1:F4}",
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: {lm.StandardError:F3}")
Console.WriteLine($"R-Squared: {lm.RSquared:F4}")
Console.WriteLine($"Adjusted R-Squared: {lm.AdjustedRSquared:F4}")
Console.WriteLine($"F-statistic: {lm.FStatistic:F4}")
Console.WriteLine($"Corresponding p-value: {lm.PValue:F5}")
Console.WriteLine()
' Much of this data can be summarized in the form of an ANOVA table:
Console.WriteLine(lm.AnovaTable.ToString())
' All this information can be printed using the Summarize method.
' You will also see summaries using the library in C# interactive.
Console.WriteLine(lm.Summarize())
Console.WriteLine("Press Enter key to continue.")
Console.ReadLine()
End Sub
End Module