首页 > 解决方案 > 使用 statsmodel 执行单向方差分析测试时出现语法错误

问题描述

我一直在尝试使用 pandas 数据框中的 statsmodel 执行单向方差分析测试,如下所示

import statsmodels.api as sm
from statsmodels.formula.api import ols

mod = ols('DOSE DELIVERED ~ TYPE', data = df_chosen).fit()
aov_table = sm.stats.anova_lm(mod, typ =2)
print(aov_table)

但是我不断收到此语法错误。我检查了类别的拼写是否有意义,但没有任何作用。

Traceback (most recent call last):

  File "C:\Users\Home\Anaconda_3\lib\site-packages\IPython\core\interactiveshell.py", line 3326, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)

  File "<ipython-input-25-364084670c42>", line 1, in <module>
    mod = ols('DOSE DELIVERED ~ TYPE', data = df_chosen).fit()

  File "C:\Users\Home\Anaconda_3\lib\site-packages\statsmodels\base\model.py", line 159, in from_formula
    missing=missing)

  File "C:\Users\Home\Anaconda_3\lib\site-packages\statsmodels\formula\formulatools.py", line 65, in handle_formula_data
    NA_action=na_action)

  File "C:\Users\Home\Anaconda_3\lib\site-packages\patsy\highlevel.py", line 310, in dmatrices
    NA_action, return_type)

  File "C:\Users\Home\Anaconda_3\lib\site-packages\patsy\highlevel.py", line 165, in _do_highlevel_design
    NA_action)

  File "C:\Users\Home\Anaconda_3\lib\site-packages\patsy\highlevel.py", line 70, in _try_incr_builders
    NA_action)

  File "C:\Users\Home\Anaconda_3\lib\site-packages\patsy\build.py", line 689, in design_matrix_builders
    factor_states = _factors_memorize(all_factors, data_iter_maker, eval_env)

  File "C:\Users\Home\Anaconda_3\lib\site-packages\patsy\build.py", line 354, in _factors_memorize
    which_pass = factor.memorize_passes_needed(state, eval_env)

  File "C:\Users\Home\Anaconda_3\lib\site-packages\patsy\eval.py", line 474, in memorize_passes_needed
    subset_names = [name for name in ast_names(self.code)

  File "C:\Users\Home\Anaconda_3\lib\site-packages\patsy\eval.py", line 474, in <listcomp>
    subset_names = [name for name in ast_names(self.code)

  File "C:\Users\Home\Anaconda_3\lib\site-packages\patsy\eval.py", line 105, in ast_names
    for node in ast.walk(ast.parse(code)):

  File "C:\Users\Home\Anaconda_3\lib\ast.py", line 35, in parse
    return compile(source, filename, mode, PyCF_ONLY_AST)

  File "<unknown>", line 1
    DOSE DELIVERED
              ^
SyntaxError: invalid syntax

谢谢你先进

标签: pythonstatsmodelsanova

解决方案


公式变量名称中不能有空格。

您必须重命名DOSE DELIVEREDDOSE_DELIVERED,否则它们将被视为两个变量DOSEDELIVERED.


推荐阅读