Skip to content

Commit fbd1e42

Browse files
committed
feat(metric): add skew
1 parent 275a4b3 commit fbd1e42

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

neuralnetlib/metrics.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -590,4 +590,23 @@ def kurtosis(x: np.ndarray) -> float:
590590
raise ValueError("Array must have variance greater than 0.")
591591

592592
kurt = (n * m4) / (m2**2) - 3
593-
return kurt
593+
return kurt
594+
595+
596+
def skew(x: np.ndarray) -> float:
597+
if x.ndim != 1:
598+
raise ValueError("Input array must be 1D.")
599+
if x.size < 2:
600+
raise ValueError("Array must have at least 2 elements.")
601+
602+
n = x.size
603+
mean = np.mean(x)
604+
deviations = x - mean
605+
m2 = np.mean(deviations**2)
606+
m3 = np.mean(deviations**3)
607+
608+
if m2 == 0:
609+
raise ValueError("Array must have variance greater than 0.")
610+
611+
skewness = (n * m3) / (m2**1.5)
612+
return skewness

0 commit comments

Comments
 (0)