วิธีดำเนินการทดสอบแนวโน้ม mann-kendall ใน python


การทดสอบแนวโน้ม Mann-Kendall ใช้เพื่อพิจารณาว่ามีแนวโน้มในข้อมูลอนุกรมเวลาหรือไม่ นี่คือการทดสอบแบบไม่ใช้พารามิเตอร์ ซึ่งหมายความว่าไม่มีการตั้งสมมติฐานเกี่ยวกับความปกติของข้อมูล

สมมติฐานการทดสอบมีดังนี้:

H 0 (สมมติฐานว่าง): ไม่มีแนวโน้มในข้อมูล

H A (สมมติฐานทางเลือก): มีแนวโน้มอยู่ในข้อมูล (นี่อาจเป็นแนวโน้มเชิงบวกหรือเชิงลบ)

หากค่า p ของการทดสอบต่ำกว่าระดับนัยสำคัญที่กำหนด (ตัวเลือกทั่วไปคือ 0.10, 0.05 และ 0.01) ก็มีหลักฐานที่มีนัยสำคัญทางสถิติว่ามีแนวโน้มอยู่ในข้อมูลจากอนุกรมเวลา

บทช่วยสอนนี้จะอธิบายวิธีการทดสอบแนวโน้ม Mann-Kendall ใน Python

ตัวอย่าง: การทดสอบแนวโน้ม Mann-Kendall ใน Python

หากต้องการทำการทดสอบแนวโน้ม Mann-Kendall ใน Python เราจะติดตั้งแพ็คเกจ pymannkendall ก่อน:

 pip install pymannkendall

เมื่อเราติดตั้งแพ็คเกจนี้แล้ว เราก็สามารถทำการทดสอบแนวโน้ม Mann-Kendall บนชุดข้อมูลอนุกรมเวลาได้:

 #create dataset
data = [31, 29, 28, 28, 27, 26, 26, 27, 27, 27, 28, 29, 30, 29, 30, 29, 28]

#perform Mann-Kendall Trend Test
import pymannkendall as mk

mk. original_test (data)

Mann_Kendall_Test(trend='no trend', h=False, p=0.422586268671707,
                  z=0.80194241623, Tau=0.147058823529, s=20.0,
                  var_s=561.33333333, slope=0.0384615384615, intercept=27.692307692)

ต่อไปนี้เป็นวิธีการตีความผลการทดสอบ:

  • แนวโน้ม : สิ่งนี้บ่งบอกถึงแนวโน้ม ผลลัพธ์ที่เป็นไปได้รวมถึงการเพิ่มขึ้น ลดลง หรือไม่มีแนวโน้มเลย
  • h: จริงหากมีแนวโน้มอยู่ เท็จหากไม่มีแนวโน้ม
  • p: ค่า p ของการทดสอบ
  • z: สถิติการทดสอบการทำให้เป็นมาตรฐาน
  • เทา: เคนดัลล์ เทา.
  • s: คะแนนของแมนน์-เคนดัล
  • var_s: ส่วนเบี่ยงเบน S
  • ความชัน: Theil-Sen/ตัวประมาณความชัน
  • การสกัดกั้น: การสกัดกั้นแนว Kendall-Theil ที่แข็งแกร่ง

ค่าหลักที่เราสนใจคือค่า p ซึ่งบอกเราว่าข้อมูลมีแนวโน้มที่มีนัยสำคัญทางสถิติหรือไม่

ในตัวอย่างนี้ ค่า p คือ 0.4226 ซึ่งไม่น้อยกว่า 0.05 จึงไม่มีแนวโน้มที่สำคัญในข้อมูลอนุกรมเวลา

นอกเหนือจากการดำเนินการทดสอบแนวโน้ม Mann-Kendall แล้ว เราสามารถสร้างการลงจุดเส้นด่วนโดยใช้ Matplotlib เพื่อแสดงภาพข้อมูลอนุกรมเวลาจริง:

 import matplotlib. pyplot as plt

plt. plot (data)

ครั้ง

จากแผนภูมิเราจะเห็นว่าข้อมูลกระจัดกระจายเล็กน้อยซึ่งยืนยันว่าข้อมูลไม่มีแนวโน้มที่ชัดเจน

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

วิธีพล็อตอนุกรมเวลาใน Matplotlib
วิธีทำการทดสอบ Augmented Dickey-Fuller ใน Python
วิธีพล็อตหลายซีรีย์จาก Pandas DataFrame

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

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