我一直在尝试使用 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
sns.lmplot(x='Age',y='Count of Specific Strands',data = input_csv)
<seaborn.axisgrid.FacetGrid at 0x2800985b710>
但是,如果我尝试使用 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()
有人知道为什么吗?仅仅是因为 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/