2017-12-21 3 views
0

Ich habe folgende Daten bekommen:Wie passe ich eine Zeile an diese Daten an?

enter image description here

Ich bin daran interessiert, eine Linie auf der 'mittleren Bit' (Intercept 0) in passen. Wie mache ich das? Es wäre nützlich, auch eine Zahl für den Gradienten zu erhalten.

(FYI Dies sind eine Liste von Bargeldtransaktionen, rein und raus. Der Gradient wäre der Gewinn oder Verlust).

Hier einige Daten: https://gist.github.com/chrism2671/1081c13b6760878b457a112d2041622f

+0

Meinst du mit 'mittleres Bit' die Kurve, die die Daten visuell in einen oberen und einen unteren Teil zu teilen scheint? (Die genaue Anpassung wird ziemlich schwierig sein.) Meinst du mit 'intercept 0', dass die Linie durch den Punkt [0,0] laufen soll? Die Steigung einer Linie ist trivial die Steigung; es sei denn, Sie wollen den Verlauf der Daten, der mit diesen scharfen Kanten schrecklich aussehen würde. – kazemakase

Antwort

2

Sie können numpy.polyfit und numpy.poly1d das erreichen:

import matplotlib.pyplot as plt 
import numpy as np 

# Create data 

ls = np.linspace(0, 100) 
s = np.random.rand(len(ls))*100 + ls 

# Fit the data 

z = np.polyfit(ls, s, deg=1) 
p = np.poly1d(z) 

# Plotting 

plt.figure(figsize=(16,4.5)) 

plt.plot(ls, s, 
     alpha=.75, label='signal') 

plt.plot(ls, p(ls), 
     linewidth=1, linestyle='--', color='r', label='polyfit') 

plt.legend(ncol=2) 

enter image description here


Mit Hilfe der Daten, die Sie zur Verfügung gestellt:

enter image description here

Verwandte Themen