Ich verwende rpy2 für Regressionen. Das zurückgegebene Objekt enthält eine Liste mit Koeffizienten, Residuen, angepassten Werten, Rang des angepassten Modells usw.)
Ich kann jedoch weder die Standardfehler (noch den R^2) im Fit-Objekt finden. Wenn ich lm direkt model in R ausführe, werden die Standardfehler mit dem Befehl summary angezeigt, aber ich kann nicht direkt auf sie im Datenrahmen des Modells zugreifen.
Wie kann ich diese Informationen mit rpy2 extrahieren?
Ein Beispiel für Python-Code lautet
from scipy import random
from numpy import hstack, array, matrix
from rpy2 import robjects
from rpy2.robjects.packages import importr
def test_regress():
stats=importr('stats')
x=random.uniform(0,1,100).reshape([100,1])
y=1+x+random.uniform(0,1,100).reshape([100,1])
x_in_r=create_r_matrix(x, x.shape[1])
y_in_r=create_r_matrix(y, y.shape[1])
formula=robjects.Formula('y~x')
env = formula.environment
env['x']=x_in_r
env['y']=y_in_r
fit=stats.lm(formula)
coeffs=array(fit[0])
resids=array(fit[1])
fitted_vals=array(fit[4])
return(coeffs, resids, fitted_vals)
def create_r_matrix(py_array, ncols):
if type(py_array)==type(matrix([1])) or type(py_array)==type(array([1])):
py_array=py_array.tolist()
r_vector=robjects.FloatVector(flatten_list(py_array))
r_matrix=robjects.r['matrix'](r_vector, ncol=ncols)
return r_matrix
def flatten_list(source):
return([item for sublist in source for item in sublist])
test_regress()