Statsmodels遇到的坑之:from statsmodels.stats.diagnostic import unitroot_adf

1.19学习笔记——记录被statsmodels折磨的一下午

一、背景

最近正好在做一个时间序列预测的问题,需要用到分解方法STL,一查statsmodels自带这个模块直接调用就行,于是pip安装:

pip install statsmodels

二、程序运行

安装成功,省去数据预处理的部分先展示一下调用的方法吧!

from statsmodels.tsa.seasonal import STL

stl = STL(data['value'],period=12).fit()
stl.plot()
plt.show()

这些不多说了,网上教程有的是,官方文档解释的也很详细,主要讲一下坑!

三、单位根检验

statsmodels本来就是做统计分析的,用单位根做个时间序列平稳性检验并不难,找教程运行就OK了,可是,重点来了,下面这行import命令一直报错!

from statsmodels.stats.diagnostic import unitroot_adf
ImportError: cannot import name**********(后面我就省略了,因为问题已经解决了,但是没截图)

然后,就一直找问题……

四、解决

1、先看官网吧,查一下unitroot_adf在哪?
在这里插入图片描述
对比一下路径没问题啊……
2、去Google了一下statsmodels.stats.diagnostic源码:
在这里插入图片描述
发现sandbox里定义了unitroot_adf。
那就改个调用方法:

from statsmodels.sandbox.stats.diagnostic import unitroot_adf

结果还是报错,但是报错和上面稍为有点不同:
在这里插入图片描述
说是:import Warnings
无奈,找自己的安装目录查看源码吧!
在这里插入图片描述
这太搞笑了,statsmodels.sandbox.py合着就是个摆设!
那就去找
statsmodels.stats.diagnostic.py*吧!
在这里插入图片描述
但是这里就根本没定义unitroot_adf!
问题还是没解决!
接着……

pip uninstall statsmodels

卸载了最新版本的stats models,安装了了个旧版本:

pip install statsmodels==0.10.2

然后导入:

from statsmodels.stats.diagnostic import unitroot_adf

特别感人! 成功了!
但是,前面的STL又报错了!还是import error……
再后来,又去看官网,终于解决了,其实问题很好解决,就是这个过程特别煎熬,因为不知道问题出在哪里。
解决方法:

sm.tsa.stattools.adfuller(p1['都兰'])
# 输出:
(0.7450912365586915,
 0.9906960923424853,
 7,
 13,
 {'1%': -4.068853732362312,
  '5%': -3.1271488757396453,
  '10%': -2.7017297633136095},
 -113.47752924741127)

原因很简单:就是命令调用方式换了而已!

最后,生命在于折腾,经历这一番好像理解的更深刻了~

05-30
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值