day 58 python打卡

发布于:2025-07-04 ⋅ 阅读:(19) ⋅ 点赞:(0)

作业:对太阳黑子数量数据集用arima完成流程

1.导入原始数据,并可视化

# 导入必要的库
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import adfuller
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from statsmodels.tsa.arima.model import ARIMA
 
# 设置matplotlib以正确显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
 
 
from statsmodels.datasets import sunspots
df_sun = sunspots.load_pandas().data['SUNACTIVITY']
 
 
print("--- 原始数据预览 ---")
print(df_sun.head())
 
# 绘制时序图
plt.figure(figsize=(14, 7))
plt.plot(df_sun)
plt.title('太阳黑子数量数量')
plt.xlabel('日期')
plt.ylabel('数量')
plt.show()

 2.ADF检验,判断平稳性

# ADF检验,判断平稳性
def adf_test(timeseries):
    print('--- ADF检验结果 ---')
    # H0: 序列非平稳; H1: 序列平稳
    result = adfuller(timeseries)
    print(f'ADF Statistic: {result[0]}')
    print(f'p-value: {result[1]}') # 重点关注这个值
    if result[1] <= 0.05:
        print("结论: 成功拒绝原假设,序列是平稳的。")
    else:
        print("结论: 未能拒绝原假设,序列是非平稳的。")
 
adf_test(df_sun)

3.绘制ACF和PCAF

# 因为数据是平稳的,我们直接对原始数据绘制ACF和PACF
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 8))
 
plot_acf(ts_data, ax=ax1, lags=40)
ax1.set_title('自相关函数 (ACF)')
 
plot_pacf(ts_data, ax=ax2, lags=40)
ax2.set_title('偏自相关函数 (PACF)')
 
plt.tight_layout()
plt.show()

@浙大疏锦行