Bagaimana mengkarakterisasi perubahan mendadak?

13

Pertanyaan ini mungkin terlalu mendasar. Untuk tren sementara dari suatu data, saya ingin mengetahui titik di mana perubahan "mendadak" terjadi. Sebagai contoh, pada gambar pertama yang ditunjukkan di bawah ini, saya ingin mengetahui titik perubahan menggunakan beberapa metode statistik. Dan saya ingin menerapkan metode seperti itu di beberapa data lain di mana titik perubahannya tidak jelas (seperti gambar ke-2). Jadi, apakah ada metode umum untuk tujuan seperti itu?

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

pengguna2230101
sumber
3
istilah "titik balik" memiliki arti tertentu yang menurut saya tidak berlaku untuk perubahan tingkat yang tiba-tiba (baik naik atau turun). Anda juga menggunakan frasa 'titik perubahan', dan saya pikir itu mungkin pilihan yang lebih baik. Tolong jangan berpikir ini 'terlalu mendasar'; bahkan pertanyaan-pertanyaan mendasar disambut tanpa perlu meminta maaf, dan pertanyaan ini tidak terlalu mendasar.
Glen_b -Reinstate Monica
Terima kasih. Saya telah mengubah 'titik balik' menjadi 'titik perubahan' dalam pertanyaan.
user2230101

Jawaban:

11

Jika pengamatan data deret waktu Anda berkorelasi dengan pengamatan sebelumnya, makalah karya Chen dan Liu (1993) [ 1 ] mungkin menarik bagi Anda. Ini menjelaskan metode untuk mendeteksi pergeseran level dan perubahan sementara dalam kerangka model deret waktu rata-rata bergerak autoregresif.[1]

[1]: Chen, C. dan Liu, LM. (1993),
"Estimasi Bersama Parameter Model dan Efek Outlier dalam Time Series,"
Jurnal Asosiasi Statistik Amerika , 88 : 421, 284-297

javlacalle
sumber
+1 Saya mencoba (tetapi gagal) untuk mengingat cukup tentang makalah ini untuk menemukannya. Itu referensi yang bagus.
Glen_b -Reinstate Monica
6

Masalah dalam Statistik ini disebut sebagai Deteksi Peristiwa Temporal (univariat). Ide paling sederhana adalah dengan menggunakan rata-rata bergerak dan standar deviasi. Setiap bacaan yang "keluar dari" penyimpangan 3-standar (aturan praktis) dianggap sebagai "peristiwa". Tentu saja, ada model yang lebih maju yang menggunakan HMM, atau Regresi. Berikut ini adalah ikhtisar pengantar bidang ini .

pengguna1669710
sumber
5
Ini adalah satu - satunya pos yang dapat diakses secara publik di seluruh Web untuk memasukkan frasa "Deteksi Peristiwa Sementara Univariat"! Apa sumber Anda untuk istilah ini?
whuber
Maaf jika itu membingungkan. Deteksi Peristiwa adalah istilah yang lebih umum, dan Temporal kadang-kadang digunakan secara terpisah. Univariat tidak umum digunakan karena pendekatannya biasanya multivariat, tetapi ini adalah kasus khususnya.
user1669710
1
mengedit jawaban untuk memasukkan komentar Anda @whuber
user1669710
@ ser1669710 Terima kasih. Ini yang saya cari. Sepertinya moving average tidak bisa menyelesaikan masalah saya. Saya perlu melihat model yang lebih rumit.
user2230101
Saya ingin belajar lebih banyak tentang deteksi acara sementara ini. Slide yang Anda poskan bagus, tetapi saya ingin tahu apakah Anda memiliki tautan ke makalah ulasan yang menjelaskan bidang itu sedikit lebih formal?
aaragon
1

Jsaya={0x<xsaya1xxsaya
x1<x2<<xmJsayaJSebuahhalrsayalJdecemberxsaya

J1J2x1x2

Russ Lenth
sumber
1
PS - @ user1669710 dan saya memposting jawaban secara bersamaan. Saya memilih yang itu karena jelas lebih baik diteliti. Tapi saya meninggalkan ini di sini karena ini merupakan alternatif yang berfungsi dan mudah diterapkan.
Russ Lenth
1
Karena menggunakan regresi bertahap dan mempekerjakan banyak variabel kandidat, prosedur ini terlihat mencurigakan. Di mana telah dipelajari dan properti apa yang dimilikinya? Bagaimana cara membandingkannya dengan metode changepoint lainnya ?
Whuber
@whuber, maksud saya tepatnya. Itu sebabnya saya memilih jawaban yang lain. Itu tidak akan membandingkan terlalu baik jika Anda memiliki satu set nilai changepoint yang sangat granular. Dan itu mungkin bahkan tidak membandingkan yang sebaliknya. Saya hanya memadamkannya sebagai metode ad hoc , dan saya pikir saya menyajikannya seperti itu. Tapi saya pikir metode seperti ini menjanjikan cara yang baik untuk mendapatkan nilai awal untuk metode nonlinear.
Russ Lenth
The Ide mendasari beberapa metode changepoint lebih efektif saya telah menemukan, tetapi penggunaan regresi bertahap di merek tertentu saya menduga (meskipun saya tidak yakin) bahwa metode ini bisa gagal bahkan untuk menghasilkan titik awal yang wajar untuk metode lain untuk memperbaiki. Itu sebabnya saya ingin tahu apakah itu sudah dipelajari.
whuber
Saya pikir akan ada sedikit masalah dengan pemilihan semua-himpunan bagian, asalkan benar-benar ada jumlah lompatan tertentu (katakan dua), karena kita akan menemukan dua lompatan yang paling menjelaskan data. Metode seleksi lainnya bisa bermasalah, sama seperti mereka dalam situasi lain. Saya pikir itu tergantung pada seberapa penting mendapatkan jawaban terbaik, versus jawaban yang baik, versus jawaban cepat. Tidak semua masalah sama, tidak semua klien. Jawaban terbaik di dunia adalah kegagalan total jika Anda tidak bisa menjelaskannya.
Russ Lenth
1

Ada masalah terkait dalam membagi seri atau urutan menjadi mantra dengan nilai konstan idealnya. Lihat Bagaimana saya bisa mengelompokkan data numerik ke dalam membentuk "tanda kurung"? (mis. penghasilan)

Ini bukan masalah yang sama seperti pertanyaannya tidak mengecualikan mantra dengan penyimpangan lambat di setiap atau semua arah, tetapi tanpa perubahan mendadak.

Jawaban yang lebih langsung adalah mengatakan bahwa kami mencari lompatan besar, jadi satu-satunya masalah sebenarnya adalah mendefinisikan lompatan. Gagasan pertama adalah hanya untuk melihat perbedaan pertama antara nilai-nilai tetangga. Bahkan tidak jelas bahwa Anda perlu memperbaiki itu dengan menghilangkan kebisingan terlebih dahulu, seolah-olah lompatan tidak dapat dibedakan dari perbedaan kebisingan, mereka pasti tidak dapat tiba-tiba. Di sisi lain, si penanya jelas menginginkan perubahan mendadak untuk memasukkan perubahan yang sama dan melangkah, sehingga beberapa kriteria seperti varians atau rentang dalam jendela dengan panjang tetap tampaknya diperlukan.

Nick Cox
sumber
1

Area statistik yang Anda cari adalah analisis changepoint. Ada situs web di sini yang akan memberi Anda ikhtisar area dan juga memiliki halaman untuk perangkat lunak.

Jika Anda seorang Rpengguna maka saya akan merekomendasikan changepointpaket untuk perubahan dalam mean dan strucchangepaket untuk perubahan dalam regresi. Jika Anda ingin menjadi Bayesian maka bcppaketnya juga bagus.

Secara umum Anda harus memilih ambang yang menunjukkan kekuatan perubahan yang Anda cari. Ada, tentu saja, pilihan ambang batas yang dianjurkan orang dalam situasi tertentu dan Anda dapat menggunakan tingkat kepercayaan asimptotik atau bootstrap untuk mendapatkan kepercayaan diri juga.

aduna
sumber
1
OP mengidentifikasi dua contoh, satu di antaranya saya sebut langkah dan yang lain jalan, meskipun selalu ada ruang untuk bertengkar tentang kata-kata. Lihat juga jawaban saya di sini. Bagaimana metode ini mengatasi landai? Apakah mereka memiliki model perubahan bertahap yang diam-diam atau eksplisit?
Nick Cox
Terima kasih atas pertanyaannya, Nick. Secara umum itu tergantung pada berapa lama jalan itu. Jika jalan pendek maka diperlakukan sebagai 1 perubahan, jika jalan lebih panjang maka sering metode changepoint akan mengidentifikasi 2 perubahan, 1 di awal jalan dan 1 di akhir. Tentunya ini tergantung pada model yang Anda asumsikan.
Adunaic
1

Masalah inferensi ini memiliki banyak nama, termasuk titik perubahan, titik sakelar, titik break, regresi garis putus, regresi tongkat patah, regresi bilinear, regresi linier satu demi satu, regresi linier lokal, regresi tersegmentasi, dan model diskontinuitas.

Berikut ini adalah ikhtisar paket titik perubahan dengan pro / kontra dan contoh yang dikerjakan. Jika Anda tahu jumlah titik perubahan apriori, periksa mcppaketnya. Pertama, mari kita simulasikan data:

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))

Untuk masalah pertama Anda, ini adalah tiga segmen intersep saja:

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

Kami dapat merencanakan fit yang dihasilkan:

plot(fit)

masukkan deskripsi gambar di sini

Di sini, titik perubahan didefinisikan dengan sangat baik (sempit). Mari kita simpulkan kecocokan untuk melihat lokasi yang disimpulkan ( cp_1dan 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

Anda dapat melakukan model yang jauh lebih rumit dengan mcp, termasuk memodelkan autoregresi urutan-N (berguna untuk seri waktu), dll. Penafian: Saya adalah pengembang dari mcp.

Jonas Lindeløv
sumber