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)

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

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

  • 16
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 如果在导入 "statsmodels.stats.diagnostic.unitroot_adf" 时出现错误,可以尝试以下几种方法: 1. 检查是否安装了 statsmodels 包,如果没有安装,请运行 "pip install statsmodels" 或 "conda install statsmodels" 安装。 2. 检查是否使用了正确的 Python 版本,statsmodels 可能不兼容您使用的 Python 版本。 3. 检查代码中的错误,确保在导入模块时使用了正确的语法。 4. 检查是否已经正确导入其他所需的模块,某些模块可能依赖其他模块,因此在使用前请确保已正确导入所需的模块。 如果以上方法都不起作用,请在报告错误时附上您的代码和错误信息,以便更好地了解和解决问题。 ### 回答2: 出现`from statsmodels.stats.diagnostic import unitroot_adf`的错误可能是因为没有正确安装或导入了statsmodels库。 要解决此问题,您可以按照以下步骤进行操作: 1. 首先,确保已经正确安装了statsmodels库。可以使用`pip install statsmodels`命令来安装。 2. 如果已经安装了statsmodels库,但仍然出现错误,可能是因为库的版本不兼容。您可以尝试更新statsmodels库到最新版本,使用`pip install --upgrade statsmodels`命令进行更新。 3. 如果更新仍然不能解决问题,您可以检查您的Python环境中是否有其他与statsmodels库冲突的库。可以通过使用`pip list`命令查看所有已安装的库,确保没有其他具有相同名称的库。 4. 如果上述步骤仍然无法解决问题,您可以尝试重新安装statsmodels库。可以通过先使用`pip uninstall statsmodels`命令来卸载库,然后使用`pip install statsmodels`重新安装。 5. 如果问题仍然存在,您可以在相关的Python开发社区或statsmodels官方论坛中寻求帮助。在那里,您可以提供更详细的错误信息和操作环境,以便获得更准确的解答。 无论是哪种情况,重要的是要确保正确导入并使用所需的库。 ### 回答3: 当使用统计模型statsmodels.stats.diagnostic下的unitroot_adf函数出错时,可以尝试以下几个解决方法: 1. 检查安装:确认是否已经正确安装了statsmodels包。可以使用命令`pip install statsmodels`来安装最新版本。 2. 版本兼容性:检查statsmodels包的版本与其他依赖包的版本是否相兼容。可以尝试更新或降低statsmodels的版本以解决兼容性问题。 3. 导入问题:确认是否已正确导入unitroot_adf函数。可以检查是否使用了正确的导入语句`from statsmodels.stats.diagnostic import unitroot_adf`,或者尝试使用完整的导入语句`import statsmodels.stats.diagnostic`来导入整个包,然后使用`unitroot_adf`函数。 4. 数据准备:确保传入unitroot_adf函数的数据格式正确。unitroot_adf函数通常接受时间序列的数据,可以尝试将数据转换为正确的格式,如使用pandas库的Series或DataFrame对象来传递数据。 5. 参数设置:检查是否正确设置了unitroot_adf函数的各个参数。根据具体情况,可能需要传递一些特定的参数或对参数进行调整以满足需求。 6. 查看错误信息:根据具体的错误提示信息,可以进一步定位问题所在。错误信息可能包括具体的错误类型、行号或其他相关信息,利用这些信息可以更准确地解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值