# staircase.Stairs.cov#

Stairs.cov(other, where=(<staircase.constants.NegInf object>, <staircase.constants.Inf object>), lag=0, clip='pre')#

Calculates either covariance, autocovariance or cross-covariance.

The calculation is between two step functions described by self and other. If lag is None or 0 then covariance is calculated, otherwise cross-covariance is calculated. Autocovariance is a special case of cross-covariance when other is equal to self.

Parameters
other: :class:`Stairs`

the stairs instance with which to compute the covariance

wheretuple or list of length two, optional
Indicates the domain interval over which to perform the calculation.

Default is (-sc.inf, sc.inf) or equivalently (None, None).

lagint, float, pandas.Timedelta

A pandas.Timedelta is only valid when domain is date-like.

clip{‘pre’, ‘post’}, default ‘pre’

Only relevant when lag is non-zero. Determines if the domain is applied before or after other is translated. If ‘pre’ then the domain over which the calculation is performed is the overlap of the original domain and the translated domain.

Returns
float

The covariance (or cross-covariance) between self and other

Examples

```>>> s1.cov(s2)
0.1404958677685951
```
```>>> s2.cov(s1)
0.1404958677685951
```
```>>> s1.cov(s2, where=(0, 6))
0.125
```
```>>> # autocovariance with lag 1
>>> s1.cov(s1, where=(1, 5), lag=1)
-0.3333333333333333
```
```>>> # cross-covariance with lag 1
>>> s1.cov(s2, where=(1, 4.5), lag=1)
0.15999999999999998
```
```>>> # cross-covariance with lag 1
>>> s1.cov(s2, where=(1, 4.5), lag=1, clip='post')
0.163265306122449
```