从稀疏采样数据中确定频率

3
我正在观察一个正弦波变化的源,即 f(x) = a sin (bx + d) + c,并希望确定振幅 a、偏移量 c 和周期/频率 b - 移位 d 不重要。测量结果稀疏,每个源通常测量 6 到 12 次,并且观测时间是随机的,观测间隔大约在四分之一到十倍周期之间(强调一下,每个源的观测间距不是恒定的)。在每个源中,偏移 c 通常比测量误差大得多,而振幅则有所变化 - 在极端情况下,它们仅与测量误差相当,而在另一种极端情况下,它们大约是误差的二十倍。希望这充分概述了问题,如果没有,请问我并进行澄清。
直觉地思考这个问题,测量值的平均值将是偏移 c 的良好估计值,而测量 f(x) 最小值和最大值之间的范围的一半将是振幅的合理估计值,特别是随着测量次数的增加,观察到从平均值偏离的最大值的前景会改善。然而,如果振幅很小,那么我认为几乎没有机会准确地确定 b,而对于大振幅源,即使它们只被观察了最少的次数,前景也应该更好。
无论如何,我编写了一些代码来对数据进行最小二乘拟合,以适应周期范围,并且对于较大振幅的源有效地识别出最佳拟合值 a、b 和 d。然而,我看到它找到了许多可能的周期,虽然其中一个是“最佳的”(在尽可能给出最小误差加权残差的情况下),但在大多数情况下,不同候选周期的残差差异并不大。因此,我现在想量化导出周期是“假阳性”的可能性(或者稍微换句话说,我可以对导出周期的正确性有多大信心)。
有人对如何最好地继续进行有任何建议吗?我想到的一个想法是使用 Monte-Carlo 算法构造大量具有已知 a、b 和 c 值的源,构造与我的测量时间相对应的样本,用我的拟合代码拟合所得样本,并查看我恢复正确周期的百分比。但是这似乎非常繁重,而且我不确定它是否特别有用,除了给出假阳性率的一般感觉。
还有任何可以帮助的框架建议吗?我有一种感觉,在 Mathematica 中可能只需要一行或两行代码就能完成这项工作,但是(a)我不知道它,(b)也没有访问权限。我精通 Java,熟练掌握 IDL,并且可能可以弄清楚其他东西...

两个问题:你能假设一些测量时间的概率模型吗(或者更好的是,测量之间的时间)?对于每次测量,你都有一个(带噪声的)f(x)值和一个(精确的)x值。 - leonbloy
测量已经完成,因此时间完全确定。有些测量是重复的,因此存在一些相对接近的配对,但即便如此,“接近配对”之间的分离也占整个周期的一个显著部分。通常,在测量中的分离大约是周期的几倍到十倍左右。对于每次测量,我们都有一个相关的误差。正弦波的周期是我真正想要恢复的量。 - strmqm
你是否对时间段有先前的期望?你可以绘制适合残差与适合时间段的图表,并根据先前分布进行加权。 - nibot
很不幸,目前时间段未知且范围不确定。我试图避开实际的问题领域以保持简单(并避免让人们望而却步!),但这可能是一个错误:为了添加一些背景,我正在研究通过径向速度(RV)测量来计算双星轨道周期。这些通常每月观察一次,但有些重复测量相隔几天。轨道周期不能小于几天,因为恒星会合并,但同样不能长于十几天,因为在接近观察中看到了显著的RV变化。 - strmqm
你是否了解奈奎斯特采样定理?它可能适用于这里。 - mhum
3个回答

4
这看起来是为在频域工作而量身定制的。应用傅里叶变换并根据功率所在的位置确定频率,这对于正弦波源应该很清楚。
补充说明:为了了解您的估计有多准确,我建议尝试重采样方法,如交叉验证。我认为这就是您使用蒙特卡罗思路的方向;许多工作已经完成,希望这不是您需要重新发明的轮子。

我已经尝试了多种周期性搜索方法(例如Lomb-Scargle或字符串长度),但是我遇到了同样的问题——采样不足以抑制周期图中的假峰,因此我无法确定正确的周期。在大多数情况下,似乎我能做的最好的就是突出显示最强的周期性,并在可能的情况下给出置信度。但我不知道如何做 :) - strmqm
@strmqm - 啊,我没意识到你在频域工作。 - Michael J. Barber
谢谢,那个重采样链接看起来非常有用 - 我以前没有遇到过。我会进行实验。我并没有明确地在频域中工作,而是尝试了一些途径来尝试取得进展。 - strmqm

1

这里的诀窍是做起来可能会让问题更加困难的事情。将 f 以类似的形式重写:

f(x) = a1*sin(b*x) + a2*cos(b*x) + c

这是基于sin(u+v)的恒等式。

请注意,如果已知b,则估计{a1,a2,c}的问题就是一个简单的线性回归问题。因此,您只需要使用一种单变量最小化工具,在b的值上工作,以最小化该线性回归模型中残差的平方和。有许多这样的单变量优化器可以找到。

一旦您获得了这些参数,就很容易找到原始模型中的参数a,因为这是您关心的全部内容。

a = sqrt(a1^2 + a2^2)

我所描述的方案被称为分区最小二乘法。

谢谢,我可能没有表达清楚,因为我最感兴趣的是b的数量,振幅和偏移量可以从数据的整体范围中相当准确地估计出来。如果我的最小二乘拟合锁定到错误的周期上,那么周期可能会大大不正确,因此我真正想知道的是我对“b”确定的信心程度。理想情况下,我希望有数十个跨越单个完整周期的测量值,但我做不到。 - strmqm
1
但是在进行估计时,您确实会得到一个时间段。b是什么?它是使平方和最小化的值。置信度估计更加困难,因为这需要您使用工具从非线性回归模型中计算出来。不过,使用标准技术很容易做到。 - user85109

1
如果您对噪声的大小和性质(例如具有SD sigma的白高斯噪声)有合理的估计,您可以执行以下操作:
(a) 反转Hessian矩阵以获取位置误差的估计值;
(b) 应该能够轻松地推导出拟合残差的显著性统计量。
对于(a),请参考http://www.physics.utah.edu/~detar/phys6720/handouts/curve_fit/curve_fit/node6.html 对于(b),假设您的测量误差是独立的,因此它们的总方差是它们方差的总和。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接