我一直在尝试使用 Seaborn 的 lmplot() 和 Statsmodels .ols() 函数来绘制简单的线性回归图及其相关的 p 值、r 平方等。

我注意到,当我指定要用于 lmplot 的列时,我可以指定一列,即使它有多个单词:

import seaborn as sns
import pandas as pd
input_csv = pd.read_csv('./test.csv',index_col = 0,header = 0)
input_csv

python - 为什么 Statsmodels OLS 不支持在包含多个单词的列中阅读?-LMLPHP
sns.lmplot(x='Age',y='Count of Specific Strands',data = input_csv)
<seaborn.axisgrid.FacetGrid at 0x2800985b710>

python - 为什么 Statsmodels OLS 不支持在包含多个单词的列中阅读?-LMLPHP

但是,如果我尝试使用 ols,我会在输入“特定链数”作为我的因变量时出现错误(我只列出了错误中的最后几行):
import statsmodels.formula.api as smf
test_results = smf.ols('Count of Specific Strands ~ Age',data = input_csv).fit()

File "<unknown>", line 1
    Count of Specific Strands
           ^
SyntaxError: invalid syntax

相反,如果我指定如下所示的“特定链计数”,则回归有效:
test_results = smf.ols('input_csv.iloc[:,1] ~ Age',data = input_csv).fit()
test_results.summary()

python - 为什么 Statsmodels OLS 不支持在包含多个单词的列中阅读?-LMLPHP

有人知道为什么吗?仅仅是因为 Statsmodels 是如何编写的吗?是否有替代方法可以指定不涉及 iloc 或 loc 的回归分析的因变量?

最佳答案

这是由于公式解析器 patsy 的编写方式:参见 this link for more information

然而,patsy 的作者想到了这个问题:(引自 here )



因此,在您的情况下,您应该能够编写:

smf.ols('Q("Count of Specific Strands") ~ Age',data = input_csv).fit()

关于python - 为什么 Statsmodels OLS 不支持在包含多个单词的列中阅读?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52861445/

10-12 18:48