sind meine leistungsspektren glaubwürdig? ein Vergleich zwischen lomb-scargle und fft (scipy.signal und numpy.fft)

Kann jemand freundlich darauf hinweisen, warum ich sehr unterschiedliche Ergebnisse erhalte?
Es gibt viele Peaks, die nicht auftreten sollten. Tatsächlich sollte es nur einen Peak geben.
Ich bin ein Python-Neuling und alle Kommentare zu meinem Code unten sind willkommen.

Die Testdaten sind hier.Geben Sie hier die Beschreibung des Links ein
Sie können direktwget https://clbin.com/YJkwr .
Die erste Spalte enthält die Ankunftszeiten für eine Reihe von Photonen. Eine Lichtquelle emittiert Photonen nach dem Zufallsprinzip. Die Gesamtzeit beträgt 55736s und es gibt 67398 Photonen. Ich versuche, eine Art Periodizität der Lichtintensität festzustellen.
Wir können die Zeit und die Lichtintensität proportional zu den Photonenzahlen in jedem Zeitfenster einstellen.

Ich habe versucht, das Leistungsspektrum von numpy.fft und lomb-scargle von scipy.signal zu bestimmen, habe aber sehr unterschiedliche Ergebnisse erzielt.

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

**********************************
Vielen Dank, Warren, ich weiß es zu schätzen. Vielen Dank für Ihre ausführliche Antwort.

Sie haben Recht, es gibt eine Integrationszeit, hier sind es ungefähr 1,7s.
Es gibt viele Einzelaufnahmen. Jede Aufnahme kostet 1,7 s
Bei einer einzelnen Belichtung können wir die Ankunftszeit nicht genau angeben.

Wenn die Zeitreihen wie folgt lauten:
0 1,7 3,4 8,5 8,5

Die Integrationszeit der letzten beiden Photonen beträgt1.7s,nicht(8.5-3.4)sAlso werde ich einen Teil Ihres Codes überarbeiten.

JEDOCH bleibt meine Frage immer noch. Sie stellen mehrere Parameter ein, um die0.024Hz Spitze in lomb-scargle Spitze zu einem gewissen Grad. Und damit leiten Sie Ihre Parameter in fft.

Wenn Sie die Nummer nicht kennen0.024können Sie verschiedene Parameter verwenden, um einen anderen höchsten Peak zu erhalten?

Wie man garantiert, wann immer wir das richtig machen könnennum_ls_freqs ? Sie können sehen, ob wir anders wählennum_ls_freqs, die höchsten Spitzenverschiebungen.

Wenn ich viele Zeitreihen habe, muss ich jedes Mal andere Parameter angeben? Und wie bekommt man sie?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage