วิธีดำเนินการทดสอบ kpss ใน python


การทดสอบ KPSS สามารถใช้เพื่อพิจารณาว่าอนุกรมเวลามีแนวโน้มคงที่หรือไม่

การทดสอบนี้ใช้สมมติฐานว่างและทางเลือกต่อไปนี้:

  • H 0 : อนุกรมเวลามีแนวโน้มคงที่
  • H A : อนุกรมเวลา ไม่มี แนวโน้มคงที่

หาก ค่า p ของการทดสอบต่ำกว่าระดับนัยสำคัญที่กำหนด (เช่น α = 0.05) เราจะปฏิเสธสมมติฐานว่างและสรุปว่าอนุกรมเวลาไม่มีแนวโน้มคงที่

มิฉะนั้น เราจะล้มเหลวในการปฏิเสธสมมติฐานที่เป็นโมฆะ

ตัวอย่างต่อไปนี้แสดงวิธีดำเนินการทดสอบ KPSS ใน Python

ตัวอย่างที่ 1: การทดสอบ KPSS ใน Python (พร้อมข้อมูลที่อยู่กับที่)

ขั้นแรก เรามาสร้างข้อมูลปลอมใน Python เพื่อใช้กับ:

 import numpy as np
import matplotlib. pyplot as plt

#make this example reproducible
n.p. random . seed ( 1 )

#create time series data
data = np. random . normal (size= 100 )

#create line plot of time series data
plt. plot (data) 

เราสามารถใช้ฟังก์ชัน kpss() จากแพ็คเกจ statsmodels เพื่อทำการทดสอบ KPSS กับข้อมูลอนุกรมเวลานี้:

 import statsmodels. api as sm

#perform KPSS test
sm. tsa . stattools . kpss (data, regression=' ct ')

(0.0477617848370993,
 0.1,
 1,
 {'10%': 0.119, '5%': 0.146, '2.5%': 0.176, '1%': 0.216})

InterpolationWarning: The test statistic is outside of the range of p-values available
in the look-up table. The actual p-value is greater than the p-value returned.

ต่อไปนี้เป็นวิธีการตีความผลลัพธ์:

  • สถิติการทดสอบ KPSS: 0.04776
  • ค่า p: 0.1
  • พารามิเตอร์ชดเชยการตัดทอน: 1
  • ค่าวิกฤตที่ 10% , 5% , 2.5% และ 1%

ค่า p คือ 0.1 เนื่องจากค่านี้ไม่น้อยกว่า 0.05 เราจึงล้มเหลวในการปฏิเสธสมมติฐานว่างของการทดสอบ KPSS

ซึ่งหมายความว่าเราสามารถสรุปได้ว่าอนุกรมเวลามีแนวโน้มคงที่

หมายเหตุ 1 : จริงๆ แล้วค่า p ยังคงมากกว่า 0.1 แต่ค่าต่ำสุดที่ฟังก์ชัน kpss() จะสร้างคือ 0.1

หมายเหตุ 2 : คุณต้องใช้อาร์กิวเมนต์ regression=’ct’ เพื่อระบุว่าสมมติฐานว่างของการทดสอบคือข้อมูลมีแนวโน้มคงที่

ตัวอย่างที่ 2: การทดสอบ KPSS ใน Python (พร้อมข้อมูลที่ไม่คงที่)

ขั้นแรก เรามาสร้างข้อมูลปลอมใน Python เพื่อใช้กับ:

 import numpy as np
import matplotlib. pyplot as plt

#make this example reproducible
n.p. random . seed ( 1 )

#create time series data
data =np. array ([0, 3, 4, 3, 6, 7, 5, 8, 15, 13, 19, 12, 29, 15, 45, 23, 67, 45])

#create line plot of time series data
plt. plot (data) 

อีกครั้ง เราสามารถใช้ฟังก์ชัน kpss() จากแพ็คเกจ statsmodels เพื่อทำการทดสอบ KPSS กับข้อมูลอนุกรมเวลานี้:

 import statsmodels. api as sm

#perform KPSS test
sm. tsa . stattools . kpss (data, regression=' ct ')

(0.15096358910843685,
 0.04586367574296928,
 3,
 {'10%': 0.119, '5%': 0.146, '2.5%': 0.176, '1%': 0.216})

ต่อไปนี้เป็นวิธีการตีความผลลัพธ์:

  • สถิติการทดสอบ KPSS: 0.1509
  • ค่า p: 0.0458
  • พารามิเตอร์ชดเชยการตัดทอน: 3
  • ค่าวิกฤตที่ 10% , 5% , 2.5% และ 1%

ค่า p คือ 0.0458 ค่านี้น้อยกว่า 0.05 เราปฏิเสธสมมติฐานว่างของการทดสอบ KPSS

ซึ่งหมายความว่าอนุกรมเวลา ไม่ คงที่

หมายเหตุ : คุณสามารถค้นหาเอกสารฉบับเต็มสำหรับฟังก์ชัน kpss() ได้จากแพ็คเกจ statsmodels ที่นี่

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้ให้ข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานกับข้อมูลอนุกรมเวลาใน Python:

วิธีทำการทดสอบ Augmented Dickey-Fuller ใน Python
วิธีดำเนินการทดสอบแนวโน้ม Mann-Kendall ใน Python
วิธีพล็อตอนุกรมเวลาใน Matplotlib

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *