Was ist die empfohlene Methode (falls vorhanden) für die lineare Regression mit einem Pandas-Datenrahmen? Ich kann es, aber meine Methode scheint sehr aufwendig. Mache ich Dinge unnötig kompliziert?Minimales Beispiel für die rpy2-Regression mit Pandas-Datenrahmen
Der Code R, zum Vergleich:
x <- c(1,2,3,4,5)
y <- c(2,1,3,5,4)
M <- lm(y~x)
summary(M)$coefficients
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.6 1.1489125 0.522233 0.6376181
x 0.8 0.3464102 2.309401 0.1040880
Nun, mein Python (2.7.10), rpy2 (2.6.0) und Pandas (0.16.1) Version:
import pandas
import pandas.rpy.common as common
from rpy2 import robjects
from rpy2.robjects.packages import importr
base = importr('base')
stats = importr('stats')
dataframe = pandas.DataFrame({'x': [1,2,3,4,5],
'y': [2,1,3,5,4]})
robjects.globalenv['dataframe']\
= common.convert_to_r_dataframe(dataframe)
M = stats.lm('y~x', data=base.as_symbol('dataframe'))
print(base.summary(M).rx2('coefficients'))
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.6 1.1489125 0.522233 0.6376181
x 0.8 0.3464102 2.309401 0.1040880
Übrigens, ich bekomme ein FutureWarning über den Import von pandas.rpy.common
. Allerdings, wenn ich die pandas2ri.py2ri(dataframe)
versucht, einen Datenrahmen von Pandas R zu umwandeln (wie here erwähnt), erhalte ich
NotImplementedError: Conversion 'py2ri' not defined for objects of type '<class 'pandas.core.series.Series'>'
Welche Version von 'rpy2' verwenden Sie? – joris
Ich habe meine Frage aktualisiert, um diese Informationen hinzuzufügen. – mjandrews
Ich hatte ähnliche Probleme mit der Konvertierung von Datenrahmen, aber ich musste nicht rpy2 Funktionen verwenden. Es stellt sich heraus, dass Sie 'pandas2ri.activate()' ausführen müssen, bevor Sie 'pandas2ri.py2ri (dataframe)' ' – shibumi