模型平稳性指标psi和csi是用于检验时间序列数据是否平稳的统计量。它们的原理是基于Augmented Dickey-Fuller (ADF)检验,通过计算自相关系数和偏自相关系数来检验时间序列数据的平稳性。
1. psi(Partial Autocorrelation Integrated): 它是对原始自相关函数进行积分得到的,可以衡量时间序列数据的平稳性。当psi接近于0时,表示数据具有平稳性;当psi大于0时,表示数据具有非平稳性。
2. csi(Cumulative Sums of Squares): 它是对原始自相关函数的平方进行累加得到的,可以衡量时间序列数据的平稳性。当csi接近于0时,表示数据具有平稳性;当csi大于0时,表示数据具有非平稳性。
应用:在金融、经济学等领域中,经常需要对时间序列数据进行平稳性检验,以确定数据是否符合假设条件,从而选择合适的模型进行建模。
Python代码如下:
import numpy as np
import pandas as pd
from statsmodels.tsa.stattools import adfuller
def calculate_psi(series, lag=1):
"""
计算PSI值
:param series: 时间序列数据
:param lag: 滞后阶数
:return: PSI值
"""
series = np.array(series)
n = len(series)
mean = np.mean(series)
var = np.var(series)
psi = []
for i in range(lag + 1):
psi.append((np.sum((series[i:n] - mean) * (series[:n - i] - mean)) / (n * var)))
return psi
def calculate_csi(series, lag=1):
"""
计算CSI值
:param series: 时间序列数据
:param lag: 滞后阶数
:return: CSI值
"""
series = np.array(series)
n = len(series)
csi = []
for i in range(lag + 1):
csi.append((np.sum((series[i:n] ** 2) - (mean ** 2)) / (n * var)))
return csi
# 示例数据
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 计算PSI和CSI值
psi_values = calculate_psi(data)
csi_values = calculate_csi(data)
print("PSI值:", psi_values)
print("CSI值:", csi_values)