首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于“无效语法”,状态模型线性回归模型无法工作

由于“无效语法”,状态模型线性回归模型无法工作
EN

Stack Overflow用户
提问于 2022-02-04 13:14:16
回答 1查看 199关注 0票数 -1

我想使用状态模型线性回归模型,但我有一个问题:我得到了nex错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\Users\aleks\PycharmProjects\statistics\econometrics.py", line 95, in <module>
    lr = sm.OLS.from_formula('rj13.2 ~ age+C(rh5)+C(r_diplom)+C(status)+C(rh6)+C(rj1.1.1)',df_stats_models).fit()
  File "C:\Users\aleks\PycharmProjects\statistics\venv\lib\site-packages\statsmodels\base\model.py", line 200, in from_formula
    tmp = handle_formula_data(data, None, formula, depth=eval_env,
  File "C:\Users\aleks\PycharmProjects\statistics\venv\lib\site-packages\statsmodels\formula\formulatools.py", line 63, in handle_formula_data
    result = dmatrices(formula, Y, depth, return_type='dataframe',
  File "C:\Users\aleks\PycharmProjects\statistics\venv\lib\site-packages\patsy\highlevel.py", line 309, in dmatrices
    (lhs, rhs) = _do_highlevel_design(formula_like, data, eval_env,
  File "C:\Users\aleks\PycharmProjects\statistics\venv\lib\site-packages\patsy\highlevel.py", line 164, in _do_highlevel_design
    design_infos = _try_incr_builders(formula_like, data_iter_maker, eval_env,
  File "C:\Users\aleks\PycharmProjects\statistics\venv\lib\site-packages\patsy\highlevel.py", line 66, in _try_incr_builders
    return design_matrix_builders([formula_like.lhs_termlist,
  File "C:\Users\aleks\PycharmProjects\statistics\venv\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\aleks\PycharmProjects\statistics\venv\lib\site-packages\patsy\build.py", line 354, in _factors_memorize
    which_pass = factor.memorize_passes_needed(state, eval_env)
  File "C:\Users\aleks\PycharmProjects\statistics\venv\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\aleks\PycharmProjects\statistics\venv\lib\site-packages\patsy\eval.py", line 474, in <listcomp>
    subset_names = [name for name in ast_names(self.code)
  File "C:\Users\aleks\PycharmProjects\statistics\venv\lib\site-packages\patsy\eval.py", line 105, in ast_names
    for node in ast.walk(ast.parse(code)):
  File "C:\Users\aleks\AppData\Local\Programs\Python\Python39\lib\ast.py", line 50, in parse
    return compile(source, filename, mode, flags,
  File "<unknown>", line 1
    C(rj1 .1 .1)
          ^
SyntaxError: invalid syntax

我的代码:

代码语言:javascript
复制
lr = sm.OLS.from_formula('rj13.2 ~ age+C(rh5)+C(r_diplom)+C(status)+C(rh6)+C(rj1.1.1)',df_stats_models).fit()
print(lr.summary())

df_stats_models.head()看起来是这样的:

代码语言:javascript
复制
Index(['rj13.2', 'rh6', 'rh5', 'r_diplom', 'status', 'rj1.1.1', 'age'], dtype='object')
      rj13.2     rh6      rh5  ...           status                  rj1.1.1   age
46   30000.0  1986.0  МУЖСКОЙ  ...  областной центр  ПОЛНОСТЬЮ УДОВЛЕТВОРЕНЫ  27.0
178  22000.0  1992.0  МУЖСКОЙ  ...            город     СКОРЕЕ УДОВЛЕТВОРЕНЫ  21.0
271  10200.0  1964.0  ЖЕНСКИЙ  ...            город     СКОРЕЕ УДОВЛЕТВОРЕНЫ  49.0
537   6000.0  1952.0  ЖЕНСКИЙ  ...            город     СКОРЕЕ УДОВЛЕТВОРЕНЫ  61.0
538  13000.0  1964.0  ЖЕНСКИЙ  ...            город     СКОРЕЕ УДОВЛЕТВОРЕНЫ  49.0

为什么它会对C(rj1 .1 .1)感到愤怒?

EN

回答 1

Stack Overflow用户

发布于 2022-02-07 08:32:32

要读取R样式的公式,状态模型使用解析器不喜欢特殊字符的patsy包(例如。或者-)在变量名中。要“保护”这些名称,可以使用Q()函数(公式的双引号):

代码语言:javascript
复制
lr = sm.OLS.from_formula("Q('rj13.2') ~ age+C(rh5)+C(r_diplom)+C(status)+C(rh6)+C(Q('rj1.1.1'))", df_stats_models).fit()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70986987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档