Repeated Measures Anova in IronPython QuickStart Sample
Illustrates how to use the OneWayRAnovaModel class to perform a one-way analysis of variance with repeated measures in IronPython.
View this sample in: C# Visual Basic F#
```Python import numerics from System import Array import clr clr.AddReference('System.Data') from System.Data import * from Extreme.Statistics import * # Illustrates the use of the OneWayRAnovaModel class for performing # a one-way analysis of variance with repeated measures. # 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. dataTable = DataTable() dataTable.Columns.Add("Person", int) dataTable.Columns.Add("Drug", int) dataTable.Columns.Add("Score", int) dataTable.Rows.Add(Array[object]([1, 1, 30])) dataTable.Rows.Add(Array[object]([1, 2, 28])) dataTable.Rows.Add(Array[object]([1, 3, 16])) dataTable.Rows.Add(Array[object]([1, 4, 34])) dataTable.Rows.Add(Array[object]([2, 1, 14])) dataTable.Rows.Add(Array[object]([2, 2, 18])) dataTable.Rows.Add(Array[object]([2, 3, 10])) dataTable.Rows.Add(Array[object]([2, 4, 22])) dataTable.Rows.Add(Array[object]([3, 1, 24])) dataTable.Rows.Add(Array[object]([3, 2, 20])) dataTable.Rows.Add(Array[object]([3, 3, 18])) dataTable.Rows.Add(Array[object]([3, 4, 30])) dataTable.Rows.Add(Array[object]([4, 1, 38])) dataTable.Rows.Add(Array[object]([4, 2, 34])) dataTable.Rows.Add(Array[object]([4, 3, 20])) dataTable.Rows.Add(Array[object]([4, 4, 44])) dataTable.Rows.Add(Array[object]([5, 1, 26])) dataTable.Rows.Add(Array[object]([5, 2, 28])) dataTable.Rows.Add(Array[object]([5, 3, 14])) dataTable.Rows.Add(Array[object]([5, 4, 30])) # Construct the OneWayAnova object. anova = OneWayRAnovaModel(dataTable, "Score", "Drug", "Person") # Verify that the design is balanced: if (not anova.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: print anova.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 for each drug. # We need two indices here: the second index corresponds # to the person factor. # First we get the CategoricalScale object so we can easily iterate # through the levels: drugFactor = anova.GetFactor(0) for level in drugFactor.GetLevels(): print "Mean for group '{0}': {1:.4f}".format(level, anova.Cells[level, Cell.All].Mean) # We could have accessed the cells directly as well: print "Variance for second drug:", anova.Cells["2", Cell.All].Variance print # We can get the summary data for the entire model # by using the special index 'Cell.All': totalSummary = anova.Cells[Cell.All, Cell.All] print "Summary data:" print "# observations:", totalSummary.Count print "Grand mean: ", totalSummary.Mean ```