こんにちは、stat.ethz.chから例を挙げました。
## Now let's look at some artificial data:
x <- seq(100000)/1000 # pretend we're sampling at 1 kHz
## We'll put in two frequency components, plus a dc offset
f1 <- 5 # Hz
f2 <- 2 # Hz
y <- 0.1*sin(2*pi*f1*x) + sin(2*pi*f2*x) + 50
fft.y <- fft(y)
delta <- x[2] - x[1]
f.Nyquist <- 1 / 2 / delta
f <- f.Nyquist*c(seq(length(x)/2), -rev(seq(length(x)/2)))/(length(x)/2)
par(mfrow=c(2,2))
plot(x,y, type='l', xlim=c(0,20))
plot(f, Mod(fft.y), type='l', log='y')
## Now let's zoom in and mark the points were I expect to see peaks:
plot(f, Mod(fft.y), type='l', log='y', xlim=c(-10,10))
現在、分析するデータフレームがあります-df. df の最初の列 (V1) は日付、2 番目の列 (V2) です。ポイントを設定しましたが、f (ナイキストを行っている) のように、常にもう 1 つの fft 値を取得しています。そのため、「「x」と「y」の長さが異なります」。どこに問題があるのかわからない!
y <- df$V2
fft.y <- fft(y)
delta <- 10 # I know that there are 10sec between values
f.Nyquist <- 1 / 2 / delta
f <- f.Nyquist*c(seq(length(df$V1)/2), -rev(seq(length(df$V1)/2)))/(length(df$V1)/2)
df は次のようになります。
07032012-185821;20.0
07032012-185831;12.0
07032012-185841;14.0
そして約20000の観測があります
手伝ってくれてありがとう!