试图在statsmodels python

时间:2016-03-20 20:02:27

标签: python logistic-regression statsmodels

我正在尝试在statsmodel中打印一系列逻辑回归,但我不确定如何将结果打印到控制台屏幕以外的其他内容。我创建了一个运行数据为数据集的回归的函数,其他变量是数据集中的一系列虚拟变量标签列表(我敢肯定它不是最有效的方式来运行这些,但它当我有5个因变量时,我想用var 2中的9个虚拟变量和var3中的15个变量来运行回归,这是有意义的:

def regression(data, var1, var2, var3):
    for var in var 2:
        for var in var1:
            for var in var3:
                f = '%s ~ %s * %s' % (var1, var2, var3)
                y, x = patsy.dmatrices(f, data, return_type = 'dataframe')
                result = sm.Logit(y,x).fit()
                print(result.summary())
                print(np.exp(result.params))

无论如何 - 我正在尝试将输出打印到控制台以外的其他内容,这样我就可以保存它并获得显着的结果。我打赌答案并不难,但我是python和statsmodels的新手,并且在statsmodels文档或stackoverflow上没有看到任何明显的东西。 感谢

3 个答案:

答案 0 :(得分:1)

我尝试这样的事情:

with open("summary.txt", "w") as f:
    f.write(result.summary)
with open("params.txt", "w") as f:
    f.write(np.exp(result.params))

答案 1 :(得分:1)

如果要写入文件而不是stdout,可以打开文件并使用.write()

def regression(...):
    with open("outfile") as out:
        for var in var 2:
            for var in var1:
                for var in var3:
                    ...
                    out.write(str(result.summary()) + "\n")
                    out.write(str(np.exp(result.params)) + "\n)

正如@NeilG指出的那样,你也可以使用print(result.summary(), out=out)。这只是out.write(str(...) + "\n")的快捷方式如果您想将result.summary()np.exp(result.params)放在单独的文件中,请使用with open("summary", "w") as summary, open("params", "w") as params:并使用summary和{ {1}}代替params

答案 2 :(得分:0)

执行@zondo所说的并打开文件。然后将文件句柄作为print参数传递到out