Im Periodogramm eines Zeitsignal das Hintergrundrauschen fitten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Lienz20013
User
Beiträge: 88
Registriert: Freitag 26. September 2014, 14:42

Hi,

ich versuche von einem Signal das Hintergrundrauschen zu fitten. Dabei handelt es sich um rotes rauschen. Diesen Fit benötige ich um dann confidenc levels zu erzeugen.

Für den Fit kann amn Robust autoregessive fitting methode (AR.1) verwenden aber isch weiß nicht wie!

Es kommt noch dazu das meine Zeitintervalle keine diskreten Abstände hat.

Hier mal ein Beispiel was ich am end vor habe:
Bild

Also was ich hab ist ein Datensatz der keine diskreten Zeitabstäde hat:
A = 2.
w = 1.
phi = 0.5 * np.pi
nin = 1000
nout = 100000
frac_points = 0.9 # Fraction of points to select

r = np.random.rand(nin)
x = np.linspace(0.01, 10*np.pi, nin)
x = x[r >= frac_points]

y = A * np.sin(w*x+phi)

f = np.linspace(0.01, 10, nout)
import scipy.signal as signal
pgram = signal.lombscargle(x, y, f, normalize=True)

plt.subplot(2, 1, 1)
plt.plot(x, y, 'b+')

plt.subplot(2, 1, 2)
plt.plot(f, pgram)
plt.show()
Leider weiß ich nict wie ich dem Signal red nois hinzufügen kann. Das Periodogramm hab ich mit lombscargel erzeugt.

So als nächstes müsste ich dann den Robustena autoregressive AR(1) Fit machen...weiß aber nicht wie!?
from statsmodels.tsa.arima_model import ARMA

mod = ARMA(pgram, order=(1,0)) #?????
ar1_fit = mod.fit()
Und danach könnte ich die confidenc levels wie folgt berechen:
from scipy import stats
import numpy as np

alpha = 0.1 # significance level = 5%
df = 8 # degress of freedom = 8
t = stats.t.ppf(1 - alpha/2, df) # t-critical value for 95% CI = 2.093
s = np.std(ar1_fit, ddof=1) # sample standard deviation = 2.502
n = len(ar1_fit)

lower = np.mean(ar1_fit) - (t * s / np.sqrt(n))
upper = np.mean(ar1_fit) + (t * s / np.sqrt(n))
Aber hier bekomme ich nur zwei Werte müsste ich nicht für jeden Punkt an meinem Fit ein Werte für upper und lower bekommen?

Also die Fragen sind:
1) wie füge ich meinem Testsignal red nois hinuzu?
2) Wie kann ich mein erzeugtes Periodogramm mit dem Robusten autoregressive (1. Ordnung) model fiten?
3) Und wie erzeuge ich ausgehen von diesem Fit meine confidenc levels?

Ich hab überall ne gweisse Vorstellung wie es funktionieren könnte bekomm es aber nicht hin...kann mir jemand helfen?

Grüße,
Lienz
Antworten