วิธีการเปลี่ยนลักษณะอย่างกะทันหัน?


13

คำถามนี้อาจง่ายเกินไป สำหรับแนวโน้มชั่วคราวของข้อมูลฉันต้องการค้นหาจุดที่การเปลี่ยนแปลง "ฉับพลัน" เกิดขึ้น ตัวอย่างเช่นในรูปแรกที่แสดงด้านล่างฉันต้องการค้นหาจุดเปลี่ยนแปลงโดยใช้วิธีการทางสถิติ และฉันต้องการที่จะใช้วิธีการดังกล่าวกับข้อมูลอื่น ๆ ที่จุดเปลี่ยนไม่ชัดเจน (เช่นรูปที่ 2) ดังนั้นจึงมีวิธีการร่วมกันสำหรับวัตถุประสงค์ดังกล่าวหรือไม่

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


3
คำว่า "จุดเปลี่ยน" มีความหมายเฉพาะที่ฉันไม่คิดว่าจะนำไปใช้กับการเปลี่ยนแปลงอย่างฉับพลันในระดับ (ไม่ว่าจะขึ้นหรือลง) คุณใช้วลี 'จุดเปลี่ยน' และฉันคิดว่านั่นอาจเป็นทางเลือกที่ดีกว่า โปรดอย่าคิดว่านี่เป็น 'พื้นฐานเกินไป'; แม้คำถามพื้นฐานยินดีต้อนรับโดยไม่ต้องขอโทษและคำถามนี้ไม่ได้เป็นคำถามพื้นฐานจากระยะไกล
Glen_b -Reinstate Monica

ขอบคุณ ฉันเปลี่ยน 'จุดเปลี่ยน' เป็น 'จุดเปลี่ยน' ในคำถาม
user2230101

คำตอบ:


11

หากการสังเกตข้อมูลอนุกรมเวลาของคุณมีความสัมพันธ์กับการสังเกตก่อนหน้านี้ในทันทีกระดาษของเฉินและหลิว (1993) [ 1 ]อาจสนใจคุณ มันอธิบายวิธีการในการตรวจสอบการเลื่อนระดับและการเปลี่ยนแปลงชั่วคราวในกรอบการทำงานของโมเดลอนุกรมเวลาเฉลี่ยเคลื่อนที่แบบอัตโนมัติ[1]

[1]: เฉิน, C. และ Liu, LM (1993),
"การประมาณค่าร่วมกันของพารามิเตอร์แบบจำลองและผลกระทบภายนอกในอนุกรมเวลา,"
วารสารสมาคมสถิติอเมริกัน , 88 : 421, 284-297


+1 ฉันพยายาม (แต่ล้มเหลว) เพื่อจำข้อมูลเกี่ยวกับบทความนี้ให้เพียงพอ มันเป็นข้อมูลอ้างอิงที่ดี
Glen_b -Reinstate Monica

6

ปัญหาในสถิตินี้เรียกว่าการตรวจจับเหตุการณ์ชั่วคราว (univariate) แนวคิดที่ง่ายที่สุดคือการใช้ค่าเฉลี่ยเคลื่อนที่และส่วนเบี่ยงเบนมาตรฐาน การอ่านใด ๆ ที่เป็น "out of" 3 ค่าเบี่ยงเบนมาตรฐาน (กฎของหัวแม่มือ) ถือว่าเป็น "เหตุการณ์" แน่นอนว่าเป็นรุ่นขั้นสูงที่ใช้ HMM หรือการถดถอย นี่คือเบื้องต้นภาพรวมของสนาม


5
นี่เป็นโพสต์เดียวที่สาธารณชนสามารถเข้าถึงได้บนทั้งเว็บเพื่อรวมวลี "Univariate Temporal Event Detection"! แหล่งที่มาของคำนี้คืออะไร?
whuber

ขออภัยหากเกิดความสับสน การตรวจจับเหตุการณ์เป็นคำทั่วไปและบางครั้งก็ใช้ชั่วคราว Univariate ไม่ได้ใช้กันทั่วไปเนื่องจากวิธีการมักจะหลายตัวแปร แต่มันเป็นกรณีพิเศษของเขา
user1669710

1
แก้ไขคำตอบเพื่อรวมความคิดเห็นของคุณ @whuber
user1669710

@ ser1669710 ขอบคุณ นี่คือสิ่งที่ฉันกำลังมองหา ดูเหมือนว่าค่าเฉลี่ยเคลื่อนที่ไม่สามารถแก้ปัญหาของฉันได้ ฉันต้องดูโมเดลที่ซับซ้อนกว่านี้
user2230101

ฉันต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการตรวจจับเหตุการณ์ทางโลกนี้ สไลด์ที่คุณโพสต์นั้นดี แต่ฉันสงสัยว่าถ้าคุณมีลิงค์ไปยังกระดาษตรวจสอบที่อธิบายฟิลด์อย่างเป็นทางการอีกเล็กน้อยหรือไม่?
aaragon

1

Ji={0x<xi1xxi
x1<x2<<xmJiJaprilJdecemberxi

J1J2x1x2


1
PS - @ user1669710 และฉันโพสต์คำตอบพร้อมกัน ฉันโหวตให้คนนั้นเพราะเห็นได้ชัดว่าเป็นการวิจัยที่ดีกว่า แต่ฉันจะออกจากที่นี่เพราะมันเป็นทางเลือกที่ใช้งานได้และใช้งานง่าย
Russ Lenth

1
เนื่องจากใช้การถดถอยแบบขั้นตอนและใช้ตัวแปรตัวเลือกหลายตัวขั้นตอนนี้จึงดูน่าสงสัย มีการศึกษาที่ไหนและมีคุณสมบัติอะไรบ้าง? มันเปรียบเทียบกับวิธีการเปลี่ยนคะแนนอื่น ๆ ได้อย่างไร?
whuber

@whuber ประเด็นของฉันอย่างแน่นอน นั่นเป็นเหตุผลที่ฉันโหวตให้คำตอบอื่น มันจะไม่เปรียบเทียบที่ดีเกินไปหากคุณมีชุดค่าการเปลี่ยนแปลงที่ละเอียดมาก และมันอาจไม่ได้เปรียบเทียบสิ่งนั้นด้วยความโปรดปราน ฉันแค่เอามันออกมาเป็นวิธีการเฉพาะกิจและฉันคิดว่าฉันนำเสนอเป็นเช่นนี้ แต่ฉันคิดว่าวิธีเช่นนี้สัญญาว่าจะเป็นวิธีที่ดีในการรับค่าเริ่มต้นสำหรับวิธีการไม่เชิงเส้น
Russ Lenth

คิดรองรับบางส่วนของวิธีการที่มีประสิทธิภาพมากขึ้น changepoint ฉันได้พบ แต่การใช้ของการถดถอยแบบขั้นตอนในหมวดโดยเฉพาะอย่างยิ่งผมสงสัย (แม้ว่าผมไม่แน่ใจ) ว่าวิธีนี้อาจล้มเหลวในการผลิตแม้จุดเริ่มต้นที่เหมาะสมสำหรับวิธีการอื่น ๆ ที่จะปรับปรุง นั่นคือเหตุผลที่ฉันสงสัยว่ามันได้รับการศึกษาแล้วหรือยัง
whuber

ฉันคิดว่าจะมีปัญหาเล็กน้อยในการเลือกชุดย่อยทั้งหมดตราบใดที่มีจำนวนการกระโดดที่ระบุจริง ๆ (พูดสองครั้ง) เนื่องจากเราพบการกระโดดสองครั้งที่อธิบายข้อมูลได้ดีที่สุด วิธีการเลือกอื่นอาจเป็นปัญหาเช่นเดียวกับที่พวกเขาอยู่ในสถานการณ์อื่น ๆ ฉันคิดว่ามันขึ้นอยู่กับความสำคัญของการได้รับคำตอบที่ดีที่สุดกับคำตอบที่ดีเมื่อเทียบกับคำตอบอย่างรวดเร็ว ไม่ใช่ว่าทุกปัญหาจะเหมือนกันหรือเป็นลูกค้าทั้งหมด คำตอบที่ดีที่สุดในโลกคือความล้มเหลวที่สุดหากคุณไม่สามารถอธิบายได้
Russ Lenth

1

มีปัญหาที่เกี่ยวข้องกับการแบ่งลำดับหรือลำดับเป็นคาถาที่มีค่าคงที่ในอุดมคติ ดูฉันจะจัดกลุ่มข้อมูลตัวเลขเป็น "วงเล็บเหลี่ยม" แบบธรรมชาติได้อย่างไร (เช่นรายได้)

มันไม่ใช่ปัญหาเดียวกับคำถามที่ไม่ได้ยกเว้นคาถาที่มีการดริฟท์ช้าในทิศทางใด ๆ หรือทุกทิศทาง แต่ไม่มีการเปลี่ยนแปลงอย่างกะทันหัน

คำตอบที่ตรงกว่าคือบอกว่าเรากำลังมองหาการกระโดดครั้งใหญ่ดังนั้นปัญหาที่แท้จริงเพียงอย่างเดียวคือการกำหนดการกระโดด ความคิดแรกนั้นเป็นเพียงการดูความแตกต่างแรกระหว่างค่าใกล้เคียง ยังไม่ชัดเจนว่าคุณต้องปรับแต่งเสียงนั้นก่อนเพราะราวกับว่าการกระโดดไม่สามารถแยกความแตกต่างจากเสียงที่แตกต่างได้ ในทางกลับกันผู้ถามต้องการให้มีการเปลี่ยนแปลงอย่างกระทันหันโดยรวมถึงการอาละวาดและการเปลี่ยนแปลงแบบก้าวดังนั้นเกณฑ์บางอย่างเช่นความแปรปรวนหรือช่วงในหน้าต่างที่มีความยาวคงที่ดูเหมือนจะถูกเรียก


1

พื้นที่ของสถิติที่คุณกำลังมองหาคือการวิเคราะห์จุดเปลี่ยน มีเว็บไซต์ที่นี่ที่จะให้ภาพรวมของพื้นที่และยังมีหน้าสำหรับซอฟต์แวร์

หากคุณเป็นRผู้ใช้ฉันขอแนะนำchangepointแพ็คเกจสำหรับการเปลี่ยนแปลงค่าเฉลี่ยและstrucchangeแพ็คเกจสำหรับการเปลี่ยนแปลงในการถดถอย หากคุณต้องการเป็นแบบเบย์bcpแพคเกจก็ดีเช่นกัน

โดยทั่วไปคุณต้องเลือกเกณฑ์ที่ระบุถึงความแข็งแกร่งของการเปลี่ยนแปลงที่คุณกำลังมองหา แน่นอนว่ามีตัวเลือกเกณฑ์ที่ผู้คนให้การสนับสนุนในบางสถานการณ์และคุณสามารถใช้ระดับความเชื่อมั่นแบบซีมโทติคหรือความร่วมมือในการสร้างความมั่นใจเช่นกัน


1
OP ระบุสองตัวอย่างซึ่งหนึ่งในนั้นฉันจะเรียกขั้นตอนและอีกทางเลือกหนึ่งถึงแม้ว่าจะมีขอบเขตสำหรับการโต้เถียงเกี่ยวกับคำ ดูคำตอบของฉันที่นี่ด้วย วิธีการเหล่านี้รับมือกับทางลาดอย่างไร พวกเขามีรูปแบบโดยปริยายหรือชัดเจนของการเปลี่ยนแปลงก้าว?
Nick Cox

ขอบคุณสำหรับคำถามของนิค โดยทั่วไปแล้วจะขึ้นอยู่กับระยะทางลาด หากเป็นทางลาดสั้น ๆ จะถือว่าเป็นการเปลี่ยนแปลง 1 หากทางลาดนานกว่านั้นบ่อยครั้งที่วิธีการเปลี่ยนคะแนนจะระบุการเปลี่ยนแปลง 2 ครั้งโดย 1 เมื่อเริ่มเล่นทางลาดและ 1 สิ้นสุด แน่นอนว่าสิ่งนี้ขึ้นอยู่กับรุ่นพื้นฐานที่คุณสมมติ
adunaic

1

ปัญหาการอนุมานนี้มีชื่อหลายชื่อรวมถึงจุดเปลี่ยน, จุดเปลี่ยน, จุดแตกหัก, การถดถอยเส้นแตก, การถดถอยแบบแท่งหัก, การถดถอยแบบเส้นตรง, การถดถอยเชิงเส้นแบบชิ้นเดียว, การถดถอยเชิงเส้นแบบท้องถิ่น, การถดถอยเชิงเส้นแบบแบ่งส่วน

นี่คือภาพรวมของแพคเกจจุดเปลี่ยนที่มีข้อดี / ข้อเสียและตัวอย่างการทำงาน หากคุณทราบจำนวนการเปลี่ยนแปลงคะแนนเบื้องต้นให้ตรวจสอบmcpแพ็คเกจ ก่อนอื่นเรามาจำลองข้อมูล:

df = data.frame(x = seq(1, 12, by = 0.1))
df$y = c(rnorm(21, 0, 5), rnorm(80, 180, 5), rnorm(10, 20, 5))

สำหรับปัญหาแรกของคุณมันเป็นสามส่วนเท่านั้น:

model = list(
  y ~ 1,  # Intercept
  ~ 1,  # etc...
  ~ 1
)
library(mcp)
fit = mcp(model, df, par_x = "x")

เราสามารถพล็อตผลที่ได้:

plot(fit)

ป้อนคำอธิบายรูปภาพที่นี่

ที่นี่จุดเปลี่ยนแปลงนั้นถูกกำหนดไว้อย่างดี (แคบ) มาสรุปความเหมาะสมเพื่อดูตำแหน่งที่สรุป ( cp_1และcp_2):

summary(fit)

Family: gaussian(link = 'identity')
Iterations: 9000 from 3 chains.
Segments:
  1: y ~ 1
  2: y ~ 1 ~ 1
  3: y ~ 1 ~ 1

Population-level parameters:
    name   mean lower upper Rhat n.eff
    cp_1   3.05   3.0   3.1    1  6445
    cp_2  11.05  11.0  11.1    1  6401
   int_1   0.14  -1.9   2.1    1  5979
   int_2 179.86 178.8 180.9    1  6659
   int_3  22.76  19.8  25.5    1  5906
 sigma_1   4.68   4.1   5.3    1  5282

คุณสามารถทำแบบจำลองที่มีความซับซ้อนมากขึ้นด้วยmcpรวมทั้งการสร้างแบบจำลอง autoregression ชับสั่ง (มีประโยชน์สำหรับอนุกรมเวลา) ฯลฯ Disclaimer: mcpผมพัฒนาของ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.