回帰にrpy2を使用しています。返されるオブジェクトには、係数、残差、近似値、適合モデルのランクなどのリストがあります。rpy2を使用して回帰から標準誤差を得る
しかし、fitオブジェクトで標準エラー(R^2も)が見つかりません。 lmを直接Rで実行すると、標準エラーはsummaryコマンドで表示されますが、モデルのデータフレームで直接アクセスすることはできません。
rpy2を使用してこの情報を抽出するにはどうすればよいですか?
サンプルPythonコードが
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()
ヘイダン!私は本当にRPy2を使っていませんが、 'modSummary = base.summary(fit)'のようなことをして係数を抽出することはできませんか? – joran
私はmodsummary = base.summary(fit)を行うことができます。次にmodsummary $ coefficieints [(n + 2):(2 * n + 2)]は標準誤差(nは説明変数の数)を保持します。しかし、私はmodsummary $係数をPythonに戻す方法を理解できません。 – DanB