2 Stimmen

Standardfehler aus Regressionen mit rpy2 ermitteln

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()

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X