LombScargle#
- class astropy.timeseries.LombScargle(t, y, dy=None, fit_mean=True, center_data=True, nterms=1, normalization='standard')[源代码]#
-
计算Lomb擦伤周期图。
这里的实现基于 [1] 和 [2]; 如果您在学术应用程序中使用此功能,请引用这些作品。
- 参数:
- tNumPy:类似数组或数量 [:ref: 'time']
观察时间顺序
- y : array_like 或
Quantity
NumPy:类似数组或数量 与时间t相关的观察序列
- dy :
float
, array_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\) 在每个频率下的最佳拟合周期模型。
属性摘要
方法总结
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,则只返回频率限制,而不是完整的频率网格。
- samples_per_peak :
- 返回:
- 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
。
- method :
- 返回:
- frequency, power :
ndarray
恩达雷 频率和Lomb抖动功率
- frequency, power :
- design_matrix(frequency, t=None)[源代码]#
计算给定频率的设计矩阵。
- 参数:
- frequency :
float
Python :浮点 模型的频率
- t : array_like ,
Quantity
,或Time
(可选)NumPy:类似数组、数量或时间(可选) 时间(长度
n_samples
),在该位置计算模型。如果未指定,则使用输入数据的时间和不确定性。
- frequency :
- 返回:
- X :
array
数组 模型在给定频率下的设计矩阵。它的形状应该是 (
len(t)
,n_parameters
)。
- X :
- distribution(power, cumulative=False)[源代码]#
零假设下的期望周期图分布。
在高斯噪声的非变化信号的零假设下,计算周期图功率的期望概率分布或累积概率分布。请注意,这与峰值的预期分布不同;为此,请参见
false_alarm_probability()
方法。- 参数:
- power : array_likeNumpy:ARRAY_LIKE
计算分布的周期图幂。
- cumulative : bool ,可选可选的布尔
如果为True,则返回累积分布。
- 返回:
- dist :
np.ndarray
np.ndarray
与所提供的幂有关的概率密度或累积概率。
- dist :
- 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 :
float
Python :浮点 周期图的最大频率。
- method{'baluev','davies','naive','bootstrap'},可选
要使用的近似方法;default='baluev'。
- method_kwds :
dict
,可选Python:Dict,可选 附加方法特定关键字。
- 返回:
- power :
np.ndarray
np.ndarray
与指定的虚警概率相对应的周期图峰值高度。
- power :
笔记
最大峰值的真实概率分布无法通过分析确定,因此这里的每种方法都提供了一个近似值。可用的方法有:
“baluev”(默认值):别名自由概率的上限,使用baluev(2008)的方法 [1].
“戴维斯”:来自巴鲁耶夫的戴维斯上限(2008) [1].
“天真”:基于独立频率估计有效数量的近似概率。
“bootstrap”:基于输入数据的bootstrap重采样的近似概率。可以使用特定于方法的关键字“n_bootstraps”(默认为1000)来设置样本数。
还要注意的是,对于normalization='psd',只能计算用指定误差构造的周期图的分布。
工具书类
- 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 :
float
Python :浮点 周期图的最大频率。
- method_kwds :
dict
,可选Python:Dict,可选 附加方法特定关键字。
- 返回:
- false_alarm_probability :
np.ndarray
np.ndarray
虚警概率
- false_alarm_probability :
笔记
最大峰值的真实概率分布无法通过分析确定,因此这里的每种方法都提供了一个近似值。可用的方法有:
“baluev”(默认值):别名自由概率的上限,使用baluev(2008)的方法 [1].
“戴维斯”:来自巴鲁耶夫的戴维斯上限(2008) [1].
“天真”:基于独立频率估计有效数量的近似概率。
“bootstrap”:基于输入数据的引导重采样的近似概率。
还要注意的是,对于normalization='psd',只能计算用指定误差构造的周期图的分布。
工具书类
- classmethod from_timeseries(timeseries, signal_column_name=None, uncertainty=None, **kwargs)#
从时间序列对象初始化周期图。
如果通过了入库的时间序列,则使用入库中心的时间。另请注意,此方法在初始化周期图时自动删除NaN/未定义的值。
- model(t, frequency)[源代码]#
计算给定频率下的Lomb擦伤模型。
特定频率下的模型是线性模型:模型=偏移量+点(设计矩阵,模型参数)
- 参数:
- tNumPy:类似数组或数量 [:ref: 'time']
时间(长度
n_samples
),在该位置计算模型。- frequency :
float
Python :浮点 模型的频率
- 返回:
- y :
np.ndarray
np.ndarray
与输入时间相对应的模型拟合(将具有长度
n_samples
)。
- y :
- 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}}\) 此函数返回的参数数组。
- 参数:
- 返回:
- theta :
np.ndarray
(n_参数,)np.ndarray公司(n_参数,) 在给定频率下的最佳拟合模型参数。
- theta :
- 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抖动功率
- power :