statsmodel summary col 得到乳胶密钥错误?

statsmodel summary col getting a latex key error?

我在使用 summary_col 函数时遇到了关键错误。

import statsmodels.api as sm
from statsmodels.iolib.summary2 import summary_col
Y = [0,1,0,0,1,1,1]
X = [5,10,15,20,25,2,7]
logit = sm.Logit(Y,X)
fit = logit.fit()
print(fit.summary())
logit_output = summary_col([fit],stars=True)
print(logit_output.as_latex())

给我一个“键错误:'\m'”。令人惊讶的是,fit.summary().as_latex() 不会 return 这个错误。

我读了一些代码,我认为你在 statsmodels 的代码中触发了一个错误。

这是我的疯狂解释。函数summary_col returns Summary class 的一个对象并设置_merge_latex = True。在 .as_latex() 中启用下一个 if-caluse。这是 link 到 source 的地方,我在其中找到了以下代码:

if self._merge_latex:
    # create single tabular object for summary_col
    tab = re.sub(to_replace, r'\midrule\n', tab)

如果您调用 fit.summary().as_latex(),则默认调用 _merge_latex = False。所以你不会进入这部分,也不会得到同样的错误。

现在我不确定哪里出了问题。我可以想到两种情况:

  1. re.sub() 只调用了一次,还有剩余的东西要替换
  2. r'\midrule\n' 在这一行中是错误的,应该是 '\midrule\n'

要取得一些进展,您必须构建一个最小示例。 要禁用错误以查看我是否在正确的轨道上,请添加

logit_output._merge_latex = False

重新运行之前

print(logit_output.as_latex())

你的代码并检查错误是否改变。这可能会产生您不想要的输出。