Python statsmodels在simulate()中自定义参数排序
在statsmodels中,如何定义输入参数Python statsmodels在simulate()中自定义参数排序,python,statsmodels,Python,Statsmodels,在statsmodels中,如何定义输入参数params的元素顺序 我们可以假设顺序对应于所创建对象的属性参数名给出的顺序,但情况似乎并非如此。见下面的例子 将statsmodels导入为statsmodels 将statsmodels.api作为sm导入 作为pd进口熊猫 将numpy作为np导入 endog=pd.DataFrame({“y”:[np.nan,np.nan],“y2”:[np.nan,np.nan]},索引=[0,1]) statsmodels.\uuuu版本__ >>>>>
params
的元素顺序
我们可以假设顺序对应于所创建对象的属性参数名
给出的顺序,但情况似乎并非如此。见下面的例子
将statsmodels导入为statsmodels
将statsmodels.api作为sm导入
作为pd进口熊猫
将numpy作为np导入
endog=pd.DataFrame({“y”:[np.nan,np.nan],“y2”:[np.nan,np.nan]},索引=[0,1])
statsmodels.\uuuu版本__
>>>>>>>>>
'0.11.1'
示例1:具有截距和漂移的两个变量VAR(1),除截距设置为1外,所有参数均固定为0。产生预期结果
params=[1,0,0,0,0,0,0,0,0,0,0]
mod1=sm.tsa.VARMAX(endog,order=(1,0),trend=[1,1],trend\u offset=0)
打印('\n'.join('{}:{}.format(*k)表示zip中的k(mod1.param_names,params)))
打印(mod1.simulate(params=params,nsimulations=5,初始状态=[0,0]))
>>>>>>>>>
拦截。y:1
0.y2:0
漂移y:0
0.y2:0
L1.y.y:0
L1.y2.y:0
L1.y.y2:0
L1.y2.y2:0
sqrt.var.y:0
sqrt.cov.y.y2:0
sqrt.var.y2:0
y y2
0 0.0 0.0
1 1.0 0.0
2 1.0 0.0
3 1.0 0.0
4 1.0 0.0
示例2:与示例1相同,但现在变量y
的截距设置为0,变量y2
的截距设置为1。似乎params
中的第二个元素实际上控制y
的漂移参数,而不是y2
的截距项,而不是产生预期结果。这与mod2.param_names
给出的参数顺序相矛盾
params=[0,1,0,0,0,0,0,0,0,0,0]
mod2=sm.tsa.VARMAX(endog,order=(1,0),trend=[1,1],trend\u offset=0)
打印('\n'.join('{}:{}.format(*k)表示zip中的k(mod2.param_names,params)))
打印(mod2.simulate(params=params,nsimulations=5,初始状态=[0,0]))
>>>>>>>>>
拦截。y:0
1.y2:1
漂移y:0
0.y2:0
L1.y.y:0
L1.y2.y:0
L1.y.y2:0
L1.y2.y2:0
sqrt.var.y:0
sqrt.cov.y.y2:0
sqrt.var.y2:0
y y2
0 0.0 0.0
1 1.0 0.0
2 2.0 0.0
3 3.0 0.0
4 4.0 0.0
这看起来像是Statsmodels在参数名称排序方面的一个bug。谢谢!将在statsmodels github页面报告此问题。事实上,它是一个bug。改正