วิธีดำเนินการทดสอบ 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