# -*- coding: utf-8 -*- import pandas as pd from ..cancorr import CanCorr from numpy.testing import assert_almost_equal data_fit = pd.DataFrame([[191, 36, 50, 5, 162, 60], [189, 37, 52, 2, 110, 60], [193, 38, 58, 12, 101, 101], [162, 35, 62, 12, 105, 37], [189, 35, 46, 13, 155, 58], [182, 36, 56, 4, 101, 42], [211, 38, 56, 8, 101, 38], [167, 34, 60, 6, 125, 40], [176, 31, 74, 15, 200, 40], [154, 33, 56, 17, 251, 250], [169, 34, 50, 17, 120, 38], [166, 33, 52, 13, 210, 115], [154, 34, 64, 14, 215, 105], [247, 46, 50, 1, 50, 50], [193, 36, 46, 6, 70, 31], [202, 37, 62, 12, 210, 120], [176, 37, 54, 4, 60, 25], [157, 32, 52, 11, 230, 80], [156, 33, 54, 15, 225, 73], [138, 33, 68, 2, 110, 43]]) def test_cancorr(): # Compare results to SAS example: # https://support.sas.com/documentation/cdl/en/statug/63347/HTML/default/ # viewer.htm#statug_cancorr_sect020.htm X1 = data_fit.iloc[:, :3] Y1 = data_fit.iloc[:, 3:] mod = CanCorr(Y1, X1) r = mod.corr_test() assert_almost_equal(r.stats_mv.loc["Wilks' lambda", 'Value'], 0.35039053, decimal=8) assert_almost_equal(r.stats_mv.loc["Pillai's trace", 'Value'], 0.67848151, decimal=8) assert_almost_equal(r.stats_mv.loc["Hotelling-Lawley trace", 'Value'], 1.77194146, decimal=8) assert_almost_equal(r.stats_mv.loc["Roy's greatest root", 'Value'], 1.72473874, decimal=8) assert_almost_equal(r.stats_mv.loc["Wilks' lambda", 'F Value'], 2.05, decimal=2) assert_almost_equal(r.stats_mv.loc["Pillai's trace", 'F Value'], 1.56, decimal=2) assert_almost_equal(r.stats_mv.loc["Hotelling-Lawley trace", 'F Value'], 2.64, decimal=2) assert_almost_equal(r.stats_mv.loc["Roy's greatest root", 'F Value'], 9.20, decimal=2) assert_almost_equal(r.stats_mv.loc["Wilks' lambda", 'Num DF'], 9, decimal=3) assert_almost_equal(r.stats_mv.loc["Pillai's trace", 'Num DF'], 9, decimal=3) assert_almost_equal(r.stats_mv.loc["Hotelling-Lawley trace", 'Num DF'], 9, decimal=3) assert_almost_equal(r.stats_mv.loc["Roy's greatest root", 'Num DF'], 3, decimal=3) assert_almost_equal(r.stats_mv.loc["Wilks' lambda", 'Den DF'], 34.223, decimal=3) assert_almost_equal(r.stats_mv.loc["Pillai's trace", 'Den DF'], 48, decimal=3) assert_almost_equal(r.stats_mv.loc["Hotelling-Lawley trace", 'Den DF'], 19.053, decimal=3) assert_almost_equal(r.stats_mv.loc["Roy's greatest root", 'Den DF'], 16, decimal=3) assert_almost_equal(r.stats_mv.loc["Wilks' lambda", 'Pr > F'], 0.0635, decimal=4) assert_almost_equal(r.stats_mv.loc["Pillai's trace", 'Pr > F'], 0.1551, decimal=4) assert_almost_equal(r.stats_mv.loc["Hotelling-Lawley trace", 'Pr > F'], 0.0357, decimal=4) assert_almost_equal(r.stats_mv.loc["Roy's greatest root", 'Pr > F'], 0.0009, decimal=4) assert_almost_equal(r.stats.loc[0, "Wilks' lambda"], 0.35039053, decimal=8) assert_almost_equal(r.stats.loc[1, "Wilks' lambda"], 0.95472266, decimal=8) assert_almost_equal(r.stats.loc[2, "Wilks' lambda"], 0.99473355, decimal=8) assert_almost_equal(r.stats.loc[0, 'F Value'], 2.05, decimal=2) assert_almost_equal(r.stats.loc[1, 'F Value'], 0.18, decimal=2) assert_almost_equal(r.stats.loc[2, 'F Value'], 0.08, decimal=2) assert_almost_equal(r.stats.loc[0, 'Num DF'], 9, decimal=2) assert_almost_equal(r.stats.loc[1, 'Num DF'], 4, decimal=2) assert_almost_equal(r.stats.loc[2, 'Num DF'], 1, decimal=2) assert_almost_equal(r.stats.loc[0, 'Den DF'], 34.223, decimal=3) assert_almost_equal(r.stats.loc[1, 'Den DF'], 30, decimal=2) assert_almost_equal(r.stats.loc[2, 'Den DF'], 16, decimal=2) assert_almost_equal(r.stats.loc[0, 'Pr > F'], 0.0635, decimal=4) assert_almost_equal(r.stats.loc[1, 'Pr > F'], 0.9491, decimal=4) assert_almost_equal(r.stats.loc[2, 'Pr > F'], 0.7748, decimal=4)