# Linear model change (CostLinear)#

Bases: BaseCost

Least-square estimate for linear changes.

Source code in ruptures/costs/costlinear.py
  8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 class CostLinear(BaseCost): r"""Least-square estimate for linear changes.""" model = "linear" def __init__(self): """Initialize the object.""" self.signal = None self.covar = None self.min_size = 2 def fit(self, signal) -> "CostLinear": """Set parameters of the instance. The first column contains the observed variable. The other columns contains the covariates. Args: signal (array): signal of shape (n_samples, n_regressors+1) Returns: self """ assert signal.ndim > 1, "Not enough dimensions" self.signal = signal[:, 0].reshape(-1, 1) self.covar = signal[:, 1:] return self def error(self, start, end) -> float: """Return the approximation cost on the segment [start:end]. Args: start (int): start of the segment end (int): end of the segment Returns: segment cost Raises: NotEnoughPoints: when the segment is too short (less than min_size samples). """ if end - start < self.min_size: raise NotEnoughPoints y, X = self.signal[start:end], self.covar[start:end] _, residual, _, _ = lstsq(X, y, rcond=None) return residual.sum() 

## __init__()#

Initialize the object.

Source code in ruptures/costs/costlinear.py
 13 14 15 16 17 def __init__(self): """Initialize the object.""" self.signal = None self.covar = None self.min_size = 2 

## error(start, end)#

Return the approximation cost on the segment [start:end].

Parameters:

Name Type Description Default
start int

start of the segment

required
end int

end of the segment

required

Returns:

Type Description
float

segment cost

Raises:

Type Description
NotEnoughPoints

when the segment is too short (less than min_size samples).

Source code in ruptures/costs/costlinear.py
 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 def error(self, start, end) -> float: """Return the approximation cost on the segment [start:end]. Args: start (int): start of the segment end (int): end of the segment Returns: segment cost Raises: NotEnoughPoints: when the segment is too short (less than min_size samples). """ if end - start < self.min_size: raise NotEnoughPoints y, X = self.signal[start:end], self.covar[start:end] _, residual, _, _ = lstsq(X, y, rcond=None) return residual.sum() 

## fit(signal)#

Set parameters of the instance. The first column contains the observed variable. The other columns contains the covariates.

Parameters:

Name Type Description Default
signal array

signal of shape (n_samples, n_regressors+1)

required

Returns:

Type Description
CostLinear

self

Source code in ruptures/costs/costlinear.py
 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 def fit(self, signal) -> "CostLinear": """Set parameters of the instance. The first column contains the observed variable. The other columns contains the covariates. Args: signal (array): signal of shape (n_samples, n_regressors+1) Returns: self """ assert signal.ndim > 1, "Not enough dimensions" self.signal = signal[:, 0].reshape(-1, 1) self.covar = signal[:, 1:] return self