One-Way Anova QuickStart Sample (IronPython)

importnumericsfromSystemimportArrayfromExtreme.Statisticsimport*#/ Illustrates the use of the OneWayAnovaModel class for performing #/ a one-way analysis of variance.# This QuickStart Sample investigates the effect of the color of packages# on the sales of the product. The data comes from 12 stores.# Packages can be either red, green or blue.# Set up the data in an ADO.NET data table.importclrclr.AddReference('System.Data')fromSystem.DataimportDataTabledataTable=DataTable()dataTable.Columns.Add("Store",int)dataTable.Columns.Add("Color",str)dataTable.Columns.Add("Shape",str)dataTable.Columns.Add("Sales",float)dataTable.Rows.Add(Array[object]([1,"Blue","Square",6]))dataTable.Rows.Add(Array[object]([2,"Blue","Square",14]))dataTable.Rows.Add(Array[object]([3,"Blue","Rectangle",19]))dataTable.Rows.Add(Array[object]([4,"Blue","Rectangle",17]))dataTable.Rows.Add(Array[object]([5,"Red","Square",18]))dataTable.Rows.Add(Array[object]([6,"Red","Square",11]))dataTable.Rows.Add(Array[object]([7,"Red","Rectangle",20]))dataTable.Rows.Add(Array[object]([8,"Red","Rectangle",23]))dataTable.Rows.Add(Array[object]([9,"Green","Square",7]))dataTable.Rows.Add(Array[object]([10,"Green","Square",11]))dataTable.Rows.Add(Array[object]([11,"Green","Rectangle",18]))dataTable.Rows.Add(Array[object]([12,"Green","Rectangle",10]))# Construct the OneWayAnovaModel object.anova=OneWayAnovaModel(dataTable,"Sales","Color")# Verify that the design is balanced:ifnotanova.IsBalanced:print"The design is not balanced."# Perform the calculation.anova.Compute()# The AnovaTable property gives us a classic anova table.# We can write the table directly to the console:printanova.AnovaTable.ToString()print# A Cell object represents the data in a cell of the model, # i.e. the data related to one level of the factor.# We can use it to access the group means of our color groups.# First we get the CategoricalScale object so we can easily iterate# through the levels:colorFactor=anova.GetFactor(0)forlevelincolorFactor.GetLevels():print"Mean for group '{0}': {1:.4f}".format(level,anova.Cells[level].Mean)# We could have accessed the cells directly as well:print"Variance for blue packages:",anova.Cells["Blue"].Varianceprint# We can get the summary data for the entire model# by using the special index 'Cell.All':totalSummary=anova.Cells[Cell.All]print"Summary data:"print"# observations:",totalSummary.Countprint"Grand mean: ",totalSummary.Mean