Так что, похоже, это работает для меня:
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])
modsum = base.summary(fit)
rsquared = array(modsum[7])
se = array(modsum.rx2('coefficients')[2:4])
return(coeffs, resids, fitted_vals, rsquared, se)
Хотя, как я уже сказал, это буквально мой первый набег в RPy2, так что, возможно, есть лучший способ сделать это.Но эта версия, по-видимому, выводит массивы, содержащие значение R-квадрата вместе со стандартными ошибками.
Вы можете использовать print(modsum.names)
, чтобы увидеть имена компонентов объекта R (вроде как names(modsum)
вR), а затем .rx
и .rx2
эквивалентны [
и [[
в R.