打印 AIC 结果缺少信息
Printing AIC results is missing information
每当我尝试从 rpy2
打印 AIC 结果时,一些琐碎的信息会在显示中丢失。以 R help(AIC)
:
为例
import rpy2.robjects.conversion as cv
from rpy2.robjects import Formula, default_converter, pandas2ri
from rpy2.robjects.packages import importr, data
r_stats = importr("stats")
datasets = importr("datasets")
swiss = data(datasets).fetch("swiss")["swiss"]
lm1 = r_stats.lm(Formula("Fertility ~ ."), data=swiss)
lm2 = r_stats.update(lm1, Formula(". ~ . -Examination"))
with cv.localconverter(default_converter + pandas2ri.converter):
aic = r_stats.AIC(lm1, lm2)
打印 aic 对象,我得到:
In [2]: aic
Out[2]:
df AIC
list(c(66.9151816789687, -0.172113970941455, -0... 7.0 326.071568
list(c(62.1013115551538, -0.154617487544675, -0... 6.0 325.240844
而在 R 中,打印为:
> df AIC
lm1 7 326.1
lm2 6 325.2
鉴于模型是按 AIC 排序的,识别由 R 打印的模型很重要,但这在 rpy2 中丢失了。有更好的解决方案吗?
这是因为 a) data
对象是匿名的(就 R 而言,传递给它的 Python 对象 swiss
只是一个数据结构没有关联的 symbol/name,并且 b) R 函数 lm
喜欢使用未评估的参数来报告有关模型的信息。
有多种方法可以解决此问题。 rpy2 开发版本的文档涵盖了这一点:
每当我尝试从 rpy2
打印 AIC 结果时,一些琐碎的信息会在显示中丢失。以 R help(AIC)
:
import rpy2.robjects.conversion as cv
from rpy2.robjects import Formula, default_converter, pandas2ri
from rpy2.robjects.packages import importr, data
r_stats = importr("stats")
datasets = importr("datasets")
swiss = data(datasets).fetch("swiss")["swiss"]
lm1 = r_stats.lm(Formula("Fertility ~ ."), data=swiss)
lm2 = r_stats.update(lm1, Formula(". ~ . -Examination"))
with cv.localconverter(default_converter + pandas2ri.converter):
aic = r_stats.AIC(lm1, lm2)
打印 aic 对象,我得到:
In [2]: aic
Out[2]:
df AIC
list(c(66.9151816789687, -0.172113970941455, -0... 7.0 326.071568
list(c(62.1013115551538, -0.154617487544675, -0... 6.0 325.240844
而在 R 中,打印为:
> df AIC
lm1 7 326.1
lm2 6 325.2
鉴于模型是按 AIC 排序的,识别由 R 打印的模型很重要,但这在 rpy2 中丢失了。有更好的解决方案吗?
这是因为 a) data
对象是匿名的(就 R 而言,传递给它的 Python 对象 swiss
只是一个数据结构没有关联的 symbol/name,并且 b) R 函数 lm
喜欢使用未评估的参数来报告有关模型的信息。
有多种方法可以解决此问题。 rpy2 开发版本的文档涵盖了这一点: