diff --git a/causallearn/utils/cit.py b/causallearn/utils/cit.py index 9c412c4c..968e3ba4 100644 --- a/causallearn/utils/cit.py +++ b/causallearn/utils/cit.py @@ -163,6 +163,7 @@ def __call__(self, X, Y, condition_set=None): except np.linalg.LinAlgError: raise ValueError('Data correlation matrix is singular. Cannot run fisherz test. Please check your data.') r = -inv[0, 1] / sqrt(inv[0, 0] * inv[1, 1]) + if abs(r) >= 1: r = (1. - np.finfo(float).eps) * np.sign(r) # may happen when samplesize is very small or relation is deterministic Z = 0.5 * log((1 + r) / (1 - r)) X = sqrt(self.sample_size - len(condition_set) - 3) * abs(Z) p = 2 * (1 - norm.cdf(abs(X))) @@ -382,6 +383,7 @@ def __call__(self, X, Y, condition_set=None): except np.linalg.LinAlgError: raise ValueError('Data correlation matrix is singular. Cannot run fisherz test. Please check your data.') r = -inv[0, 1] / sqrt(inv[0, 0] * inv[1, 1]) + if abs(r) >= 1: r = (1. - np.finfo(float).eps) * np.sign(r) # may happen when samplesize is very small or relation is deterministic Z = 0.5 * log((1 + r) / (1 - r)) X = sqrt(len(test_wise_deletion_XYcond_rows_index) - len(condition_set) - 3) * abs(Z) p = 2 * (1 - norm.cdf(abs(X)))