From e651f0032996481faba8cabe8f51638e3875d04c Mon Sep 17 00:00:00 2001 From: zhengp0 Date: Thu, 15 Feb 2024 14:34:38 -0800 Subject: [PATCH] use the simple svd approach for the degree of freedom --- src/limetr/__init__.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/limetr/__init__.py b/src/limetr/__init__.py index 3a78ecc..cfbc731 100644 --- a/src/limetr/__init__.py +++ b/src/limetr/__init__.py @@ -607,11 +607,9 @@ def get_degree_of_freedom(model: LimeTr): if c_mat_active.size == 0: return k - lb, ub = c_mat_active.min(axis=0), c_mat_active.max(axis=0) - lb[np.isclose(lb, 0.0)] = 0.0 - ub[np.isclose(ub, 0.0)] = 0.0 + _, s, _ = np.linalg.svd(c_mat_active) - return k - 0.5 * ((lb < 0) + (ub > 0)).sum() + return k - (s / s.max()).sum() def get_aic(model: LimeTr):