我正在使用rpy2
在python中嵌入一些R,并在python中调用lm
。我的目标是提取参数t-stat或p值。我不知道该怎么做。通常在R中我使用summary(model)$coefficients[1,4]
。我如何在python环境中调用它?
答案 0 :(得分:0)
the rpy2 docs和the 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)