UTC时间
:时间戳是以格林威治时间1970年01月01日00时00分00秒为基准计算所经过时间的秒数,是一个浮点数。Python的内置模块time和datetime都可以对时间格式数据进行转换,如时间戳和时间字符串的相互转换。
报错记录:AR has been removed from statsmodels and replaced with statsmodels.tsa.ar_model.AutoReg.
statsmodels版本太新了。根据提示将sm.tsa.AutoReg换成statsmodels.tsa.ar_model.AutoReg()还是没用,提示module ‘statsmodels.tsa.api’ has no attribute ‘ar_model’。
解决方案:改成sm.tsa.AutoReg. 或者事先from statsmodels.tsa.ar_model import AutoReg
import datetime
print(datetime.date.min)
print(datetime.date.max)
print(datetime.date.today())
print(datetime.date.today().year)
print(datetime.date.today().month)
print(datetime.date.today().day)
import datetime
print(datetime.datetime.now())
print(datetime.datetime.min)
print(datetime.datetime.max)
print(datetime.datetime.today())
print(datetime.datetime.today().year)
print(datetime.datetime.today().month)
print(datetime.datetime.today().day)
print(datetime.datetime.today().hour)
print(datetime.datetime.today().hour)
import datetime
timestamp = 22
dt_with_timezone = datetime.datetime.fromtimestamp(timestamp, tz=datetime.timezone.utc)
print("带UTC时区时间:", dt_with_timezone)
dt_without_timezone = datetime.datetime.fromtimestamp(timestamp)
print("不带UTC时区时间", dt_without_timezone)
import time
print(time.time())
print(time.localtime())
print(time.mktime(time.localtime()))
import time
time_str = time.strftime(("%Y-%m-%d %H:%M:%S"),time.localtime())
print(time_str)
import datetime
print(datetime.datetime.strptime('2022-01-15','%Y-%m-%d'))
import pandas as pd
print(pd.to_datetime('2022/01/15'))
import datetime
delta = datetime.datetime(2022,1,16)-datetime.datetime(2021,1,1,9,15)
print(delta)
print(delta.days)
print(delta.seconds)
这里只介绍一下AR的定义,具体步骤见参考里的文章
通俗一点讲,就是用过去时间点的数据预测未来时间点的数据。
具体公式如下:
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm
IndexData = pd.read_csv('./data/timeseries_data.csv')
data = IndexData['close']
temp = np.array(data)
model =sm.tsa.AutoReg(temp,lags = 1)
results_AR = model.fit()
plt.figure(figsize=(20,10))
plt.plot(temp,'b',label='Close')
plt.plot (results_AR.fittedvalues,'r',label='AR model')
plt.legend()
滑动平均(moving average model/MA)模型也称移动平均模型,是用过去各个时期的随机干扰或预测误差的线性组合来表达当前预测值。
X_t = \mu+a_t-\theta_1a_{t-1}-...-\theta_qa_{t-q} = \mu + a_t -\sum^{p}_{i=1}\theta_{i}a_{t-i}
Xt=μ+at−θ1at−1−...−θqat−q=μ+at−i=1∑pθiat−i
其中
报错记录:AttributeError: module ‘statsmodels.tsa.api’ has no attribute ‘ARMA’
从版本 0.12 开始,statsmodels 库不再具有单独的 ARMA 类。应该使用 ARIMA 类,该类可以处理自回归 (AR) 和移动平均 (MA) 分量。
import warnings
warnings.filterwarnings("ignore")
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm
IndexData = pd.read_csv('./data/timeseries_data.csv')
data = IndexData['close']
temp = np.array(data)
model = sm.tsa.ARIMA(temp, order=(0, 0,10))
results_MA = model.fit()
plt.figure(figsize=(20, 10))
plt.plot(temp, 'b', label='close')
plt.plot(results_MA.fittedvalues,color = 'red',label ='MA')
plt.legend(fontsize = 15)
plt.show()
ARMA模型就是AR模型和MA模型混合,具体公式如下:
import matplotlib.pyplot as plt
import statsmodels.api as sm
IndexData= pd.read_csv('./data/timeseries_data.csv')
data =IndexData['close']
temp =np.array(data)
p = 3
q = 10
model = sm.tsa.ARIMA (temp,order=(p,0,q))
results_ARMA = model.fit()
plt.figure(figsize=(20,4*5))
plt.plot(temp,'b',label='close')
plt.plot(results_ARMA.fittedvalues,'r',label='ARMA model')
plt.legend()
ARIMA模型在ARMA模型基础上考虑了时间序列的差分,ARIMA模型有三个参数ARIMA(p,d,q),p为自回归AR项数,q为滑动平均MA项数,d为使序列平稳所做的差分次数(阶数)。
差分后是对序列的差分的结果建立模型而不是真正的序列:例如**ARIMA(p,1,q)**相当于对差分序列
import matplotlib.pyplot as plt
import statsmodels.api as sm
IndexData = pd.read_csv('./data/timeseries_data.csv')
IndexData = IndexData.set_index(IndexData['date'])
IndexData['colseDiff_1']=IndexData['close'].diff(1)
IndexData['closeDiff_2']=IndexData['colseDiff_1'].diff(1)
IndexData.plot(subplots=True,figsize=(20,15))
data = IndexData['closeDiff_2']
temp = np.array (data)
p=2;d = 2;q=10
model = sm.tsa.ARIMA(temp,order = (p,d,q))
results_ARIMA = model.fit()
plt.figure (figsize=(20,10))
plt.plot (temp,'b',label='closeDiff_2')
plt.plot (results_ARIMA.fittedvalues,'r',label='ARIMA model')
plt.legend()
时间序列分析—自回归(AR) - 蜡笔小xi的文章 - 知乎
时间序列(二):初识自回归模型AR、滑动平均模型MR - Big冯的文章 - 知乎
建模算法系列二十三:ARMA模型 - Lvy-呀的文章 - 知乎
这里只介绍一下AR的定义,具体步骤见参考里的文章通俗一点讲,就是用过去时间点的数据预测未来时间点的数据。Xta1Xt−1a2Xt−2apXt−p∑j1pajXt−jεtXta1Xt−1a2Xt−2...apXt−pj1∑pajXt−jεtXtX_tXt=历史数据Xt−jX_{t-j}Xt−j。
python Pyinstaller 打包 statsmodels.api失败no module named: statsmodels.tsa.statespace._filters
最近用pyinstaller打包的时候,程序中包含statsmodels.api这个第三方库,然后打包完后运行EXE时遇到找不到包的:“no module named statsmodels.tsa.XXXXX”错误,搞得我焦头烂额,钻研了一下终于总算是解决了。不过我找遍国内外网站,都没有相关解决办法, 也是靠自己摸索出来的,所以就做个好人好事,分享出来。
当导入statsmodels.api的...
statsmodels v0.11.1
链接: https://www.statsmodels.org/stable/user-guide.html#time-series-analysis.
如有翻译总结错误,欢迎指出!
时间序列分析
statsmodels.tsa包含可用于时间序列分析的模型和函数。
基本模型包括单变量自回归模型(AR)、向量自回归模型(VAR)和单变量自回归移动平均模型(ARMA)。非线性模型包括马尔可夫切换动态回归和自回归。
它还包括时间序列的描述性统计,如自相关、偏自相关函数和周期
cat_fish = pd.read_csv('./data/catfish.csv',parse_dates=[0],index_col=0,squeeze=True)
cat_fish.head()
1986-0
这种使用方法已经弃用了,改成下面即可
import
statsmodels.
api as sm
model = sm.
tsa.arima.ARIMA(train_data, order=(1,1,1))
result = model.fit()
时间序列分析预测小工具。自回归模型分析,卡尔曼滤波自回归模型,AIC, BIC, FPE, MDL, SBC, CAT, PHI自回归模型检验。The TSA toolbox is useful for analysing Time Series. - Stochastic Signal processing
- Autoregressive Model Identification
- adaptive autoregressive modelling using Kalman filtering
- multivariate autoregressive modelling
- maximum entropy spectral estimation
- matched (inverse) filter design
- Histogram analysis
- Calcution of the entropy of a time series
- Non-linear analysis (3rd order statistics)
- Test for UnitCircle- and Hurwitz- Polynomials
- multiple signal processing
- Several criteria (AIC, BIC, FPE, MDL, SBC, CAT, PHI) for
model order selection an autoregressive model are included.
- Fast algorithms are used
- missing values (encoded as NaN's) are considered
NotImplementedError:
statsmodels.
tsa.arima_model.
ARMA and
statsmodels.
tsa.arima_model.ARIMA have
been removed in favor of
statsmodels.
tsa.arima.model.ARIMA (note the .
between arima and model) and sta
ValueError: too many values to unpack (expected 3)
小波分析是一种通过将时间序列数据进行频域和时间域的分析来揭示数据的特征和模式的方法。通过小波变换,可以将时间序列数据转换为不同尺度的小波系数,从而可以分析数据在不同频率和时间尺度上的变化。小波分析在信号处理、图像处理、金融分析等领域有广泛的应用。
根据引用,在应用小波分析对时间序列数据进行分析时,可以完成如下任务:
1. 计算小波变换系数,这些系数反映了数据在不同尺度上的频率特征。
2. 绘制小波系数实部的等值线图,可以直观地显示数据的频率特征。
3. 绘制小波系数模和模方的等值线图,可以显示数据的振幅特征。
4. 绘制小波方差图,可以显示数据在不同尺度上的方差变化情况。
5. 绘制不同时间尺度的小波图,可以观察数据在不同时间尺度上的频率特征。
根据引用,进行小波尺度谱变换时,可以选择一个默认的小波函数,计算小波的尺度范围,并绘制信号的小波图。小波尺度谱变换可以展示数据在不同尺度和时间上的频率特征,帮助我们理解数据的变化规律。
总之,小波分析可以帮助我们从时间序列数据中提取出不同尺度和频率上的特征信息,进而分析数据的模式和变化规律。