小编ror*_*ory的帖子

Python 中的快速傅立叶变换

我是傅立叶理论的新手,我看过关于如何将 fft 应用于信号并绘制它以查看它包含的频率的非常好的教程。不知何故,他们所有人都创建了混合正弦作为他们的数据,我无法将其适应我的真正问题。

我每天有 242 次每小时观察,这意味着我的周期是 24。所以我希望在我的 fft 图中有一个大约 24 的峰值。

我的 data.csv 示例在这里:https ://pastebin.com/1srKFpJQ

绘制的数据:

该系列

我的代码:

data = pd.read_csv('data.csv',index_col=0)
data.index = pd.to_datetime(data.index)
data = data['max_open_files'].astype(float).values

N = data.shape[0] #number of elements
t = np.linspace(0, N * 3600, N) #converting hours to seconds
s = data

fft = np.fft.fft(s)
T = t[1] - t[0]

f = np.linspace(0, 1 / T, N)
plt.ylabel("Amplitude")
plt.xlabel("Frequency [Hz]")
plt.bar(f[:N // 2], np.abs(fft)[:N // 2] * 1 / N, width=1.5)  # 1 / N …
Run Code Online (Sandbox Code Playgroud)

python numpy fft

7
推荐指数
1
解决办法
5759
查看次数

在 Python 中 findfrequency spec.ar 等效

R 中有一个非常有用的函数在包上调用findfrequencyforecast它返回时间序列的主频率周期。可以在此处找到有关作者功能的更多信息:https : //robjhyndman.com/hyndsight/tscharacteristics/

我想在 Python 中实现一些等效的东西,但我在处理应该等于spec.arfindfrequency 内的R 函数的函数时遇到了问题。

该函数从去趋势序列开始,这很容易用x = statsmodels.tsa.tsatools.detrend(myTs, order=1, axis=0). 现在我有了残差,我想在 Python 中做相当于spec.arR中的函数,它首先将 AR 模型拟合到 x(或使用现有拟合)并计算(并默认绘制)拟合模型的谱密度.

我没有发现任何类似的东西,所以我一次做每一步,首先是 AR,然后是规格估计。我正在使用Airpassengers时间序列,但对于 AR 顺序或系数,我无法在 R 和 Python 上获得相同的结果。

我的R代码:

x <- AirPassengers
x <- residuals(tslm(x ~ trend))
ARmodel <- ar(x)
ARmodel
Run Code Online (Sandbox Code Playgroud)

我知道 15 是我的自回归模型的选定顺序。

我的 Python 代码:

import statsmodels.api as sm
dataPeriodic = pd.read_csv('AirPassengers.csv')
tsPeriodic = dataPeriodic.iloc[:,1]
x = statsmodels.tsa.tsatools.detrend(tsPeriodic, order=1, axis=0)
n = x.shape[0]
est_order = …
Run Code Online (Sandbox Code Playgroud)

signals time-series statsmodels forecast

6
推荐指数
1
解决办法
196
查看次数

标签 统计

fft ×1

forecast ×1

numpy ×1

python ×1

signals ×1

statsmodels ×1

time-series ×1