gpt4 book ai didi

python - 使用 rpy2 从回归中获取标准错误

转载 作者:行者123 更新时间:2023-11-28 23:03:10 25 4
gpt4 key购买 nike

我正在使用 rpy2 进行回归。返回的对象有一个列表,其中包括系数、残差、拟合值、拟合模型的秩等)

但是我在拟合对象中找不到标准误差(也不是 R^2)。在 R 中直接运行 lm 模型,使用摘要命令显示标准错误,但我无法直接在模型的数据框中访问它们。

如何使用 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()

最佳答案

所以这似乎对我有用:

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 对象组件的名称(有点像 R 中的 names(modsum)),然后.rx.rx2 等同于 R 中的 [[[

关于python - 使用 rpy2 从回归中获取标准错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8866334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com