LombScargle#

class astropy.timeseries.LombScargle(t, y, dy=None, fit_mean=True, center_data=True, nterms=1, normalization='standard')[源代码]#

基类:BasePeriodogram

计算Lomb擦伤周期图。

这里的实现基于 [1][2]; 如果您在学术应用程序中使用此功能,请引用这些作品。

参数:
tNumPy:类似数组或数量 [:ref: 'time']

观察时间顺序

y : array_likeQuantityNumPy:类似数组或数量

与时间t相关的观察序列

dy : floatarray_like ,或 Quantity ,可选PYTHON:FLOAT、NUMPY:ARRAY_LIKE或QUANTITY,可选

与时间t相关的观测误差或序列

fit_mean : bool ,可选可选的布尔

如果为真,则在每个频率将恒定偏移作为模型的一部分。这可以导致更准确的结果,特别是在不完全阶段覆盖的情况下。

center_data : bool ,可选可选的布尔

如果为真,则通过减去输入数据的加权平均值来预居中数据。如果fit_mean=False,这一点尤其重要

nterms : int ,可选PYTHON:int,可选

傅里叶拟合中使用的项数

normalization{,可选','型号','日志''

用于周期图的规范化。

工具书类

[1]

Vanderplas,J.,Connolly,A.Ivezic,Z.和Gray,A。 天体物理机器学习简介 . 智能数据理解会议(2012年)

[2]

VanderPlas,J.和Ivezic,Z。 多波段天文时间序列的周期图 . ApJ 812.1:18(2015年)

实例

生成有噪声的周期性数据:

>>> rand = np.random.default_rng(42)
>>> t = 100 * rand.random(100)
>>> y = np.sin(2 * np.pi * t) + rand.standard_normal(100)

在自动确定的频率网格上计算Lomb抖动周期图,并找到最大功率的频率:

>>> frequency, power = LombScargle(t, y).autopower()
>>> frequency[np.argmax(power)]  
1.0007641728995051

在用户指定的频率网格上计算Lomb抖动周期图:

>>> freq = np.arange(0.8, 1.3, 0.1)
>>> LombScargle(t, y).power(freq)  
array([0.0792948 , 0.01778874, 0.25328167, 0.01064157, 0.01471387])

如果输入的是带有单位的astropy数量,那么将验证单位,并且输出也将是具有适当单位的数量:

>>> from astropy import units as u
>>> t = t * u.s
>>> y = y * u.mag
>>> frequency, power = LombScargle(t, y).autopower()
>>> frequency.unit
Unit("1 / s")
>>> power.unit
Unit(dimensionless)

请注意,Lomb Scargle power始终是一个无单位的量,因为它与 \(\chi^2\) 在每个频率下的最佳拟合周期模型。

属性摘要

available_methods 

方法总结

autofrequency([samples_per_peak, ...])

为数据确定合适的频率网格。

autopower([method, method_kwds, ...])

在自动确定的频率下计算Lomb抖动功率。

design_matrix(frequency[, t])

计算给定频率的设计矩阵。

distribution(power[, cumulative])

零假设下的期望周期图分布。

false_alarm_level(false_alarm_probability[, ...])

给定虚警概率下的最大值。

false_alarm_probability(power[, method, ...])

虚假设下周期图最大值的虚警概率。

from_timeseries(timeseries[, ...])

从时间序列对象初始化周期图。

model(t, frequency)

计算给定频率下的Lomb擦伤模型。

model_parameters(frequency[, units])

计算给定频率下的最佳拟合模型参数。

offset \()

返回模型的偏移。

power(frequency[, normalization, method, ...])

计算给定频率下的Lomb抖动功率。

属性文档

available_methods = ['auto', 'slow', 'chi2', 'cython', 'fast', 'fastchi2', 'scipy']#

方法文件

autofrequency(samples_per_peak=5, nyquist_factor=5, minimum_frequency=None, maximum_frequency=None, return_freq_limits=False)[源代码]#

为数据确定合适的频率网格。

注意,这假设峰值宽度由观测基线驱动,当基线远大于振荡周期时,这通常是一个好的假设。如果您要搜索的时间段比您的观察值的基线长,则这可能无法很好地执行。

即使基线较大,也要注意,返回的最大频率是基于“平均奈奎斯特频率”的概念,这可能对不规则采样数据无效。最大频率可以通过nyquist_factor参数或maximum_frequency参数进行调整。

参数:
samples_per_peak : float ,可选Python:Float,可选

穿过典型峰值的所需样本的近似数量

nyquist_factor : float ,可选Python:Float,可选

如果未提供最大频率,则用于选择最大频率的平均奈奎斯特频率的倍数。

minimum_frequency : float ,可选Python:Float,可选

如果指定,则使用此最小频率,而不是根据基线大小选择的频率。

maximum_frequency : float ,可选Python:Float,可选

如果指定,则使用此最大频率,而不是基于平均奈奎斯特频率选择的频率。

return_freq_limits : bool ,可选可选的布尔

如果为True,则只返回频率限制,而不是完整的频率网格。

返回:
frequencyNdarray或数量 [:ref: 'frequency']

试探法确定的最优频点

autopower(method='auto', method_kwds=None, normalization=None, samples_per_peak=5, nyquist_factor=5, minimum_frequency=None, maximum_frequency=None)[源代码]#

在自动确定的频率下计算Lomb抖动功率。

参数:
method : str ,可选Python:字符串,可选

指定要使用的lomb scargle实现。选项包括:

  • “auto”:根据输入选择最佳方法

  • “快速”:使用O [N对数N] 快速方法。请注意,这需要均匀分布的频率:默认情况下,将选中此选项,除非 assume_regular_frequency 设置为真。

  • “慢”:使用O [N^2] 纯python实现

  • “cython”:使用O [N^2] cython实现。这比method='slow'稍快,但内存效率要高得多。

  • “chi2”:使用O [N^2] chi2/线性拟合实施

  • “fastchi2”:使用O [N对数N] chi2实施。请注意,这需要均匀分布的频率:默认情况下,将选中此选项,除非 assume_regular_frequency 设置为真。

  • “scipy”:使用 scipy.signal.lombscargle ,这是个O [N^2] 用C编写的实现。请注意,这不支持异方差错误。

method_kwds : dict ,可选Python:Dict,可选

附加关键字扫描法

normalization{,可选','型号','日志''

如果指定,则重写实例化时指定的规范化。

samples_per_peak : float ,可选Python:Float,可选

穿过典型峰值的所需样本的近似数量

nyquist_factor : float ,可选Python:Float,可选

如果未提供最大频率,则用于选择最大频率的平均奈奎斯特频率的倍数。

minimum_frequencyPython:浮点或数量 [:ref: 'frequency'] ,可选

如果指定,则使用此最小频率,而不是根据基线大小选择的频率。应该是 Quantity 如果LombScarger的输入是 Quantity

maximum_frequencyPython:浮点或数量 [:ref: 'frequency'] ,可选

如果指定,则使用此最大频率,而不是基于平均奈奎斯特频率选择的频率。应该是 Quantity 如果LombScarger的输入是 Quantity

返回:
frequency, power : ndarray恩达雷

频率和Lomb抖动功率

design_matrix(frequency, t=None)[源代码]#

计算给定频率的设计矩阵。

参数:
frequency : floatPython :浮点

模型的频率

t : array_likeQuantity ,或 Time (可选)NumPy:类似数组、数量或时间(可选)

时间(长度 n_samples ),在该位置计算模型。如果未指定,则使用输入数据的时间和不确定性。

返回:
X : array数组

模型在给定频率下的设计矩阵。它的形状应该是 (len(t)n_parameters )。

distribution(power, cumulative=False)[源代码]#

零假设下的期望周期图分布。

在高斯噪声的非变化信号的零假设下,计算周期图功率的期望概率分布或累积概率分布。请注意,这与峰值的预期分布不同;为此,请参见 false_alarm_probability() 方法。

参数:
power : array_likeNumpy:ARRAY_LIKE

计算分布的周期图幂。

cumulative : bool ,可选可选的布尔

如果为True,则返回累积分布。

返回:
dist : np.ndarraynp.ndarray

与所提供的幂有关的概率密度或累积概率。

false_alarm_level(false_alarm_probability, method='baluev', samples_per_peak=5, nyquist_factor=5, minimum_frequency=None, maximum_frequency=None, method_kwds=None)[源代码]#

给定虚警概率下的最大值。

这给出了与最大峰值的指定虚警概率相对应的周期图水平的估计,假设具有高斯噪声的非变化数据为空假设。

参数:
false_alarm_probability : array_likeNumpy:ARRAY_LIKE

虚警概率(0<fap<1)。

maximum_frequency : floatPython :浮点

周期图的最大频率。

method{'baluev','davies','naive','bootstrap'},可选

要使用的近似方法;default='baluev'。

method_kwds : dict ,可选Python:Dict,可选

附加方法特定关键字。

返回:
power : np.ndarraynp.ndarray

与指定的虚警概率相对应的周期图峰值高度。

笔记

最大峰值的真实概率分布无法通过分析确定,因此这里的每种方法都提供了一个近似值。可用的方法有:

  • “baluev”(默认值):别名自由概率的上限,使用baluev(2008)的方法 [1].

  • “戴维斯”:来自巴鲁耶夫的戴维斯上限(2008) [1].

  • “天真”:基于独立频率估计有效数量的近似概率。

  • “bootstrap”:基于输入数据的bootstrap重采样的近似概率。可以使用特定于方法的关键字“n_bootstraps”(默认为1000)来设置样本数。

还要注意的是,对于normalization='psd',只能计算用指定误差构造的周期图的分布。

工具书类

[1] (1,2)

巴鲁耶夫,R.V.MNRAS 385,1279(2008年)

false_alarm_probability(power, method='baluev', samples_per_peak=5, nyquist_factor=5, minimum_frequency=None, maximum_frequency=None, method_kwds=None)[源代码]#

虚假设下周期图最大值的虚警概率。

基于高斯噪声的非变化数据的零假设,给出了给定周期图中最大峰值高度的虚警概率估计。

参数:
power : array_likeNumpy:ARRAY_LIKE

周期图值。

method{'baluev','davies','naive','bootstrap'},可选

要使用的近似方法。

maximum_frequency : floatPython :浮点

周期图的最大频率。

method_kwds : dict ,可选Python:Dict,可选

附加方法特定关键字。

返回:
false_alarm_probability : np.ndarraynp.ndarray

虚警概率

笔记

最大峰值的真实概率分布无法通过分析确定,因此这里的每种方法都提供了一个近似值。可用的方法有:

  • “baluev”(默认值):别名自由概率的上限,使用baluev(2008)的方法 [1].

  • “戴维斯”:来自巴鲁耶夫的戴维斯上限(2008) [1].

  • “天真”:基于独立频率估计有效数量的近似概率。

  • “bootstrap”:基于输入数据的引导重采样的近似概率。

还要注意的是,对于normalization='psd',只能计算用指定误差构造的周期图的分布。

工具书类

[1] (1,2)

巴鲁耶夫,R.V.MNRAS 385,1279(2008年)

classmethod from_timeseries(timeseries, signal_column_name=None, uncertainty=None, **kwargs)#

从时间序列对象初始化周期图。

如果通过了入库的时间序列,则使用入库中心的时间。另请注意,此方法在初始化周期图时自动删除NaN/未定义的值。

参数:
signal_column_name : strPython :字符串

包含要使用的信号值的列的名称。

uncertainty : strfloatQuantity ,可选PYTHON:字符串或PYTHON:浮点或数量,可选

包含信号错误的列的名称,或用于错误的值(如果是标量)。

**kwargs

其他关键字参数传递给此周期图类的初始值设定项。

model(t, frequency)[源代码]#

计算给定频率下的Lomb擦伤模型。

特定频率下的模型是线性模型:模型=偏移量+点(设计矩阵,模型参数)

参数:
tNumPy:类似数组或数量 [:ref: 'time']

时间(长度 n_samples ),在该位置计算模型。

frequency : floatPython :浮点

模型的频率

返回:
y : np.ndarraynp.ndarray

与输入时间相对应的模型拟合(将具有长度 n_samples )。

model_parameters(frequency, units=True)[源代码]#

计算给定频率下的最佳拟合模型参数。

这些参数描述的模型是:

\[y(t;f,\vec{\theta})=\theta_0+\sum_{n=1}^{\tt nterm} [\theta_{{2n-1}}\sin(2\pi n f t) + \theta_{{2n}}\cos(2\pi n f t)]\]

在哪里? \(\vec{{\theta}}\) 此函数返回的参数数组。

参数:
frequency : floatPython :浮点

模型的频率

units : bool布尔

如果为True(默认),则返回带有数据单位的设计矩阵。

返回:
theta : np.ndarray (n_参数,)np.ndarray公司(n_参数,)

在给定频率下的最佳拟合模型参数。

offset()[源代码]#

返回模型的偏移。

模型的偏移量是y值的(加权)平均值。注意如果self.center_数据为False,则偏移量定义为0。

返回:
offset : scalar标量
power(frequency, normalization=None, method='auto', assume_regular_frequency=False, method_kwds=None)[源代码]#

计算给定频率下的Lomb抖动功率。

参数:
frequencyNumPy:类似数组或数量 [:ref: 'frequency']

计算周期图的频率(不是角频率)。注意,为了使用method='fast',频率必须有规律地间隔。

method : str ,可选Python:字符串,可选

指定要使用的lomb scargle实现。选项包括:

  • “auto”:根据输入选择最佳方法

  • “快速”:使用O [N对数N] 快速方法。请注意,这需要均匀分布的频率:默认情况下,将选中此选项,除非 assume_regular_frequency 设置为真。

  • “慢”:使用O [N^2] 纯python实现

  • “cython”:使用O [N^2] cython实现。这比method='slow'稍快,但内存效率要高得多。

  • “chi2”:使用O [N^2] chi2/线性拟合实施

  • “fastchi2”:使用O [N对数N] chi2实施。请注意,这需要均匀分布的频率:默认情况下,将选中此选项,除非 assume_regular_frequency 设置为真。

  • “scipy”:使用 scipy.signal.lombscargle ,这是个O [N^2] 用C编写的实现。请注意,这不支持异方差错误。

assume_regular_frequency : bool ,可选可选的布尔

如果为真,假设输入频率的形式为freq=f0+df*np.arange公司(N) 一。仅当方法为“auto”或“fast”时引用。

normalization{,可选','型号','日志''

如果指定,则重写实例化时指定的规范化。

method_kwds : dict ,可选Python:Dict,可选

附加关键字扫描法

返回:
power : ndarray恩达雷

指定频率下的Lomb抖动功率