moje widma mocy są wiarygodne? porównanie lomb-scargle i fft (scipy.signal i numpy.fft)

Czy ktoś może uprzejmie wskazać, dlaczego otrzymuję bardzo różne wyniki?
Istnieje wiele pików, które nie powinny się pojawić. W rzeczywistości powinien być tylko jeden szczyt.
Jestem newbie python i wszystkie komentarze na temat mojego kodu poniżej są mile widziane.

Dane testowe są tutaj.wprowadź opis linku tutaj
Możesz bezpośredniowget https://clbin.com/YJkwr .
Jego pierwszą kolumną są czasy przybycia dla serii fotonów. Źródło światła emituje losowo fotony. Całkowity czas wynosi 55736s i jest 67398 fotonów. Próbuję wykryć pewnego rodzaju okresowość natężenia światła.
Możemy zsumować czas i natężenie światła proporcjonalnie do liczby fotonów w każdym przedziale czasu.

Próbowałem numpy.fft i lomb-scargle z scipy.signal, aby uzyskać jego widmo mocy, ale otrzymałem bardzo różne wyniki.

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])

larg-lombard
 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()

*********************************
Dziękuję, Warren, doceniam to. Dziękuję za szczegółową odpowiedź.

Masz rację, jest czas integracji, tutaj jest około 1,7s.
Istnieje wiele pojedynczych ekspozycji. Każda ekspozycja kosztuje 1,7 s
W jednej ekspozycji nie możemy dokładnie określić czasu przybycia.

Jeśli szeregi czasowe są jak:
0 1,7 3,4 8,5 8,5

Czas integracji dwóch ostatnich fotonów wynosi1.7s,nie(8.5-3.4)s.Czy zmienię część twojego kodu.

Jednak moje pytanie nadal pozostaje. Dostosowujesz kilka parametrów, aby uzyskać0.024Hz szczyt piku lombardowego do pewnego stopnia. I używasz tego, by kierować swoimi parametrami w FFT.

Jeśli nie znasz numeru0.024, może możesz użyć różnych parametrów, aby uzyskać inny najwyższy szczyt?

Jak zagwarantować za każdym razem, gdy będziemy mogli to zrobićnum_ls_freqs ? Możesz zobaczyć, czy wybierzemy innynum_ls_freqs, najwyższy szczyt zmian.

Jeśli mam wiele szeregów czasowych, za każdym razem muszę określić inne parametry? I jak je zdobyć?

questionAnswers(2)

yourAnswerToTheQuestion