บริบท:
ฉันมีกลุ่มเว็บไซต์ที่ฉันบันทึกจำนวนการเข้าชมรายวัน:
W0 = { 30, 34, 28, 30, 16, 13, 8, 4, 0, 5, 2, 2, 1, 2, .. }
W1 = { 1, 3, 21, 12, 10, 20, 15, 43, 22, 25, .. }
W2 = { 0, 0, 4, 2, 2, 5, 3, 30, 50, 30, 30, 25, 40, .. }
...
Wn
คำถามทั่วไป:
- ฉันจะทราบได้อย่างไรว่าไซต์ใดที่มีการใช้งานมากที่สุด
จากนี้ฉันหมายถึงได้รับการเข้าชมมากขึ้นหรือมีการเข้าชมเพิ่มขึ้นอย่างฉับพลันในช่วงไม่กี่วันที่ผ่านมา สำหรับวัตถุประสงค์ภาพประกอบในตัวอย่างเล็ก ๆ ด้านบน W0 จะเริ่มได้รับความนิยม แต่เริ่มแสดงการละทิ้ง W1 กำลังแสดงความนิยมอย่างต่อเนื่อง
ความคิดเริ่มต้น:
ฉันพบหัวข้อนี้ใน SOที่อธิบายสูตรง่ายๆ:
// pageviews for most recent day
y2 = pageviews[-1]
// pageviews for previous day
y1 = pageviews[-2]
// Simple baseline trend algorithm
slope = y2 - y1
trend = slope * log(1.0 +int(total_pageviews))
error = 1.0/sqrt(int(total_pageviews))
return trend, error
มันดูดีและง่ายพอ แต่ฉันมีปัญหากับมัน
การคำนวณจะขึ้นอยู่กับความลาดชัน นี่เป็นเรื่องปกติและเป็นหนึ่งในคุณสมบัติที่ฉันสนใจ แต่ IMHO มันมีปัญหาสำหรับซีรีส์ที่ไม่ใช่แบบโมโนโทนิก ลองจินตนาการว่าในบางวันเรามีจำนวนการเข้าชมอย่างต่อเนื่อง (ดังนั้นความชัน = 0) ดังนั้นแนวโน้มข้างต้นจะเป็นศูนย์
คำถาม:
- ฉันจะจัดการกับทั้งสองกรณีได้อย่างไร (การเพิ่ม / ลดเสียงเดียว) และการเข้าชมจำนวนมาก
- ฉันควรใช้สูตรแยกกันไหม