Coverage for pybreakpoints/baiperron.py : 90%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
""" Bai & Perron test for detecting multiple unknown breakpoints """
""" Bai & Perron breakpoint estimation
Parameters ---------- X : array-like, shape (n, p) Independent variables y : array-like, shape (n, ) Dependent variable h : int or float, optional Minimum segment size. If float, assumed to be fraction of total number of observations breaks : int, optional Number of breaks to fit. If None, will fit as many as possible given ``h`` minimum segment size
Returns ------- dict[int, np.ndarray] Locations of detected breaks for all possible numbers of breaks (1 - ``breaks``) np.ndarray Total RSS for each number of fitted breaks np.ndarray Bayesian Information Criterion (BIC) for each number of fitted breaks (lower is better)
TODO ---- * Dispatch / wrapper on X/y for pandas/xarray dtypes so we can translate the output break indices into index (i.e., date) values * Add references """
h = k + 1 raise ValueError('Minimum segment size `h` must be greater than ' 'number of regressors') raise ValueError('Minimum segment size `h` must be smaller than ' 'half the number of observations')
else: if breaks > breaks_default: breaks0 = breaks breaks = breaks_default logger.debug('Number of breaks requested {0} is too large, ' 'reducing to {1}'.format(breaks0, breaks))
# Calculate RSS for all possible points
# Find breaks
# Loop over possible breaks # Indexes for consideration RSS_tri[pot_index + 1, idx_])
# Find breaks breaks_: _extract_breaks(RSS_tri, RSS_table, RSS_index, breaks_, h) for breaks_ in range(breaks, 0, -1) }
# Find RSS and calculate BIC
# 0 breaks
# 1 - `breaks`
""" Calculate RSS for series given `bp` break locations """ RSS_tri[points[i] + 1, points[i + 1]] for i in range(len(points) - 1) ])
""" Return log-likelihood and degrees of freedom for breakpoint model
Parameters ---------- rss : float RSS n : int Number of observations k : int Number of regressors breaks : int Number of breaks fit
Returns ------- tuple (float, int) Log-likelihood and number of parameters estimated """ |