KPSS-test

				
					#import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import kpss
				
			
				
					# Generate synthetic stationary and non-stationary data
np.random.seed(17)
				
			
				
					# Stationary data: White noise
stationary_data = np.random.normal(size=100)
				
			
				
					# Create a random walk with larger step size to make it more volatile
random_walk = np.cumsum(np.random.normal(scale=2, size=n))  # Increase the scale for larger volatility
trend = np.linspace(0, 30, n)  # Add a strong linear trend (larger trend)

# Combine random walk and trend for clear non-stationary behavior
non_stationary_data = random_walk + trend
				
			
				
					# Plot the data
plt.figure(figsize=(10,5))
plt.subplot(1, 2, 1)
plt.plot(stationary_data)
plt.title('Stationary Data')

plt.subplot(1, 2, 2)
plt.plot(non_stationary_data)
plt.title('Non-Stationary Data')
plt.tight_layout()
plt.show()
				
			
parts of the ADF test –
tuple
				
					result = kpss(stationary_data)
				
			
				
					print(result)
				
			
access by index
				
					print('ADF Test Statistic:', result[0]) 
				
			
				
					print('p-value:', result[1])   
				
			
				
					print('Number of Lags Used:', result[2])  
				
			
				
					print('Critical Values:', result[3]) 
				
			
				
					adf_stat, p_value, lags, n_obs = result
				
			
				
					print(adf_stat)
				
			
				
					# Function to perform ADF test
def kpss_test(series):
    result = kpss(series)
    print(f'p-value: {result[1]}')
    if result[1] <= 0.05:
        print("=> Strong evidence against the null hypothesis, reject the null hypothesis. Data is non-stationary.")
    else:
        print("=> Weak evidence against the null hypothesis, fail to reject the null hypothesis. Data is level or trend stationary.")

				
			
				
					kpss_test(stationary_data)
				
			
				
					kpss_test(non_stationary_data)
				
			

Ryan is a Data Scientist at a fintech company, where he focuses on fraud prevention in underwriting and risk. Before that, he worked as a Data Analyst at a tax software company. He holds a degree in Electrical Engineering from UCF.

Leave a Reply

Your email address will not be published. Required fields are marked *