8000 Initial tests for ksdensity · matplotlib/matplotlib@8761ed4 · GitHub
[go: up one dir, main page]

Skip to content

Commit 8761ed4

Browse files
blah blahsolvents
authored andcommitted
Initial tests for ksdensity
1 parent 14e6402 commit 8761ed4

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed

lib/matplotlib/tests/test_mlab.py

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2757,7 +2757,110 @@ def get_z(x, y):
27572757
np.testing.assert_array_equal(np.ma.getmask(zi),
27582758
np.ma.getmask(correct_zi_masked))
27592759

2760+
#-----------------------------------------------------------------
2761+
#-----------------------------------------------------------------
27602762

2763+
class ksdensity_test():
2764+
def test_kde_integer_input(self):
2765+
"""Regression test for #1181."""
2766+
x1 = np.arange(5)
2767+
kde = mlab.ksdensity(x1 + x1)
2768+
y_expected = [0.13480721, 0.18222869, 0.19514935, 0.18222869, 0.13480721]
2769+
assert_array_almost_equal(kde["result"], y_expected, decimal=6)
2770+
2771+
@knownfailureif(True)
2772+
def test_gaussian_kde_covariance_caching(self):
2773+
x1 = np.array([-7, -5, 1, 4, 5], dtype=np.float)
2774+
xs = np.linspace(-10, 10, num=5)
2775+
# These expected values are from scipy 0.10, before some changes to
2776+
# gaussian_kde. They were not compared with any external reference.
2777+
y_expected = [0.02463386, 0.04689208, 0.05395444, 0.05337754, 0.01664475]
2778+
2779+
# Set the bandwidth, then reset it to the default.
2780+
kde = mlab.ksdensity(x1, 0.5)
2781+
y2 = kde['result']
2782+
2783+
assert_array_almost_equal(y_expected, y2, decimal=7)
2784+
2785+
kde = mlab.ksdensity(xs, 'scott')
2786+
y2 = kde['result']
2787+
2788+
assert_array_almost_equal(y_expected, y2, decimal=7)
2789+
2790+
@knownfailureif(True)
2791+
def test_gaussian_kde_subclassing(self):
2792+
x1 = np.array([-7, -5, 1, 4, 5], dtype=np.float)
2793+
xs = np.linspace(-10, 10, num=50)
2794+
2795+
# gaussian_kde itself
2796+
kde = mlab.ksdensity(xs)
2797+
ys = kde['result']
2798+
2799+
y_expected = [0.06292987, 0.06346938, 0.05860291, 0.08657652, 0.07904017]
2800+
2801+
assert_array_almost_equal(y_expected, ys, decimal=6)
2802+
2803+
2804+
@knownfailureif(True)
2805+
def test_kde_1d(self):
2806+
#some basic tests comparing to normal distribution
2807+
np.random.seed(8765678)
2808+
n_basesample = 500
2809+
xn = np.random.randn(n_basesample)
2810+
xnmean = xn.mean()
2811+
xnstd = xn.std(ddof=1)
2812+
2813+
xs = np.linspace(-7, 7, 501)
2814+
2815+
# get kde for original sample
2816+
gkde = mlab.ksdensity(xn)
2817+
2818+
# evaluate the density function for the kde for some points
2819+
kdepdf = gkde['result']
2820+
intervall = xs[1] - xs[0]
2821+
2822+
normpdf = np.random.normal(loc=xnmean, scale=xnstd)
2823+
2824+
assert_(np.sum((kdepdf - normpdf)**2)*intervall < 0.01)
2825+
prob1 = gkde.integrate_box_1d(xnmean, np.inf)
2826+
prob2 = gkde.integrate_box_1d(-np.inf, xnmean)
2827+
assert_almost_equal(prob1, 0.5, decimal=1)
2828+
assert_almost_equal(prob2, 0.5, decimal=1)
2829+
assert_almost_equal(gkde.integrate_box(xnmean, np.inf), prob1, decimal=13)
2830+
assert_almost_equal(gkde.integrate_box(-np.inf, xnmean), prob2, decimal=13)
2831+
2832+
assert_almost_equal(gkde.integrate_kde(gkde),
2833+
(kdepdf**2).sum()*intervall, decimal=2)
2834+
assert_almost_equal(gkde.integrate_gaussian(xnmean, xnstd**2),
2835+
(kdepdf*normpdf).sum()*intervall, decimal=2)
2836+
2837+
def test_kde_bandwidth_method(self):
2838+
2839+
np.random.seed(8765678)
2840+
n_basesample = 50
2841+
xn = np.random 8000 .randn(n_basesample)
2842+
2843+
# Default
2844+
gkde = mlab.ksdensity(xn)
2845+
# Supply a callable
2846+
gkde2 =mlab.ksdensity(xn, 'scott')
2847+
assert_almost_equal(gkde['result'].all(), gkde2['result'].all())
2848+
# Supply a scalar
2849+
#gkde3 = mlab.ksdensity(xn, bw_method=gkde.factor)
2850+
2851+
xs = np.linspace(-7,7,51)
2852+
kdepdf = mlab.ksdensity(xs)
2853+
kdepdf2 = mlab.ksdensity(xs, 'scott')
2854+
#kdepdf3 = gkde3.evaluate(xs)
2855+
#assert_almost_equal(kdepdf, kdepdf3)
2856+
2857+
assert_raises(ValueError, mlab.ksdensity, xn, bw_method='wrongstring')
2858+
2859+
2860+
2861+
2862+
#-----------------------------------------------------------------
2863+
# 4750 -----------------------------------------------------------------
27612864
if __name__ == '__main__':
27622865
import nose
27632866
import sys

0 commit comments

Comments
 (0)
0