无法在马尔可夫状态切换模型中的 属性 class 中设置属性
Can't set attribute in property class in markov regime switching model
我正在尝试设置我的初始参数以便 运行 马尔可夫状态切换模型,但我总是收到以下错误:
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 上 运行 设置我的代码,而 st运行 最重要的是我记得上次我 运行 它时代码可以工作。任何帮助将不胜感激。
start_params
属性 只是提供调用 fit
函数时使用的默认启动参数 - 您不必自己设置。
如果您确实想设置特定的启动参数,您可以在调用 fit
时进行设置,例如:
res = mod.fit(start_params=np.array([0.4,0.4,1,1]))
我正在尝试设置我的初始参数以便 运行 马尔可夫状态切换模型,但我总是收到以下错误:
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 上 运行 设置我的代码,而 st运行 最重要的是我记得上次我 运行 它时代码可以工作。任何帮助将不胜感激。
start_params
属性 只是提供调用 fit
函数时使用的默认启动参数 - 您不必自己设置。
如果您确实想设置特定的启动参数,您可以在调用 fit
时进行设置,例如:
res = mod.fit(start_params=np.array([0.4,0.4,1,1]))