Skip to content

Commit 01d51ed

Browse files
committed
fix(nanops): make tolerance match order of m2, m3 and m4
1 parent fd1e6c3 commit 01d51ed

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

pandas/core/nanops.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1278,9 +1278,11 @@ def nanskew(
12781278
#
12791279
# #18044 in _libs/windows.pyx calc_skew follow this behavior
12801280
# to fix the fperr to treat m2 <1e-14 as zero
1281-
constant_tolerance = (np.finfo(m2.dtype).eps * total) ** 2
1282-
m2 = _zero_out_fperr(m2, constant_tolerance)
1283-
m3 = _zero_out_fperr(m3, constant_tolerance)
1281+
constant_tolerance = np.finfo(m2.dtype).eps * total
1282+
constant_tolerance2 = constant_tolerance**2 # match order of m2
1283+
constant_tolerance3 = constant_tolerance2 * constant_tolerance # match order of m3
1284+
m2 = _zero_out_fperr(m2, constant_tolerance2)
1285+
m3 = _zero_out_fperr(m3, constant_tolerance3)
12841286

12851287
with np.errstate(invalid="ignore", divide="ignore"):
12861288
result = (count * (count - 1) ** 0.5 / (count - 2)) * (m3 / m2**1.5)
@@ -1376,9 +1378,10 @@ def nankurt(
13761378
# #57972 arbitrary <1e-14 tolerance leads to problematic behaviour on low variance.
13771379
# We adapted the tolerance to use one similar to scipy:
13781380
# https://github.com/scipy/scipy/blob/04d6d9c460b1fed83f2919ecec3d743cfa2e8317/scipy/stats/_stats_py.py#L1429
1379-
constant_tolerance = (np.finfo(m2.dtype).eps * total) ** 2
1380-
numerator = _zero_out_fperr(numerator, constant_tolerance)
1381-
denominator = _zero_out_fperr(denominator, constant_tolerance)
1381+
constant_tolerance2 = (np.finfo(m2.dtype).eps * total) ** 2 # match order of m2
1382+
constant_tolerance4 = constant_tolerance2**2 # match order of m4
1383+
numerator = _zero_out_fperr(numerator, constant_tolerance2)
1384+
denominator = _zero_out_fperr(denominator, constant_tolerance4)
13821385

13831386
if not isinstance(denominator, np.ndarray):
13841387
# if ``denom`` is a scalar, check these corner cases first before

0 commit comments

Comments
 (0)