Stationarity task

This task is designed to identify if the noise spectrum during the time of short-duration signal is elevated with respect to other nearby time periods. It has been noted in previous publications that if the PSD is incorrectly measured, this could result in a spurious GW candidate. This task is based on Mozzon et al. 2020.

Requirements

This task requires the following packages that may not be included in the requirements list for dqrtasks:

  • gwpy

  • gwdetchar

  • bilby

Description

The statistic reported by this task, \(\rho\), is calculated with a short-duration PSD (often 8 seconds long), \(S_G\), and a long-duration PSD (often 512 seconds long), \(S_L\). The statistic is also weighted by the frequency spectrum of a binary inspiral, \(f^{-7/3}\). The full equation is as follows:

\(\rho = \sum_f \frac{S_L(f)}{f^{-7/3}} \times \sum_f \frac{f^{-7/3}S_G(f)}{S_L^2(f)}\)

In short, this statistic is a frequency-weighted ratio of the short PSD to the long PSD. The statistic is normalized so that the mean value is 1.

To calculated the p-value reported by this task, a segment of Gaussian noise is generated with bilby that has the same noise spectrum as the long duration PSD. The same statistic used in this task is them calculated over every distinct segments in the simulated data. The distribution of values from this test is then compared against the statistic measured using real data. Therefore this p-value is “the probability that Gaussian noise could produce a stationarity statistic higher than the value measured with real data.”

Note that any gravitational-wave signal present in the data is not subtracted before the statistic is calculated. A particularly loud GW signal may therefore produce a result that is inconsistent with Gaussian noise.

Relationship between stationarity statistic and p-value

In Mozzon et al. 2020, they report that LIGO data has a theoretical (measured) variance in the PSD stationarity statistic of \(1.25 \times 10^{-3}\) (\(1.7 \times 10^{-3}\)). This means that that a p-value of \(0.01\) corresponds to a statistic of \(\approx 1.09 = 1 + \sqrt(1.25 \times 10^{-3}) * 2.3\) (\(1.095\)), as a p-value of \(0.01\) roughly corresponds to a \(2.3\sigma\) deviation from the mean.

Historically, stricter thresholds on the stationarity statistic have been used to indicate non-stationary data than a p-value of 0.05 or 0.01. For example, in Mozzon et al. 2022, they use a threshold of \(>1.2\) to indicate non-stationary data. Using the measured variance value of \(1.7e-3\), this corresponds to a \(4.85\sigma\) deviation, or a p-value of \(6 \times 10^{-7}\). Similarly, a threshold of \(>2.0\) would be the same as a p-value threshold of \(6 \times 10^{-130}\).

Example command-line

This is the help message:

$ dqr-stationarity --help
usage: dqr-stationarity [-h] [-t TAG] [-v] [--output-dir OUTPUT_DIR]
                        [--channel CHANNEL] [--frame-type FRAME_TYPE]
                        [--source SOURCE] [--science-flag SCIENCE_FLAG]
                        [--threshold THRESHOLD] [--long-seg-len LONG_SEG_LEN]
                        [--short-seg-len SHORT_SEG_LEN] [--fft-len FFT_LEN]
                        [--overlap OVERLAP] [--psd-var-stride PSD_VAR_STRIDE]
                        [--psd-method PSD_METHOD] [--psd-window PSD_WINDOW]
                        [--f-low F_LOW] [--f-high F_HIGH]
                        [--resample_rate RESAMPLE_RATE] [--window WINDOW]
                        [--padding PADDING]
                        [--data-crop-window DATA_CROP_WINDOW] [--q-low Q_LOW]
                        [--q-high Q_HIGH] [--v-min V_MIN] [--v-max V_MAX]
                        [--plot-window-before PLOT_WINDOW_BEFORE]
                        [--plot-window-after PLOT_WINDOW_AFTER]
                        [--plot-f-low PLOT_F_LOW] [--plot-f-high PLOT_F_HIGH]
                        [--gate-data] [--pvalue-threshold PVALUE_THRESHOLD]
                        gps

DQR task that checks the stationarity of the data

positional arguments:
  gps

optional arguments:
  -h, --help            show this help message and exit
  -t TAG, --tag TAG
  -v, --verbose
  --output-dir OUTPUT_DIR
  --channel CHANNEL
  --frame-type FRAME_TYPE
  --source SOURCE
  --science-flag SCIENCE_FLAG
  --threshold THRESHOLD
  --long-seg-len LONG_SEG_LEN
  --short-seg-len SHORT_SEG_LEN
  --fft-len FFT_LEN
  --overlap OVERLAP
  --psd-var-stride PSD_VAR_STRIDE
  --psd-method PSD_METHOD
  --psd-window PSD_WINDOW
  --f-low F_LOW
  --f-high F_HIGH
  --resample_rate RESAMPLE_RATE
  --window WINDOW
  --padding PADDING
  --data-crop-window DATA_CROP_WINDOW
  --q-low Q_LOW
  --q-high Q_HIGH
  --v-min V_MIN
  --v-max V_MAX
  --plot-window-before PLOT_WINDOW_BEFORE
  --plot-window-after PLOT_WINDOW_AFTER
  --plot-f-low PLOT_F_LOW
  --plot-f-high PLOT_F_HIGH
  --gate-data
  --pvalue-threshold PVALUE_THRESHOLD

Example config

[stationarity]
description = stationarity test
librarian = derek.davis@ligo.org
include_in_dag = True
tier = 1
question = Are known sources of noise without auxiliary witnesses active?
executable = dqr-stationarity
request_memory = 400MB
arguments = "${t_0} -v --output-dir ${outdir}   --channel V1:Hrec_hoft_16384Hz   --frame-type V1Online   --threshold 2   --long-seg-len 512   --short-seg-len 8   --fft-len 4   --overlap 2   --psd-var-stride 0.1   --psd-method median   --psd-window hann   --f-low 20   --f-high 480   --resample_rate 4096   --window 500   --padding 4   --data-crop-window 32   --q-low 5   --q-high 6   --v-min 0   --v-max 16   --plot-window-before 10   --plot-window-after 2   --plot-f-low 10   --plot-f-high 1000"

Example results page

An example page for GW170817 can be found here.