как подавить python печать кода с использованием rpy2 для сводки моделей - PullRequest
0 голосов
/ 19 апреля 2020

Я использую rpy2 для запуска ivreg. Однако всякий раз, когда я пытаюсь напечатать сводку модели, она печатает всю функцию и фрейм данных, а не только результаты, такие как R. Есть ли способ получить R-подобную печать. Вот код, который я использую:

import pandas as pd
import json 
# R2pi package
from rpy2.robjects import numpy2ri, pandas2ri
from rpy2.robjects.packages import importr
import rpy2.robjects as ro
# R imports (Assuming AER and ivpack are installed in R)
base = importr("base")
aer = importr("AER")
# Automatic conversion btw R Vectors and Python objects
numpy2ri.activate()
pandas2ri.activate()


def ivreg(*argv, **kwargs):
    model = aer.ivreg(*argv, **kwargs)
    return model

n = 10000
df = pd.DataFrame(data=np.random.multivariate_normal(
                            mean=[0] * 5,
                            cov=np.ones((5,5)) + np.eye(5),
                            size=n),
                  columns =["Y", "X1", "X2", "Z1", "Z2"])
clusterid = np.tile([1,2,3,4,5], (n//5, ))
df['X3'] = np.random.uniform(1,4,n).round(0).astype(int)

# Example regression
model = ivreg(formula="Y ~ . ", data=df)
print(base.summary(model))

1 Ответ

0 голосов
/ 19 апреля 2020

Это потому, что ваш объект передается "inline" в вызов функции, то есть он не имеет ассоциированного имени символа в R. В приведенном ниже фрагменте df это просто структура данных.

model = ivreg(formula="Y ~ . ", data=df)
print(base.summary(model))

Вы можете назначить столбцы в df для символов в globalenv R, как показано во введении: https://rpy2.github.io/doc/v3.3.x/html/introduction.html#linear -модели

...