def test_cmov_window(self): try: from scikits.timeseries.lib import cmov_window except ImportError: raise nose.SkipTest vals = np.random.randn(10) xp = cmov_window(vals, 5, 'boxcar') rs = mom.rolling_window(vals, 5, 'boxcar', center=True) assert_almost_equal(xp.compressed(), rs[2:-2]) assert_almost_equal(xp.mask, np.isnan(rs)) xp = Series(rs) rs = mom.rolling_window(Series(vals), 5, 'boxcar', center=True) assert_series_equal(xp, rs)
def test_cmov_window_special(self): _skip_if_no_scipy() try: from scikits.timeseries.lib import cmov_window except ImportError: raise nose.SkipTest win_types = ['kaiser', 'gaussian', 'general_gaussian', 'slepian'] kwds = [{ 'beta': 1. }, { 'std': 1. }, { 'power': 2., 'width': 2. }, { 'width': 0.5 }] for wt, k in zip(win_types, kwds): vals = np.random.randn(10) xp = cmov_window(vals, 5, (wt, ) + tuple(k.values())) rs = mom.rolling_window(Series(vals), 5, wt, center=True, **k) assert_series_equal(Series(xp), rs)
def test_rolling_functions_window_non_shrinkage(self): # GH 7764 s = Series(range(4)) s_expected = Series(np.nan, index=s.index) df = DataFrame([[1, 5], [3, 2], [3, 9], [-1, 0]], columns=['A', 'B']) df_expected = DataFrame(np.nan, index=df.index, columns=df.columns) df_expected_panel = Panel(items=df.index, major_axis=df.columns, minor_axis=df.columns) functions = [ lambda x: mom.rolling_cov( x, x, pairwise=False, window=10, min_periods=5), lambda x: mom.rolling_corr( x, x, pairwise=False, window=10, min_periods=5), lambda x: mom.rolling_max(x, window=10, min_periods=5), lambda x: mom.rolling_min(x, window=10, min_periods=5), lambda x: mom.rolling_sum(x, window=10, min_periods=5), lambda x: mom.rolling_mean(x, window=10, min_periods=5), lambda x: mom.rolling_std(x, window=10, min_periods=5), lambda x: mom.rolling_var(x, window=10, min_periods=5), lambda x: mom.rolling_skew(x, window=10, min_periods=5), lambda x: mom.rolling_kurt(x, window=10, min_periods=5), lambda x: mom.rolling_quantile( x, quantile=0.5, window=10, min_periods=5), lambda x: mom.rolling_median(x, window=10, min_periods=5), lambda x: mom.rolling_apply(x, func=sum, window=10, min_periods=5), lambda x: mom.rolling_window( x, win_type='boxcar', window=10, min_periods=5), ] for f in functions: try: s_result = f(s) assert_series_equal(s_result, s_expected) df_result = f(df) assert_frame_equal(df_result, df_expected) except (ImportError): # scipy needed for rolling_window continue functions = [ lambda x: mom.rolling_cov( x, x, pairwise=True, window=10, min_periods=5), lambda x: mom.rolling_corr( x, x, pairwise=True, window=10, min_periods=5), # rolling_corr_pairwise is depracated, so the following line should be deleted # when rolling_corr_pairwise is removed. lambda x: mom.rolling_corr_pairwise(x, x, window=10, min_periods=5 ), ] for f in functions: df_result_panel = f(df) assert_panel_equal(df_result_panel, df_expected_panel)
def test_cmov_window_frame(self): try: from scikits.timeseries.lib import cmov_window except ImportError: raise nose.SkipTest # DataFrame vals = np.random.randn(10, 2) xp = cmov_window(vals, 5, 'boxcar') rs = mom.rolling_window(DataFrame(vals), 5, 'boxcar', center=True) assert_frame_equal(DataFrame(xp), rs)
def test_cmov_window_frame(self): tm._skip_if_no_scipy() try: from scikits.timeseries.lib import cmov_window except ImportError: raise nose.SkipTest("no scikits.timeseries") # DataFrame vals = np.random.randn(10, 2) xp = cmov_window(vals, 5, "boxcar") rs = mom.rolling_window(DataFrame(vals), 5, "boxcar", center=True) assert_frame_equal(DataFrame(xp), rs)
def test_cmov_window_corner(self): try: from scikits.timeseries.lib import cmov_window except ImportError: raise nose.SkipTest # all nan vals = np.empty(10, dtype=float) vals.fill(np.nan) rs = mom.rolling_window(vals, 5, 'boxcar', center=True) self.assert_(np.isnan(rs).all()) # empty vals = np.array([]) rs = mom.rolling_window(vals, 5, 'boxcar', center=True) self.assert_(len(rs) == 0) # shorter than window vals = np.random.randn(5) rs = mom.rolling_window(vals, 10, 'boxcar') self.assert_(np.isnan(rs).all()) self.assert_(len(rs) == 5)
def test_cmov_window_regular(self): tm._skip_if_no_scipy() try: from scikits.timeseries.lib import cmov_window except ImportError: raise nose.SkipTest("no scikits.timeseries") win_types = ["triang", "blackman", "hamming", "bartlett", "bohman", "blackmanharris", "nuttall", "barthann"] for wt in win_types: vals = np.random.randn(10) xp = cmov_window(vals, 5, wt) rs = mom.rolling_window(Series(vals), 5, wt, center=True) assert_series_equal(Series(xp), rs)
def test_cmov_window_corner(self): tm._skip_if_no_scipy() try: from scikits.timeseries.lib import cmov_window except ImportError: raise nose.SkipTest("no scikits.timeseries") # all nan vals = np.empty(10, dtype=float) vals.fill(np.nan) rs = mom.rolling_window(vals, 5, "boxcar", center=True) self.assertTrue(np.isnan(rs).all()) # empty vals = np.array([]) rs = mom.rolling_window(vals, 5, "boxcar", center=True) self.assertEqual(len(rs), 0) # shorter than window vals = np.random.randn(5) rs = mom.rolling_window(vals, 10, "boxcar") self.assertTrue(np.isnan(rs).all()) self.assertEqual(len(rs), 5)
def test_cmov_window_regular(self): try: from scikits.timeseries.lib import cmov_window except ImportError: raise nose.SkipTest win_types = ['triang', 'blackman', 'hamming', 'bartlett', 'bohman', 'blackmanharris', 'nuttall', 'barthann'] for wt in win_types: vals = np.random.randn(10) xp = cmov_window(vals, 5, wt) rs = mom.rolling_window(Series(vals), 5, wt, center=True) assert_series_equal(Series(xp), rs)
def test_cmov_window_na_min_periods(self): try: from scikits.timeseries.lib import cmov_window except ImportError: raise nose.SkipTest # min_periods vals = Series(np.random.randn(10)) vals[4] = np.nan vals[8] = np.nan xp = mom.rolling_mean(vals, 5, min_periods=4, center=True) rs = mom.rolling_window(vals, 5, 'boxcar', min_periods=4, center=True) assert_series_equal(xp, rs)
def test_cmov_window_special(self): tm._skip_if_no_scipy() try: from scikits.timeseries.lib import cmov_window except ImportError: raise nose.SkipTest("no scikits.timeseries") win_types = ["kaiser", "gaussian", "general_gaussian", "slepian"] kwds = [{"beta": 1.0}, {"std": 1.0}, {"power": 2.0, "width": 2.0}, {"width": 0.5}] for wt, k in zip(win_types, kwds): vals = np.random.randn(10) xp = cmov_window(vals, 5, (wt,) + tuple(k.values())) rs = mom.rolling_window(Series(vals), 5, wt, center=True, **k) assert_series_equal(Series(xp), rs)
def test_cmov_window_special(self): try: from scikits.timeseries.lib import cmov_window except ImportError: raise nose.SkipTest win_types = ['kaiser', 'gaussian', 'general_gaussian', 'slepian'] kwds = [{'beta' : 1.}, {'std' : 1.}, {'power' : 2., 'width' : 2.}, {'width' : 0.5}] for wt, k in zip(win_types, kwds): vals = np.random.randn(10) xp = cmov_window(vals, 5, (wt,) + tuple(k.values())) rs = mom.rolling_window(Series(vals), 5, wt, center=True, **k) assert_series_equal(Series(xp), rs)
def test_rolling_functions_window_non_shrinkage(self): # GH 7764 s = Series(range(4)) s_expected = Series(np.nan, index=s.index) df = DataFrame([[1,5], [3, 2], [3,9], [-1,0]], columns=['A','B']) df_expected = DataFrame(np.nan, index=df.index, columns=df.columns) df_expected_panel = Panel(items=df.index, major_axis=df.columns, minor_axis=df.columns) functions = [lambda x: mom.rolling_cov(x, x, pairwise=False, window=10, min_periods=5), lambda x: mom.rolling_corr(x, x, pairwise=False, window=10, min_periods=5), lambda x: mom.rolling_max(x, window=10, min_periods=5), lambda x: mom.rolling_min(x, window=10, min_periods=5), lambda x: mom.rolling_sum(x, window=10, min_periods=5), lambda x: mom.rolling_mean(x, window=10, min_periods=5), lambda x: mom.rolling_std(x, window=10, min_periods=5), lambda x: mom.rolling_var(x, window=10, min_periods=5), lambda x: mom.rolling_skew(x, window=10, min_periods=5), lambda x: mom.rolling_kurt(x, window=10, min_periods=5), lambda x: mom.rolling_quantile(x, quantile=0.5, window=10, min_periods=5), lambda x: mom.rolling_median(x, window=10, min_periods=5), lambda x: mom.rolling_apply(x, func=sum, window=10, min_periods=5), lambda x: mom.rolling_window(x, win_type='boxcar', window=10, min_periods=5), ] for f in functions: try: s_result = f(s) assert_series_equal(s_result, s_expected) df_result = f(df) assert_frame_equal(df_result, df_expected) except (ImportError): # scipy needed for rolling_window continue functions = [lambda x: mom.rolling_cov(x, x, pairwise=True, window=10, min_periods=5), lambda x: mom.rolling_corr(x, x, pairwise=True, window=10, min_periods=5), # rolling_corr_pairwise is depracated, so the following line should be deleted # when rolling_corr_pairwise is removed. lambda x: mom.rolling_corr_pairwise(x, x, window=10, min_periods=5), ] for f in functions: df_result_panel = f(df) assert_panel_equal(df_result_panel, df_expected_panel)
def plot_window(win_type): df2 = rolling_window(df, 22, win_type) df2.columns = [win_type] df2.plot(ax=ax)