2016-07-21 26 views
0

Pandas hat eine wirklich nette Funktion, die Ihnen eine Korrelationsmatrix Datenrahmen für Ihre Daten DataFrame, pd.DataFrame.corr() gibt.berechnen lineare Regression Steilheitsmatrix (analog zur Korrelationsmatrix) - Python/Pandas

Die r einer Korrelation ist jedoch nicht immer so informativ. Abhängig von Ihrer Anwendung kann die Steigung der linearen Regression genauso wichtig sein. Gibt es eine Funktion, die das für eine Eingabematrix oder einen Datenrahmen zurückgeben kann?

Anders als Iterieren mit scipy.stats.linregress(), was ein Schmerz wäre, sehe ich keinen Weg, dies zu tun?

Antwort

2

Steigung einer Regressionsgeraden y = b + b * x kann auch Koeffizienten unter Verwendung der Korrelation berechnet werden: b = Corr (x, y) * σ x y

newaxis Verwendung numpy der die σ x/σ y Matrix zu erzeugen:

df.corr() * (df.std().values/df.std().values[:, np.newaxis]) 
Out[59]: 
      A   B   C 
A 1.000000 -0.686981 0.252078 
B -0.473282 1.000000 -0.263359 
C 0.137670 -0.208775 1.000000 

wo df ist:

df 
Out[60]: 
    A B C 
0 5 6 9 
1 4 4 2 
2 7 3 5 
3 4 3 9 
4 6 5 3 
5 3 8 6 
6 2 8 1 
7 7 2 7 
8 4 1 5 
9 1 6 6 

Und das ist für die Überprüfung:

res = [] 
for col1, col2 in itertools.product(df.columns, repeat=2): 
    res.append(linregress(df[col1], df[col2]).slope) 
np.array(res).reshape(3, 3) 
Out[72]: 
array([[ 1.  , -0.68698061, 0.25207756], 
     [-0.47328244, 1.  , -0.26335878], 
     [ 0.1376702 , -0.20877458, 1.  ]]) 
+0

ich Fehler, den Sie hier tut mir leid, aber Dokumente Kommentare hat noch nicht. Ich habe eine Bearbeitung für Ihre [numpy intro docs] (http://stackoverflow.com/documentation/numpy/revisions/1296?exampleId=6738) Themen genehmigt, bitte werfen Sie einen Blick darauf. Ich stimme zu, dass die ipython-ähnliche Ausgabe nicht im Code enthalten sein sollte, und ich schätze, dass die aktuelle Version (mit kommentierter Ausgabe) sinnvoll ist. In jedem Fall sollten Sie wahrscheinlich nur Ausgaben vom Vanilla Python Interpreter anzeigen, viele Leute kennen ipython/jupyter nicht und werden von dieser Ausgabe verwirrt. –