763e06c127
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
59 lines
1.8 KiB
Python
59 lines
1.8 KiB
Python
"""Tests para normality_tests."""
|
|
|
|
import numpy as np
|
|
|
|
from normality_tests import normality_tests
|
|
|
|
|
|
def test_normal_large_sample_is_normal():
|
|
rng = np.random.default_rng(42)
|
|
values = rng.normal(loc=10.0, scale=2.0, size=2000).tolist()
|
|
result = normality_tests(values)
|
|
assert result["n"] == 2000
|
|
assert result["shapiro"] is not None
|
|
assert result["jarque_bera"]["normal"] is True
|
|
assert result["dagostino"]["normal"] is True
|
|
assert result["is_normal"] is True
|
|
|
|
|
|
def test_skewed_sample_is_not_normal():
|
|
rng = np.random.default_rng(7)
|
|
values = rng.exponential(scale=1.0, size=2000).tolist()
|
|
result = normality_tests(values)
|
|
assert result["jarque_bera"]["normal"] is False
|
|
assert result["dagostino"]["normal"] is False
|
|
assert result["is_normal"] is False
|
|
|
|
|
|
def test_small_sample_returns_note():
|
|
result = normality_tests([1, 2, 3, 4, 5])
|
|
assert result["n"] == 5
|
|
assert result["note"] == "muestra insuficiente"
|
|
assert result["is_normal"] is None
|
|
assert "jarque_bera" not in result
|
|
|
|
|
|
def test_drops_none_nan_and_non_numeric():
|
|
rng = np.random.default_rng(1)
|
|
base = rng.normal(0.0, 1.0, size=50).tolist()
|
|
dirty = base + [None, float("nan"), "x", float("inf")]
|
|
result = normality_tests(dirty)
|
|
assert result["n"] == 50
|
|
|
|
|
|
def test_shapiro_skipped_above_5000():
|
|
rng = np.random.default_rng(3)
|
|
values = rng.normal(0.0, 1.0, size=6000).tolist()
|
|
result = normality_tests(values)
|
|
assert result["n"] == 6000
|
|
assert result["shapiro"] is None
|
|
# is_normal still computed from JB + D'Agostino.
|
|
assert result["is_normal"] is True
|
|
|
|
|
|
def test_normal_below_eight_after_cleaning_is_note():
|
|
result = normality_tests([1.0, 2.0, None, 3.0])
|
|
assert result["n"] == 3
|
|
assert result["note"] == "muestra insuficiente"
|
|
assert result["is_normal"] is None
|