提取系数p值rpy2

时间:2015-01-26 19:22:30

标签: python rpy2

我正在使用rpy2在python中嵌入一些R,并在python中调用lm。我的目标是提取参数t-stat或p值。我不知道该怎么做。通常在R中我使用summary(model)$coefficients[1,4]。我如何在python环境中调用它?

2 个答案:

答案 0 :(得分:0)

the rpy2 docsthe Pandas docs中有部分(但并不多)有用的信息。

检索R命令详细结果的最佳方法如下:

我们从通常的进口开始:

import pandas as pd
from rpy2.robjects import r as R
from rpy2.robjects.packages import importr
from rpy2.robjects import pandas2ri

stats = importr('stats')
base = importr('base')

现在在R中运行线性模型并检索系数:

# Equivalent of lm(Sepal.Length ~ Sepal.Width, data='iris')
lm = stats.lm("Sepal.Length ~ Sepal.Width", data=R['iris'])
# Equivalent of summary(lm)
summary = base.summary(lm)
# Extract the coefficients
coeffs = summary.rx2('coefficients')

然后我们可以从coeffs对象创建一个Pandas数据框:

# Build a DataFrame from the coefficients tables
df = pd.DataFrame(pandas2ri.ri2py(coeffs),
             index=coeffs.names[0], columns=coeffs.names[1])

这使我们能够像在Python中一样使用系数:

In [11]: df['Pr(>|t|)'] # p-values!
Out[11]:
(Intercept)    6.469702e-28
Sepal.Width    1.518983e-01
Name: Pr(>|t|), dtype: float64

In [12]: df.loc['Sepal.Width', 'Pr(>|t|)']
Out[12]: 0.15189826071144744

答案 1 :(得分:-1)