gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 00:11:46 24 4
gpt4 key购买 nike

我一直在尝试使用 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

CSV Plot
sns.lmplot(x='Age',y='Count of Specific Strands',data = input_csv)
<seaborn.axisgrid.FacetGrid at 0x2800985b710>

enter image description here

但是,如果我尝试使用 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()

Regression Results

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

最佳答案

这是由于公式解析器的方式 patsy写的是:见this link for more information
patsy的作者然而,想到了这个问题:(引自 here)

This flexibility does create problems in one case, though – because we interpret whatever you write in-between the + signs as Python code, you do in fact have to write valid Python code. And this can be tricky if your variable names have funny characters in them, like whitespace or punctuation. Fortunately, patsy has a builtin “transformation” called Q() that lets you “quote” such variables



因此,在您的情况下,您应该能够编写:
smf.ols('Q("Count of Specific Strands") ~ Age',data = input_csv).fit()

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com