meus espectros de potência são críveis? uma comparação entre lomb-scargle e fft (scipy.signal e numpy.fft)

Alguém poderia gentilmente apontar porque eu tenho resultados muito diferentes?
Existem muitos picos que não devem aparecer. Na verdade, deve haver apenas um pico.
Eu sou um novato python e todos os comentários sobre o meu código abaixo são bem-vindos.

Os dados do teste estão aqui.insira a descrição do link aqui
Você pode diretamentewget https://clbin.com/YJkwr .
Sua primeira coluna é o tempo de chegada de uma série de fótons. Uma fonte de luz emite fótons aleatoriamente. O tempo total é de 55736 e existem 67398 fótons. Eu tento detectar algum tipo de periodicidade da intensidade da luz.
Podemos agrupar o tempo e a intensidade da luz é proporcional aos números de fótons em cada intervalo de tempo.

Eu tentei numpy.fft e lomb-scargle de scipy.signal para fazer seu espectro de potência, mas obtive resultados muito diferentes.

fft
 import pylab as pl
 import numpy as np

 timepoints=np.loadtxt('timesequence',usecols=(0,),unpack=True,delimiter=",")
 binshu=50000
 interd=54425./binshu  
 t=np.histogram(timepoints,bins=binshu)[0]
 sp = np.fft.fft(t)
 freq = np.fft.fftfreq(len(t),d=interd)  
 freqnum = np.fft.fftfreq(len(t),d=interd).argsort()  
 pl.xlabel("frequency(Hz)")
 pl.plot(freq[freqnum],np.abs(sp)[freqnum])

lomb-scargle
 timepoints=np.loadtxt('timesequence',usecols=(0,),unpack=True,delimiter=",")
 binshu=50000
 intensity=np.histogram(timepoints,bins=binshu)[0].astype('float64') 
 middletime=np.histogram(timepoints,bins=binshu)[1][1:binshu+1]-np.histogram(timepoints,bins=binshu)[1][3]*0.5
 freq1=1./(timepoints.max()-timepoints.min())
 freq2=freq1*len(timepoints)
 freqs=np.linspace(freq1,freq2,1000)
 pm1=spectral.lombscargle(middletime,intensity,freqs)

 pl.xlabel("frequency(Hz)")
 pl.plot(freqs,pm1)
 pl.xlim(0.5*freq1,2*freq2)
 pl.ylim(0,250)
 pl.show()

*********************************
Obrigado, Warren, eu agradeço. Obrigado pela sua resposta detalhada.

Você está certo, há um tempo de integração, aqui é em torno de 1,7s.
Há muitas exposições únicas. Cada exposição custa 1,7s
Em uma única exposição, não podemos informar sua hora de chegada com precisão.

Se as séries temporais forem semelhantes:
0 1,7 3,4 8,5 8,5

O tempo de integração dos dois últimos fótons é1.7s,não(8.5-3.4)sEntão eu vou revisar parte do seu código.

No entanto, minha pergunta ainda permanece. Você ajusta vários parâmetros para obter0.024Hz pico no pico lomb-scargle em algum grau. E você usa isso para guiar seus parâmetros no fft.

Se você não sabe o número0.024, talvez você possa usar parâmetros diferentes para obter um pico mais alto diferente?

Como garantir cada vez que podemos acertar onum_ls_freqs ? Você pode ver se escolhemos diferentesnum_ls_freqs, o pico mais alto muda.

Se eu tiver muitas séries temporais, toda vez que precisar especificar parâmetros diferentes? E como obtê-los?

questionAnswers(2)

yourAnswerToTheQuestion