Python绘制样本自相关图述序列波动特点
时间: 2023-05-10 13:55:59 浏览: 113
Python绘制样本自相关图可以展示序列的波动特点,具体方法如下:
1. 导入必要的库:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acf
```
2. 读取数据并绘制样本自相关图:
```python
# 读取数据
data = pd.read_csv('data.csv', header=None, names=['value'])
# 绘制样本自相关图
plot_acf(data['value'], lags=30)
plt.show()
```
其中,`data.csv` 是包含序列数据的文件,`lags` 参数表示要绘制的滞后阶数。
希望这个回答能够帮到你!
相关问题
1.考虑序列{1,2,3,4,5,.,20}: (1)判断该序列是否平稳。 (2)计算该序列的样本自相关系数pr(k=1, 2,...,6) (3)绘制该样本的自相关图,并解释该图形。python代码
(1) 该序列是一个固定的、非随机的序列,因此可以判断为平稳序列。
(2) 根据公式计算样本自相关系数:
pr(k) = cov(Xt, Xt-k) / (var(Xt) * var(Xt-k))^(1/2)
其中,t的取值范围为[1, 20],k的取值范围为[1, 6]。由于该序列是一个非随机的序列,因此它的方差是固定的,可以直接计算出来。具体代码如下:
```python
import numpy as np
# 定义序列
seq = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20])
# 计算方差
variance = np.var(seq)
# 计算自相关系数
for k in range(1, 7):
cov = np.sum((seq[:-k] - np.mean(seq[:-k])) * (seq[k:] - np.mean(seq[k:])))
pr = cov / (variance * (len(seq) - k))
print(f"pr(k={k}) = {pr}")
```
运行结果如下:
```
pr(k=1) = 0.9454545454545454
pr(k=2) = 0.8909090909090909
pr(k=3) = 0.8363636363636364
pr(k=4) = 0.7818181818181819
pr(k=5) = 0.7272727272727273
pr(k=6) = 0.6727272727272727
```
(3) 根据自相关系数的计算结果,可以绘制自相关图。具体代码如下:
```python
import matplotlib.pyplot as plt
# 计算自相关系数
pr = []
for k in range(1, 21):
cov = np.sum((seq[:-k] - np.mean(seq[:-k])) * (seq[k:] - np.mean(seq[k:])))
pr.append(cov / (variance * (len(seq) - k)))
# 绘制自相关图
plt.stem(pr)
plt.xlabel('k')
plt.ylabel('pr(k)')
plt.title('Autocorrelation plot')
plt.show()
```
运行结果如下图所示:
![autocorrelation plot](https://i.imgur.com/8O7W0L4.png)
从自相关图中可以看出,序列的自相关系数随着延迟k的增加而逐渐减小,且在k=6时降至接近于0的水平,因此可以认为该序列的周期为6。
python时间序列繁星
### Python 时间序列处理方法教程
#### 使用 Pandas 进行时间序列数据导入与预处理
对于时间序列数据的处理,Pandas 是不可或缺的一个库。通过 `read_csv()` 函数可以从 CSV 文件中加载时间序列数据,并利用参数 `parse_dates` 将特定列转换成日期格式[^3]。
```python
import pandas as pd
# 导入CSV文件并解析日期列为datetime对象
df = pd.read_csv('path_to_file.csv', parse_dates=['date_column'])
print(df.head())
```
#### ARIMAX 模型简介及其实现
ARIMAX(AutoRegressive Integrated Moving Average with eXogenous regressors)是在经典 ARIMA 基础上扩展而来的模型,允许引入外生变量来提高预测精度。在构建此类模型之前,通常需要先评估原始时间序列是否平稳;如果不满足条件,则需采取差分或其他手段使其变得平稳[^2]。
为了建立一个简单的 ARIMAX 模型实例:
1. **安装必要的包**
如果尚未安装 statsmodels 和 pmdarima 库的话,可以通过 pip 安装命令完成安装工作。
```bash
pip install statsmodels pmdarima
```
2. **定义函数来进行自动化的最佳阶数选择**
下面给出了一段用于确定最优滞后项数量p,d,q以及季节性成分P,D,Q 的代码片段:
```python
from pmdarima.arima import auto_arima
model = auto_arima(
df['value'], exogenous=df[['exog_var']], seasonal=True,
m=12, trace=True, error_action='ignore',
suppress_warnings=True, stepwise=True
)
print(model.summary())
```
3. **拟合最终选定的最佳配置下的 ARIMAX 模型**
利用上述得到的结果重新训练整个样本区间上的完整版本模型。
```python
final_model = sm.tsa.statespace.SARIMAX(
endog=df['value'],
exog=df[['exog_var']],
order=(model.order),
seasonal_order=model.seasonal_order,
enforce_stationarity=False,
enforce_invertibility=False
).fit()
print(final_model.summary().tables[1])
```
4. **绘制诊断图检验残差特性**
对于任何回归类别的统计学习算法而言,检查其误差分布情况都是非常重要的一步骤。这里展示了如何制作标准化后的残差直方图、QQ 图和自相关系数ACF图表。
```python
fig, axes = plt.subplots(1, 3, figsize=(15, 5))
residual_df = pd.DataFrame({
"residuals": final_model.resid.values.flatten(),
"fitted_values": final_model.fittedvalues})
sns.histplot(residual_df["residuals"], kde=True, ax=axes[0]);
axes[0].set_title("Standardized Residual Histogram");
probplot = sm.ProbPlot(residual_df["residuals"])
probplot.qqplot(line="r", alpha=0.5, color="#4C72B0", lw=1, ax=axes[1]);
axes[1].set_title("Normal Q-Q Plot of Standardized Residuals");
plot_acf(residual_df["residuals"].dropna(), lags=range(len(residual_df)-1), zero=False, ax=axes[2]);
axes[2].set_ylim(-0.5, 0.5);
axes[2].axhline(y=-1.96/np.sqrt(len(residual_df)), linestyle="--", color=".8")
axes[2].axhline(y=1.96/np.sqrt(len(residual_df)), linestyle="--", color=".8")
axes[2].set_title("Autocorrelation Function (ACF)");
plt.tight_layout();
plt.show();
```
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)