提示词
1
| 有一个以日期为index的DataFrame,包含某金融产品的成交价,现在需要对其进行ADF检验,请给出示例代码。
|
答案
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| import pandas as pd from statsmodels.tsa.stattools import adfuller
# 假设原始DataFrame为df,日期为index,包含"成交价"列 # 示例数据准备(可替换为实际数据) # dates = pd.date_range(start='2023-01-01', end='2025-06-27', freq='D') # prices = [100 + i*0.5 + 5*np.random.randn() for i in range(len(dates))] # df = pd.DataFrame({'成交价': prices}, index=dates)
# 执行ADF检验 def adf_test(series): result = adfuller(series.dropna()) # 自动处理缺失值[5](@ref) adf_stat = result[0] p_value = result[1] critical_values = result[4] # 格式化输出结果 output = pd.Series({ 'ADF Statistic': f"{adf_stat:.4f}", 'p-value': f"{p_value:.4f}", '1%临界值': critical_values['1%'], '5%临界值': critical_values['5%'], '10%临界值': critical_values['10%'] }) # 判断结论 if p_value < 0.05: output['结论'] = "拒绝原假设,序列平稳" else: output['结论'] = "无法拒绝原假设,序列非平稳" return output
# 调用检验函数 adf_result = adf_test(df['成交价']) print(adf_result)
|
我使用了自己的数据,代码都是ai写的,只是注释了模拟数据行。
结果:
1 2 3 4 5 6 7
| ADF Statistic -1.7580 p-value 0.4015 1%临界值 -3.433854 5%临界值 -2.863088 10%临界值 -2.567594 结论 无法拒绝原假设,序列非平稳 dtype: object
|