使用python查找信号的周期性

数据挖掘 Python 时间序列 数据科学模型 数学
2022-03-05 23:47:11

我有一个数据集,其中包含一个月内单人住宅中出现的水壶。在这个数据集中,“ts”列表示打开水壶的 unix-timestamp(可以转换为日期和时间);“第二”列表示水壶打开的持续时间(以秒为单位)。

我的要求 - 在数据中找到例程,评估它们的周期性和可变性。例如,一个例程可以是“早餐”,它的周期性可能是每天的某个时间,可变性可能是例程内发生的时间窗口。

我已经尝试过但我有点不确定 - 我绘制了原始信号与不同滞后量的自相关,发现与其任何滞后版本都没有显着相关性。但是在查看这个信号的图时,我看到每天早上都有峰值。此外,我尝试了去噪(使用 KNN 去噪)版本和欠采样版本(仅保留每月每一天的第一个和最后一个样本)的自相关,发现去噪信号也与其滞后不相关版本,但采样不足的信号是。

我首先不确定如何找到这样的信号的周期性,以及自相关图是否能让我们对周期性做出任何结论。

from statsmodels.tsa.stattools import acf
from statsmodels.graphics.tsaplots import plot_acf

# Compute the acf array 
acf_array = acf(q4['seconds'])
print(acf_array)

# Plot the acf function
plot_acf(q4['seconds'],alpha=0.05)
plt.show()

更多显示我所读内容的代码可以在 -这个链接上找到。 在此处输入图像描述

1个回答

一种选择是应用傅里叶变换,将时间变换到频域。当信号在频域中表示时,通常很容易找到重复出现的模式。