我无法将 R 包 psd 中的 psd 范围扩展到 1.5Hz 的频率

I am unable to get the psd range in R package psd to extend to a frequency of 1.5Hz

我有一个时间序列,我需要使用 R 的 PSD 值。数据以不均匀的间隔采样,但我使用预测命令进行了样条插值,以精确地在 0.01 秒内插值读数。我可以非常正确地从 spec.pgram 获得振幅值,但它们不是 psd 值。然而,来自 psd 包的 pspectrum 命令的 psd 值仅在 0 到 0.5Hz 之间,而我感兴趣的区域扩展到大约 1.2Hz。时间序列为:here

请注意,您的时间点不是等距的。为了这个答案,我们假设频率为每秒 12 个样本。

您必须为 psd::pspectrum 指定频率。假设您的数据作为 data.frame 加载,名为 x:

out <- pspectrum(x[, 2], x.frqsamp = 12)
plot(out)

pspectrum函数还有更详细的剧情:

out <- pspectrum(x[, 2], x.frqsamp = 12, plot = TRUE)

备选

你也可以使用stats::spectrum,但它需要你创建一个ts对象:

our_ts <- ts(data = x[, 2], 
             start = 0, 
             frequency = 12)
plot(stats::spectrum(our_ts))


编辑:给定新数据集(频率=100)

x <- read.csv("test2.csv", header = F)

out <- pspectrum(x[, 2], x.frqsamp = 100)
out$freq[which.max(out$spec)]
# [1] 0.265708

our_ts <- ts(data = x[, 2], start = 4, frequency = 100)
out2 <- stats::spectrum(our_ts)
out2$freq[which.max(out2$spec)]
# [1] 0.2777778