Imports System Imports System.Collections Imports CenterSpace.NMath.Core Imports System.IO Namespace CenterSpace.NMath.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("Whats 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 Code Examples