def test_sphericity(self):
     """Test function test_sphericity."""
     df_pivot = df.pivot(index='Subject', columns='Time',
                         values='Scores').reset_index(drop=True)
     _, W, _, _, p = sphericity(df_pivot, method='mauchly')
     # Compare with ezANOVA
     assert np.round(W, 3) == 0.999
     assert np.round(p, 3) == 0.964
     # JNS
     sphericity(df_pivot, method='jns')
 def test_sphericity(self):
     """Test function test_sphericity.
     Compare with ezANOVA.
     """
     _, W, _, _, p = sphericity(df_pivot, method='mauchly')
     assert round(W, 3) == 0.999
     assert np.round(p, 3) == 0.964
     _, W, _, _, p = sphericity(df,
                                dv='Scores',
                                subject='Subject',
                                within='Time')  # Long-format
     assert round(W, 3) == 0.999
     assert np.round(p, 3) == 0.964
     assert sphericity(pa)[0]  # Only two levels so sphericity = True
     spher = sphericity(pb)
     assert spher[0]
     assert round(spher[1], 3) == 0.968  # W
     assert spher[3] == 2  # dof
     assert np.isclose(spher[4], 0.8784418)  # P-value
     # JNS
     sphericity(df_pivot, method='jns')
     sphericity(df,
                dv='Scores',
                subject='Subject',
                within=['Time'],
                method='jns')
     # Two-way design of shape (2, N)
     spher = sphericity(pab)
     assert round(spher[1], 3) == 0.625
     assert spher[3] == 2
     assert np.isclose(spher[4], 0.1523917)
     assert sphericity(pab)[1] == sphericity(pab.swaplevel(axis=1))[1]
     spher_long = sphericity(data,
                             subject='Subject',
                             dv='Performance',
                             within=['Time', 'Metric'])
     assert round(spher_long[1], 3) == 0.625
     assert np.isclose(spher[4], spher_long[4])
     sphericity(pab_single)  # For coverage
     # Now with a (3, 4) two-way design
     # First, main effect
     spher = sphericity(pb1)
     assert spher[0]
     assert round(spher[1], 3) == 0.958  # W
     assert round(spher[4], 4) == 0.8436  # P-value
     spher2 = sphericity(df3, subject='subj', dv='dv', within=['within2'])
     assert spher[1] == spher2[1]
     assert spher[4] == spher2[4]
     # And then interaction (ValueError)
     with pytest.raises(ValueError):
         sphericity(pab1)
     # Same with long-format
     with pytest.raises(ValueError):
         sphericity(df3,
                    subject='subj',
                    dv='dv',
                    within=['within1', 'within2'])
     # 3 repeated measures factor
     with pytest.raises(ValueError):
         sphericity(pab_3fac)
     # With missing values
     sphericity(df_nan, subject='Subject', within='Time', dv='Scores')