【问题标题】:Can't set attribute in property class in markov regime switching model无法在马尔可夫制度切换模型的属性类中设置属性
【发布时间】:2019-04-06 14:11:25
【问题描述】:

我正在尝试设置我的初始参数以运行马尔可夫制度切换模型,但我总是收到以下错误:

AttributeError: can't set attribute

我的代码如下:

from statsmodels.tsa.regime_switching.markov_autoregression import MarkovAutoregression as mark_auto

mod = mark_auto(endog = data.dlgnp, k_regimes = 2, order=1, switching_variance= False, switching_exog= False, switching_trend= False)
mod.k_params
mod.param_names
regression.start_params = np.array([0.4,0.4,1,1])

源代码可以在here找到,但特别针对我的问题的部分如下:

@property
def start_params(self):
    """
    (array) Starting parameters for maximum likelihood estimation.
    """
    # Inherited parameters
    params = markov_switching.MarkovSwitching.start_params.fget(self)

    # OLS for starting parameters
    endog = self.endog.copy()
    if self._k_exog > 0 and self.order > 0:
        exog = np.c_[self.exog, self.exog_ar]
    elif self._k_exog > 0:
        exog = self.exog
    elif self.order > 0:
        exog = self.exog_ar

    if self._k_exog > 0 or self.order > 0:
        beta = np.dot(np.linalg.pinv(exog), endog)
        variance = np.var(endog - np.dot(exog, beta))
    else:
        variance = np.var(endog)

我也试过np.r_但没有帮助。 我在 python 2.7.15 上运行我的代码,最奇怪的是,我记得上次运行它时代码还在工作。任何帮助将不胜感激。

【问题讨论】:

    标签: python optimization properties statsmodels hidden-markov-models


    【解决方案1】:

    start_params 属性仅提供调用fit 函数时使用的默认起始参数 - 您不必自己设置。

    如果你确实想设置特定的启动参数,你可以在调用fit时这样做,例如:

    res = mod.fit(start_params=np.array([0.4,0.4,1,1]))

    【讨论】:

    • 哦,太好了,非常感谢!我实际上正在使用您在 github 上找到的代码来完成这项工作:)
    • 很高兴听到它有帮助!
    猜你喜欢
    • 2016-12-14
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多