【问题标题】:TypeError: '>=' not supported between instances of 'method' and 'float'TypeError: \'>=\' 在 \'method\' 和 \'float\' 的实例之间不支持
【发布时间】:2022-09-23 00:45:44
【问题描述】:

提前感谢大家的时间!

我正在尝试为 statsmodel 中的状态空间 mlemodels 中的面板运行 TVP-VAR。尝试拟合模型时出现错误。我的理解是,主要是关于启动参数我该怎么做?显示的类型错误如下,错误和 Traceback 都以粗体突出显示:

 preliminary = tvppanelvarmodel.fit(maxiter=1000)
Traceback (most recent call last):

  File \"/opt/anaconda3/envs/spyder-env/lib/python3.10/site-packages/numpy/core/fromnumeric.py\", line 57, in _wrapfunc
    return bound(*args, **kwds)

  File \"/opt/anaconda3/envs/spyder-env/lib/python3.10/site-packages/numpy/core/_methods.py\", line 159, in _clip
    return _clip_dep_invoke_with_casting(

  File \"/opt/anaconda3/envs/spyder-env/lib/python3.10/site-packages/numpy/core/_methods.py\", line 113, in _clip_dep_invoke_with_casting
    return ufunc(*args, out=out, **kwargs)

**TypeError: \'>=\' not supported between instances of \'method\' and \'float\'**


During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File \"/var/folders/m6/68zljfsj2t9_dzgpwwslj29r0000gp/T/ipykernel_11675/3038987883.py\", line 1, in <module>
    preliminary = tvppanelvarmodel.fit(maxiter=1000)

  File \"/opt/anaconda3/envs/spyder-env/lib/python3.10/site-packages/statsmodels/tsa/statespace/mlemodel.py\", line 704, in fit
    mlefit = super(MLEModel, self).fit(start_params, method=method,

  File \"/opt/anaconda3/envs/spyder-env/lib/python3.10/site-packages/statsmodels/base/model.py\", line 563, in fit
    xopt, retvals, optim_settings = optimizer._fit(f, score, start_params,

  File \"/opt/anaconda3/envs/spyder-env/lib/python3.10/site-packages/statsmodels/base/optimizer.py\", line 241, in _fit
    xopt, retvals = func(objective, gradient, start_params, fargs, kwargs,

  File \"/opt/anaconda3/envs/spyder-env/lib/python3.10/site-packages/statsmodels/base/optimizer.py\", line 651, in _fit_lbfgs
    retvals = optimize.fmin_l_bfgs_b(func, start_params, maxiter=maxiter,

  File \"/opt/anaconda3/envs/spyder-env/lib/python3.10/site-packages/scipy/optimize/lbfgsb.py\", line 197, in fmin_l_bfgs_b
    res = _minimize_lbfgsb(fun, x0, args=args, jac=jac, bounds=bounds,

  File \"/opt/anaconda3/envs/spyder-env/lib/python3.10/site-packages/scipy/optimize/lbfgsb.py\", line 298, in _minimize_lbfgsb
    x0 = np.clip(x0, new_bounds[0], new_bounds[1])

  File \"<__array_function__ internals>\", line 180, in clip

  File \"/opt/anaconda3/envs/spyder-env/lib/python3.10/site-packages/numpy/core/fromnumeric.py\", line 2152, in clip
    return _wrapfunc(a, \'clip\', a_min, a_max, out=out, **kwargs)

  File \"/opt/anaconda3/envs/spyder-env/lib/python3.10/site-packages/numpy/core/fromnumeric.py\", line 66, in _wrapfunc
    return _wrapit(obj, method, *args, **kwds)

  File \"/opt/anaconda3/envs/spyder-env/lib/python3.10/site-packages/numpy/core/fromnumeric.py\", line 43, in _wrapit
    result = getattr(asarray(obj), method)(*args, **kwds)

  File \"/opt/anaconda3/envs/spyder-env/lib/python3.10/site-packages/numpy/core/_methods.py\", line 159, in _clip
    return _clip_dep_invoke_with_casting(

  File \"/opt/anaconda3/envs/spyder-env/lib/python3.10/site-packages/numpy/core/_methods.py\", line 113, in _clip_dep_invoke_with_casting
    return ufunc(*args, out=out, **kwargs)

TypeError: \'>=\' not supported between instances of \'method\' and \'float\'

我的起始参数定义如下,虽然我对我的初始参数感到无法梳理。我没有在定义中添加退货。在 res 模块中,我使用 method=\'nm\',其中 \'nm\' 代表 Nelder-Mead`solver optimizer

def start_params(self):
       
        start_params =  [.1, .1, 100, 100, 100] 
  • 当您打算调用它时,您忘记在代码中的某处将() 放在方法名称之后。
  • 如果没有 return 语句,您的 start_params() 方法完全没有意义。将列表分配给与该方法相同的名称只会造成对该名称所指内容的混淆。

标签: python scipy time-series statsmodels state-space


【解决方案1】:

我已经相应地编写了我的代码。我暂时跳过了错误

 @property
    def state_names(self):
        state_names = np.empty((self.k_y, self.k_y + 1), dtype=object)
        for i in range(self.k_y):
            endog_name = self.y__names[i]
            state_names[i] = (
                ['intercept.%s' % y_name] +
                ['L1.%s->%s' % (other_name, y_name) for other_name in self.y_names])
        return state_names.ravel().tolist()
    
    
    @property
    def start_params(self):
       return np.r_[0, 0, 1e-5, 1e-5, 1e-5]
   
    
    @property
    def param_names(self):
        return ['level0', 'phi', 'sigma2.ar1', 'sigma2.level', 'sigma2.slope']
    
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-22
    • 2020-05-05
    • 2021-03-18
    • 2019-11-12
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多