Moving Linear Regression

The signal samples of a signal trace can be processed with a moving linear regression over a number of signal samples, whereby each window of the signal samples is statistically analyzed, and a linear regression trace collection is returned.

Create the Trace Collection

You can process the signal samples with a statistically analyzed moving linear regression by calling the method moving_regression().

An linear regression trace collection is returned.

>>> # moving linear regression over a number of samples
>>> traces = Trace('Signal', [1, 2, 3]).moving_regression(2)
>>> traces
LinearRegressionTraces(level=Trace(label='Signal:regression:level',
                                   samples=[1.0, 2.0, 3.0]),
  slope=Trace(label='Signal:regression:slope',
              samples=[0.0, 1.0, 1.0]),
  intercept=Trace(label='Signal:regression:intercept',
                  samples=[1.0, 1.0, 2.0]),
  mean=Trace(label='Signal:regression:mean',
               samples=[1, 1.5, 2.5]),
  median=Trace(label='Signal:regression:median',
                 samples=[1.0, 1.5, 2.5]),
  minimum=Trace(label='Signal:regression:minimum',
                samples=[1, 1, 2]),
  maximum=Trace(label='Signal:regression:maximum',
                samples=[1, 2, 3]),
  range=Trace(label='Signal:regression:range',
              samples=[0, 1, 1]),
  error=Trace(label='Signal:regression:error',
              samples=[0.0, 0.0, 0.0]),
  negative_error=Trace(label='Signal:regression:negative_error',
                       samples=[0.0, 0.0, 0.0]),
  positive_error=Trace(label='Signal:regression:positive_error',
                       samples=[0.0, 0.0, 0.0]),
  absolute_error=Trace(label='Signal:regression:absolute_error',
                       samples=[0.0, 0.0, 0.0]),
  variance=Trace(label='Signal:regression:variance',
                 samples=[0.0, 0.0, 0.0]),
  deviation=Trace(label='Signal:regression:deviation',
                  samples=[0.0, 0.0, 0.0]),
  skew=Trace(label='Signal:regression:skew',
             samples=[0.0, 0.0, 0.0]),
  kurtosis=Trace(label='Signal:regression:kurtosis',
                 samples=[0.0, 0.0, 0.0]))

Note

The moving linear regression uses the first signal sample as the preset value to generate the windows for the first number of signal samples.

Figure

You can visualize the trace collection with a figure containing the subplots of the traces in the collection by calling the method figure().

>>> figure = Trace('Signal', [1, 2, 3]).moving_regression(2).figure()

(Source code, html)