Skip to content

Commit

Permalink
fixed conover post hoc test for unreplicated blocked data
Browse files Browse the repository at this point in the history
  • Loading branch information
maximtrp committed Dec 13, 2023
1 parent 9dbf098 commit 18bc6a7
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 23 deletions.
2 changes: 1 addition & 1 deletion scikit_posthocs/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__version__ = '0.8.0'
__version__ = '0.8.1'

from scikit_posthocs._global import global_simes_test, global_f_test
from scikit_posthocs._omnibus import test_osrt, test_durbin, test_mackwolfe
Expand Down
2 changes: 1 addition & 1 deletion scikit_posthocs/_posthocs.py
Original file line number Diff line number Diff line change
Expand Up @@ -728,7 +728,7 @@ def compare_tukey(i, j):
A1 = (x['mat'] ** 2).sum()
m = 1
S2 = m/(m*k - 1.) * (A1 - m*k*n*(m*k + 1.)**2./4.)
T2 = 1. / S2 * (np.sum(R) - n * m * ((m * k + 1.) / 2.)**2.)
T2 = 1. / S2 * np.sum((R - n * m * ((m * k + 1.) / 2.))**2.)
A = S2 * (2. * n * (m * k - 1.)) / (m * n * k - k - n + 1.)
B = 1. - T2 / (n * (m * k - 1.))

Expand Down
48 changes: 27 additions & 21 deletions tests/test_posthocs.py
Original file line number Diff line number Diff line change
Expand Up @@ -357,25 +357,28 @@ def test_posthoc_nemenyi_friedman(self):
def test_posthoc_conover_friedman(self):

results = sp.posthoc_conover_friedman(self.df_bn)
p_results = np.array([[1.000000, 0.9325836, 0.2497915, 0.3203414, 0.3203414, 0.0517417, 0.6136576],
[0.9325836, 1.000000, 0.28339156, 0.36072942, 0.36072942, 0.06033626, 0.67344846],
[0.2497915, 0.28339156, 1.000000, 0.8657092, 0.8657092, 0.3607294, 0.5026565],
[0.3203414, 0.36072942, 0.8657092, 1.000000, 1.000000, 0.2833916, 0.6136576],
[0.3203414, 0.36072942, 0.8657092, 1.000000, 1.000000, 0.2833916, 0.6136576],
[0.0517417, 0.06033626, 0.3607294, 0.2833916, 0.2833916, 1.000000, 0.1266542],
[0.6136576, 0.67344846, 0.5026565, 0.6136576, 0.6136576, 0.1266542, 1.000000]])
p_results = np.array([[1.0000000, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan],
[0.9147508, 1.00000000, np.nan, np.nan, np.nan, np.nan, np.nan],
[0.1518030, 0.18071036, 1.0000000, np.nan, np.nan, np.nan, np.nan],
[0.2140927, 0.25232845, 0.8305955, 1.000000, np.nan, np.nan, np.nan],
[0.2140927, 0.25232845, 0.8305955, 1.000000, 1.000000, np.nan, np.nan],
[0.0181602, 0.02222747, 0.2523284, 0.1807104, 0.1807104, 1.00009000, np.nan],
[0.5242303, 0.59465124, 0.3989535, 0.5242303, 0.5242303, 0.05991984, 1.000000]])
tri_upper = np.triu_indices(p_results.shape[0], 1)
p_results[tri_upper] = np.transpose(p_results)[tri_upper]
np.fill_diagonal(p_results, 1)
self.assertTrue(np.allclose(results, p_results))

def test_posthoc_conover_friedman_tukey(self):

results = sp.posthoc_conover_friedman(self.df_bn, p_adjust='single-step')
p_results = np.array([[1.0000000, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan],
[1.0000000, 1.000000, np.nan, np.nan, np.nan, np.nan, np.nan],
[0.8908193, 0.9212619, 1.000000, np.nan, np.nan, np.nan, np.nan],
[0.9455949, 0.9642182, 0.9999978, 1.000000, np.nan, np.nan, np.nan],
[0.9455949, 0.9642182, 0.9999978, 1.0000000, 1.000000, np.nan, np.nan],
[0.3177477, 0.3686514, 0.9642182, 0.9212619, 0.9212619, 1.000000, np.nan],
[0.9986057, 0.9995081, 0.9931275, 0.9986057, 0.9986057, 0.6553018, 1.000000]])
p_results = np.array([[1.00000000, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan],
[0.99999986, 1.0000000, np.nan, np.nan, np.nan, np.nan, np.nan],
[0.72638075, 0.7905289, 1.0000000, np.nan, np.nan, np.nan, np.nan],
[0.84667448, 0.8934524, 0.9999910, 1.0000000, np.nan, np.nan, np.nan],
[0.84667448, 0.8934524, 0.9999910, 1.0000000, 1.0000000, np.nan, np.nan],
[0.09013677, 0.1187580, 0.8934524, 0.7905289, 0.7905289, 1.0000000, np.nan],
[0.99482447, 0.9981178, 0.9763466, 0.9948245, 0.9948245, 0.3662675, 1.000000]])
p_results[p_results > 0.9] = 0.9
tri_upper = np.triu_indices(p_results.shape[0], 1)
p_results[tri_upper] = np.transpose(p_results)[tri_upper]
Expand All @@ -386,13 +389,16 @@ def test_posthoc_conover_friedman_non_melted(self):

df = DataFrame(self.df_bn)
results = sp.posthoc_conover_friedman(df, melted=False)
p_results = np.array([[1.000000, 0.9325836, 0.2497915, 0.3203414, 0.3203414, 0.0517417, 0.6136576],
[0.9325836, 1.000000, 0.28339156, 0.36072942, 0.36072942, 0.06033626, 0.67344846],
[0.2497915, 0.28339156, 1.000000, 0.8657092, 0.8657092, 0.3607294, 0.5026565],
[0.3203414, 0.36072942, 0.8657092, 1.000000, 1.000000, 0.2833916, 0.6136576],
[0.3203414, 0.36072942, 0.8657092, 1.000000, 1.000000, 0.2833916, 0.6136576],
[0.0517417, 0.06033626, 0.3607294, 0.2833916, 0.2833916, 1.000000, 0.1266542],
[0.6136576, 0.67344846, 0.5026565, 0.6136576, 0.6136576, 0.1266542, 1.000000]])
p_results = np.array([[1.0000000, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan],
[0.9147508, 1.00000000, np.nan, np.nan, np.nan, np.nan, np.nan],
[0.1518030, 0.18071036, 1.0000000, np.nan, np.nan, np.nan, np.nan],
[0.2140927, 0.25232845, 0.8305955, 1.000000, np.nan, np.nan, np.nan],
[0.2140927, 0.25232845, 0.8305955, 1.000000, 1.000000, np.nan, np.nan],
[0.0181602, 0.02222747, 0.2523284, 0.1807104, 0.1807104, 1.00009000, np.nan],
[0.5242303, 0.59465124, 0.3989535, 0.5242303, 0.5242303, 0.05991984, 1.000000]])
tri_upper = np.triu_indices(p_results.shape[0], 1)
p_results[tri_upper] = np.transpose(p_results)[tri_upper]
np.fill_diagonal(p_results, 1)
self.assertTrue(np.allclose(results, p_results))


Expand Down

0 comments on commit 18bc6a7

Please sign in to comment.