<p>There are some nice and well-tested routines to create periodograms and test the periodicities for significance in the <a href="https://docs.astropy.org/en/stable/timeseries/lombscargle.html" rel="nofollow noreferrer">astropy.timeseries</a> package, containing the LombScargle class.</p>
<p>This class includes a method for calculating the &quot;false alarm probability&quot;, which I think is almost what you are looking for. This gives the probability that you would see a periodogram peak as high as observed if the data had no periodicity at all, <em>at that particular frequency</em>.</p>
<p>To generalise this to whether you would detect a peak as high as observed at any frequency requires some sort of Monte-Carlo or bootstrapping technique, the latter is also implemented in the LombScargle class and can be conceptually understood as replacing each observation point with a value chosen randomly from your list of observations whilst keeping the time the same;  then the periodogram is
recomputed. Do this multiple times and you build up the distribution of peak heights in the periodogram for data which are essentially free of any periodic signal.</p>
<p>None of the above quite answers the question - what is the probability that the underlying source is periodic, given these data? Nor can it give you the probability that the source is <em>not</em> periodic. Both of these questions need to be answered by simulating data and folding it through your periodicity detection scheme.</p>
<p>These techniques and issues are discussed in detail by <a href="https://ui.adsabs.harvard.edu/abs/2018ApJS..236...16V/abstract" rel="nofollow noreferrer">Vanderplas (2018)</a> (particularly section 7), which is highly recommended and should be mandatory reading for anyone doing time-series analysis of light-curves.</p>

CC BY-SA 4.0
2022-04-10T17:14:44.120Z
This is very helpful! Thank you so much.
tgs123
CC BY-SA 4.0
2022-04-10T13:34:34.517Z
2022-04-10T13:34:34.517Z
ProfRob
<p>I have light curves for a particular star. I'm able to construct a periodogram of the stars' light curve, a plot of the power of the light curve vs. the signal's period. For a nonperiodic but irregular signal, I'd still expect to see some peaks and valleys on the periodogram just because of random noise. How could I distinguish the non-periodic stars from periodic signals given their light curves and/or periodograms?</p>

CC BY-SA 4.0
2022-04-10T05:49:09.420Z
Good question! You have "construct(ed) a periodogram of the stars' light curve, a plot of the power of the light curve vs. the signal's period" and now you want to know how to check if there are periodic signals of statistical significance. I don't know how, but I'm certain there are one or more different ways this can be done such that you can state the confidence level that the peak is not due to noise, as long as you have some information on the noise already present in your measurement. Do you have data taken at the same time of stars that are thought to be not-variable?
uhoh
<data-analysis><light-curve><variable-star>
How do you tell if a variable star is periodic or not by its light curve?
tgs123
# How do you tell if a variable star is periodic or not by its light curve?

(Asked by: username_0 on 2022-04-09)

I have light curves for a particular star. I'm able to construct a periodogram of the stars' light curve, a plot of the power of the light curve vs. the signal's period. For a nonperiodic but irregular signal, I'd still expect to see some peaks and valleys on the periodogram just because of random noise. How could I distinguish the non-periodic stars from periodic signals given their light curves and/or periodograms?

**Tags:** data-analysis, light-curve, variable-star

> **Comments:**
> **username_1**: Good question! You have "construct(ed) a periodogram of the stars' light curve, a plot of the power of the light curve vs. the signal's period" and now you want to know how to check if there are periodic signals of statistical significance. I don't know how, but I'm certain there are one or more different ways this can be done such that you can state the confidence level that the peak is not due to noise, as long as you have some information on the noise already present in your measurement. Do you have data taken at the same time of stars that are thought to be not-variable?  

---

## 1 answers

### Answer by username_2 on 2022-04-10. Score: 4 | Accepted answer

There are some nice and well-tested routines to create periodograms and test the periodicities for significance in the [astropy.timeseries](https://docs.astropy.org/en/stable/timeseries/lombscargle.html) package, containing the LombScargle class.

This class includes a method for calculating the "false alarm probability", which I think is almost what you are looking for. This gives the probability that you would see a periodogram peak as high as observed if the data had no periodicity at all, *at that particular frequency*.

To generalise this to whether you would detect a peak as high as observed at any frequency requires some sort of Monte-Carlo or bootstrapping technique, the latter is also implemented in the LombScargle class and can be conceptually understood as replacing each observation point with a value chosen randomly from your list of observations whilst keeping the time the same; then the periodogram is
recomputed. Do this multiple times and you build up the distribution of peak heights in the periodogram for data which are essentially free of any periodic signal.

None of the above quite answers the question - what is the probability that the underlying source is periodic, given these data? Nor can it give you the probability that the source is *not* periodic. Both of these questions need to be answered by simulating data and folding it through your periodicity detection scheme.

These techniques and issues are discussed in detail by [Vanderplas (2018)](https://ui.adsabs.harvard.edu/abs/2018ApJS..236...16V/abstract) (particularly section 7), which is highly recommended and should be mandatory reading for anyone doing time-series analysis of light-curves.

> **Comments:**
> **username_0**: This is very helpful! Thank you so much.  

---

