VB Stats Functions Example

← All NMath Core Code Examples

```Imports System
Imports System.Collections

Imports CenterSpace.NMath.Core
Imports System.IO

Namespace CenterSpace.NMath.Core.Examples.VisualBasic

' A .NET example in Visual Basic showing how to use the descriptive statistics functions of the
' StatsFunctions class.
Module StatsFunctionsExample

Sub Main()

' Read in data from a comma-delimited file. Data has age, gender, grade columns.

' Specify the data file, whether it includes headers, whether it has row keys,
' the delimiter, and whether to try to parse data into non-generic types.
Dim Data As DataFrame = DataFrame.Load("StatsFunctionsExample.dat", True, False, ",", True)

' Print out all data.
Console.WriteLine()
Console.WriteLine(Data)
Console.WriteLine()

' Print out top grade
Console.WriteLine("highest grade.. " & StatsFunctions.MaxValue(Data("Grade")))
Console.WriteLine()

' How many male and female students are there?
Dim Counts As IDictionary = StatsFunctions.Counts(Data("Gender"))
Console.WriteLine("There are " & Counts("Male") & " male students and " & Counts("Female") & " female students.")
Console.WriteLine()

' Mean, median, mode grades
Console.WriteLine("mean grade: " & StatsFunctions.Mean(Data("Grade")))
Console.WriteLine("median grade: " & StatsFunctions.Median(Data("Grade")))
Console.WriteLine("most common grade: " & StatsFunctions.Mode(Data("Grade")))
Console.WriteLine()

' Is there a correlation between age and grade?
Dim Correlation As Double = StatsFunctions.Correlation(Data("Age"), Data("Grade"))

If Correlation > 0.0 Then
Console.WriteLine("There is a positive correlation of " & Correlation.ToString("F2") _
& " between age and grade.")
Console.WriteLine()
End If

' What percentage of students pass with a 50% passing rate?  60%?
Console.WriteLine("Percentage passing with 50% cutoff: " & _
(1.0 - StatsFunctions.PercentileRank(Data("Grade"), 50)).ToString("P2"))
Console.WriteLine("Percentage passing with 50% cutoff: " & _
(1.0 - StatsFunctions.PercentileRank(Data("Grade"), 60)).ToString("P2"))
Console.WriteLine()

' Percentiles
Console.WriteLine("Interquartile range is " & StatsFunctions.InterquartileRange(Data("Grade")))
Console.WriteLine("What's the 80th percentile? " & StatsFunctions.Percentile(Data("Grade"), 0.8))
Console.WriteLine()

' Split by gender and do descriptive statistics
Dim Gender As Factor = Data.GetFactor("Gender")
Dim GenderGroups() As Subset = Subset.GetGroupings(Gender)

Dim I As Integer
For I = 0 To GenderGroups.Length - 1
Dim GenderSpecific As DataFrame = Data.GetRows(GenderGroups(I))
Console.WriteLine(Gender.Levels(I) & " students...")
Console.WriteLine("mean grade: " & StatsFunctions.Mean(GenderSpecific("Grade")).ToString("F2"))
Console.WriteLine("median grade: " & StatsFunctions.Median(GenderSpecific("Grade")))
Console.WriteLine("most common grade: " & StatsFunctions.Mode(GenderSpecific("Grade")))
Console.WriteLine()
Next

' Young students
Dim Young As DataFrame = Data(New Subset(StatsFunctions.If(Data("Age"), New Func(Of Double, Boolean)(AddressOf IsYoung))), Slice.All)
Console.WriteLine("Young students...")
Console.WriteLine("mean grade: " & StatsFunctions.Mean(Young("Grade")).ToString("F2"))
Console.WriteLine("median grade: " & StatsFunctions.Median(Young("Grade")))
Console.WriteLine("most common grade: " & StatsFunctions.Mode(Young("Grade")))
Console.WriteLine()

' Top grade by a young student?
Dim Top As Double = StatsFunctions.MaxValue(Young("Grade"))
Console.WriteLine("Top grade by a young student was... " & Top)

' What percentage of the whole group beat the top-ranked young student?
Console.Write("Percentage beating top-ranked young student... ")
Console.WriteLine((1.0 - StatsFunctions.PercentileRank(Data("Grade"), Top)).ToString("P2"))

Console.WriteLine()
Console.WriteLine("Press Enter Key")
Console.Read()
End Sub

Function IsYoung(ByVal Age As Double) As Boolean
IsYoung = Age < 20
End Function

End Module

End Namespace

```
← All NMath Stats Code Examples
Top