我正在尝试在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上没有看到任何明显的东西。 感谢
答案 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
。