Memahami produktivitas atau pengeluaran dari waktu ke waktu tanpa menjadi korban dari gangguan stokastik


8

Tolong bantu saya di sini. Mungkin bahkan sebelum memberi saya jawaban, Anda mungkin perlu membantu saya mengajukan pertanyaan. Saya tidak pernah belajar tentang analisis deret waktu dan tidak tahu apakah itu memang yang saya butuhkan. Saya tidak pernah belajar tentang waktu yang dihaluskan rata-rata dan tidak tahu apakah itu memang yang saya butuhkan. Latar belakang statistik saya: Saya memiliki 12 sks dalam biostatistik (regresi linier berganda, regresi logistik berganda, analisis survival, anova multi-faktorial tetapi tidak pernah mengulangi pengukuran anova).

Jadi tolong lihat skenario saya di bawah ini. Apa kata kunci yang harus saya cari dan dapatkah Anda menyarankan sumber daya untuk mempelajari apa yang perlu saya pelajari?

Saya ingin melihat beberapa set data yang berbeda untuk tujuan yang sama sekali berbeda tetapi yang umum bagi mereka semua adalah bahwa ada tanggal sebagai satu variabel. Jadi beberapa contoh muncul dalam pikiran: produktivitas klinis dari waktu ke waktu (seperti dalam berapa banyak operasi atau berapa banyak kunjungan kantor) atau tagihan listrik dari waktu ke waktu (seperti dalam uang yang dibayarkan ke perusahaan listrik per bulan).

Untuk kedua hal di atas, cara universal yang paling dekat untuk melakukannya adalah dengan membuat spreadsheet bulan atau kuartal dalam satu kolom dan di kolom lainnya akan menjadi sesuatu seperti pembayaran listrik atau jumlah pasien yang terlihat di klinik. Namun, penghitungan per bulan menyebabkan banyak kebisingan yang tidak memiliki arti. Misalnya, jika saya biasanya membayar tagihan listrik pada tanggal 28 setiap bulan tetapi pada satu kesempatan saya lupa dan jadi saya hanya membayarnya 5 hari kemudian pada tanggal 3 bulan berikutnya maka satu bulan akan muncul seolah-olah tidak ada biaya nol dan bulan depan akan menunjukkan biaya yang sangat besar. Karena seseorang memiliki tanggal pembayaran aktual mengapa seseorang dengan sengaja membuang data yang sangat terperinci dengan memasukkannya ke dalam pengeluaran berdasarkan bulan kalender.

Demikian pula jika saya berada di luar kota selama 6 hari di sebuah konferensi maka bulan itu akan tampak sangat tidak produktif dan jika 6 hari itu jatuh menjelang akhir bulan, bulan berikutnya akan sibuk seperti biasanya karena akan ada daftar tunggu keseluruhan orang yang ingin melihat saya tetapi harus menunggu sampai saya kembali.

Maka tentu saja ada variasi musiman yang jelas. Pendingin udara menggunakan banyak listrik sehingga jelas seseorang harus menyesuaikan dengan panas musim panas. Miliaran anak dirujuk kepada saya untuk otitis media akut berulang di musim dingin dan hampir tidak ada pada musim panas dan awal musim gugur. Tidak ada anak usia sekolah yang dijadwalkan untuk operasi elektif dalam 6 minggu pertama sekolah kembali setelah liburan musim panas yang panjang. Musiman hanyalah satu variabel independen yang memengaruhi variabel dependen. Harus ada variabel independen lainnya yang beberapa di antaranya dapat ditebak dan yang lainnya tidak diketahui.

Sejumlah besar masalah yang berbeda muncul ketika melihat pendaftaran dalam studi klinis yang sudah berlangsung lama.

Cabang statistik apa yang memungkinkan kita melihat ini dari waktu ke waktu dengan hanya melihat peristiwa dan tanggal aktualnya tetapi tanpa membuat kotak buatan (bulan / kuartal / tahun) yang tidak benar-benar ada.

Saya berpikir untuk menghitung rata-rata tertimbang untuk setiap acara. Misalnya jumlah pasien yang terlihat minggu ini sama dengan 0,5 * nr yang terlihat minggu ini + 0,25 * nr yang terlihat minggu lalu + 0,25 * nr yang terlihat minggu depan.

Saya ingin belajar lebih banyak tentang ini. Kata kunci apa yang harus saya cari?


1
Petunjuk: menjadi lebih ringkas mungkin akan membantu Anda mendapatkan jawaban.

1
Saya sepenuhnya setuju dengan Anda. Pertanyaan saya panjang dan mengoceh tapi itu masalah saya. Saya tidak benar-benar tahu apa pertanyaan saya. Bisakah kamu membantuku?
Farrel

pertanyaan yang sangat bagus (entah kenapa saya baru saja melihatnya). +1.
user603

Jawaban:


1

Saya akan mulai dengan filter deret waktu yang kuat (yaitu median waktu yang bervariasi) karena ini lebih sederhana dan intuitif.

Pada dasarnya, filter waktu yang kuat adalah untuk rangkaian waktu yang lebih baik dengan median rata-rata; ringkasan mengukur (dalam hal ini waktu yang bervariasi) yang tidak sensitif terhadap pengamatan 'kabel' selama mereka tidak mewakili mayoritas data. Untuk ringkasan, lihat di sini .

Jika Anda membutuhkan smoothers yang lebih canggih (yaitu yang non linier), Anda dapat melakukannya dengan penyaringan Kalman yang kuat (meskipun ini membutuhkan tingkat kecanggihan matematika yang sedikit lebih tinggi)

Dokumen ini berisi contoh berikut (kode untuk dijalankan di bawah R , perangkat lunak stat open source):

library(robfilter)
data(Nile)
nile <- as.numeric(Nile)
obj <- wrm.filter(nile, width=11)
plot(obj)

di mana deret waktu asli berwarna hitam dan versi yang difilter (difilter dengan median berulang) ditempatkan berlebih-lebihan dalam warna merah. Dokumen terakhir berisi sejumlah besar referensi ke kertas dan buku. Jenis filter lain diterapkan dalam paket, tetapi median yang diulang adalah yang sangat sederhana.


apakah Anda memiliki url yang dapat Anda tunjukkan pada saya. Saya belum pernah melakukan analisis deret waktu dalam hidup saya. Tapi sepertinya inilah yang harus saya pelajari sendiri. Apakah ada contoh yang berfungsi yang dapat saya lihat yang menggunakan filter deret waktu?
Farrel

@farel:> jika Anda mengklik kata-kata biru, Anda akan diarahkan ke situs web yang sebenarnya. Dokumen terakhir khususnya berisi contoh latihan (diulang dalam versi tulisan saya yang sudah diedit).
user603

1

Solusi sederhana yang tidak memerlukan akuisisi pengetahuan khusus adalah dengan menggunakan diagram kontrol . Mereka sangat mudah dibuat dan membuatnya mudah untuk mengetahui variasi penyebab khusus (seperti ketika Anda berada di luar kota) dari variasi penyebab umum (seperti ketika Anda memiliki bulan dengan produktivitas rendah yang sebenarnya), yang tampaknya merupakan jenis informasi yang Anda inginkan.

Mereka juga menyimpan data. Karena Anda mengatakan Anda akan menggunakan bagan untuk berbagai tujuan, saya sarankan agar tidak melakukan transformasi apa pun dalam data.

Inilah pengantar yang lembut . Jika Anda memutuskan bahwa Anda suka diagram kendali, Anda mungkin ingin masuk lebih dalam ke subjek. Manfaat untuk bisnis Anda akan sangat besar. Peta kendali terkenal sebagai kontributor utama ledakan ekonomi Jepang pasca-perang .

Bahkan ada paket R .


1

Saya telah mendengar tentang fungsi 'gerbong berbasis waktu' yang mungkin memecahkan masalah Anda. Jumlah gerbong berdasarkan 'ukuran jendela' berdasarkan waktuΔt didefinisikan pada waktu t menjadi jumlah dari semua nilai di antara tΔt dan t. Ini akan tunduk pada diskontinuitas yang Anda mungkin atau mungkin tidak inginkan. Jika Anda ingin nilai yang lebih lama diturunkan, Anda dapat menggunakan rata-rata bergerak sederhana atau eksponensial dalam jendela berbasis waktu Anda.

edit:

Saya menafsirkan pertanyaan sebagai berikut: misalkan beberapa peristiwa terjadi pada waktu-waktu tertentu ti dengan besaran xi. (sebagai contoh,xi mungkin jumlah tagihan yang dibayarkan.) Temukan beberapa fungsi f(t)yang memperkirakan jumlah besarnya xi untuk kali "dekat" t. Untuk salah satu contoh yang diajukan oleh OP,f(t) akan mewakili "berapa banyak orang membayar listrik" sekitar waktu t.

Mirip dengan masalah ini adalah bahwa memperkirakan nilai "rata-rata" di sekitar waktu t. Misalnya: regresi , interpolasi (biasanya tidak diterapkan pada data bising), dan penyaringan . Anda bisa menghabiskan seumur hidup mempelajari hanya satu dari tiga masalah ini.

Masalah yang tampaknya tidak terkait, statistik di alam, adalah Estimasi Kepadatan . Di sini tujuannya adalah, diberikan pengamatan besarnyayi dihasilkan oleh beberapa proses, untuk memperkirakan, secara kasar, probabilitas dari proses itu menghasilkan suatu peristiwa besar y. Salah satu pendekatan untuk estimasi kepadatan adalah melalui fungsi kernel . Saran saya adalah menyalahgunakan pendekatan kernel untuk masalah ini.

Membiarkan w(t) menjadi fungsi sedemikian rupa w(t)0 untuk semua t, w(0)=1 (kernel biasa tidak semuanya berbagi properti ini), dan w(t)0. Membiarkanh menjadi bandwidth , yang mengontrol seberapa besar pengaruh masing-masing titik data. Data yang diberikanti,xi, tentukan jumlah perkiraan dengan

f(t)=i=1nxiw(|tti|/h).
Beberapa kemungkinan nilai fungsi w(t) adalah sebagai berikut:
  • kernel yang seragam (atau 'gerbong'): w(t)=1 untuk t1 dan 0 jika tidak;
  • kernel triangular: w(t)=max(0,1t);
  • kernel kuadratik: ;w(t)=max(0,1t2)
  • kernel tricube: ;w(t)=max(0,(1t2)3)
  • kernel Gaussian: ;w(t)=exp(t2/2)

Saya menyebut kernel ini, tetapi mereka dimatikan oleh faktor konstan di sana-sini; lihat juga daftar kernel yang lengkap .

Beberapa contoh kode di Matlab:

%%kernels
ker0 = @(t)(max(0,ceil(1-t))); %uniform
ker1 = @(t)(max(0,1-t)); %triangular
ker2 = @(t)(max(0,1-t.^2)); %quadratic
ker3 = @(t)(max(0,(1-t.^2).^3)); %tricube
ker4 = @(t)(exp(-0.5 * t.^2)); %Gaussian

%%compute f(t) given x_i,t_i,kernel,h
ff = @(x_i,t_i,t,kerf,h)(sum(x_i .* kerf(abs(t - t_i) / h)));

%%some sample data: irregular electric bills
sdata = [
datenum(2009,12,30),141.73;...
datenum(2010,01,25),100.45;...
datenum(2010,02,23),98.34;...
datenum(2010,03,30),83.92;...
datenum(2010,05,01),56.21;...       %late this month;
datenum(2010,05,22),47.33;...       
datenum(2010,06,14),62.84;...       
datenum(2010,07,30),83.34;...       
datenum(2010,09,10),93.34;...       %really late this month
datenum(2010,09,22),78.34;...
datenum(2010,10,22),93.25;...
datenum(2010,11,14),83.39;...       %early this month;
datenum(2010,12,30),133.82];

%%some irregular observation times at which to sample the filtered version;
t_obs  = sort(datenum(2009,12,01) + 400 * rand(1,400));

t_i = sdata(:,1);x_i = sdata(:,2);

%%compute f(t) for each of the kernel functions;
h   = 60;    %bandwidth of 60 days;

fx0 = arrayfun(@(t)(ff(x_i,t_i,t,ker0,h)),t_obs);
fx1 = arrayfun(@(t)(ff(x_i,t_i,t,ker1,h)),t_obs);
fx2 = arrayfun(@(t)(ff(x_i,t_i,t,ker2,h)),t_obs);
fx3 = arrayfun(@(t)(ff(x_i,t_i,t,ker3,h)),t_obs);
fx4 = arrayfun(@(t)(ff(x_i,t_i,t,ker4,0.5*h)),t_obs);   %!!use smaller bandwidth

%%plot them;
lhand = plot(t_i,x_i,'--rs',t_obs,fx0,'m-+',t_obs,fx1,'b-+',t_obs,fx2,'k-+',...
t_obs,fx3,'g-+',t_obs,fx4,'c-+');
set(lhand(1),'MarkerSize',12);
set(lhand(2:end),'MarkerSize',4);
datetick(gca());
legend(lhand,{'data','uniform','triangular','quadratic','tricube','gaussian'});

Plot menunjukkan penggunaan beberapa kernel pada beberapa sampel data tagihan listrik. teks alternatif

Perhatikan bahwa kernel seragam tunduk pada 'stochastic guncangan' yang OP berusaha hindari. Trisula dan kernel Gaussian memberikan perkiraan yang jauh lebih halus. Jika pendekatan ini dapat diterima, seseorang hanya harus memilih kernel dan bandwidth (secara umum itu adalah masalah yang sulit, tetapi diberi beberapa pengetahuan domain, dan beberapa loop kode-tes-recode, seharusnya tidak terlalu sulit.)


Shabbychef:> saya pikir Farrel secara khusus menyebutkan argumen terhadap pendekatan ini dalam pertanyaannya.
user603

Pertanyaannya agak ambigu; takeaway saya adalah bahwa OP sedang mencari 'kata kunci'.
shabbychef

Saya mencari google boxcar berbasis waktu dan datang dengan sangat sedikit. Bisakah Anda mengarahkan kami ke contoh yang berhasil?
Farrel

1

Buzzwords: interpolasi, resampling, smoothing.

Masalah Anda mirip dengan yang sering dijumpai dalam demografi: orang mungkin memiliki jumlah sensus yang dipecah menjadi interval usia, misalnya, dan interval tersebut tidak selalu dengan lebar konstan. Anda ingin menginterpolasi distribusi berdasarkan usia. Apa yang dibagikan ini dengan masalah Anda, selain dari lebar variabel (= interval waktu variabel), adalah bahwa data cenderung non-negatif. Selain itu, banyak kumpulan data semacam itu dapat memiliki derau, tetapi memiliki bentuk korelasi negatif tertentu: hitungan yang muncul dalam satu nampan tidak akan muncul di nampan tetangga, tetapi mungkin telah ditugaskan ke nampan yang salah. Misalnya, orang yang lebih tua cenderung membulatkan umur mereka hingga lima tahun terdekat. Mereka tidak diabaikan tetapi mereka mungkin berkontribusi pada kelompok umur yang salah. Namun, pada umumnya, data lengkap dan dapat diandalkan. Dalam hal analogi ini kita sedang berbicara tentang sensus penuh; dalam kumpulan data Anda, Anda memiliki tagihan listrik aktual, pendaftaran aktual, dan sebagainya. Jadi itu hanya masalah membagi data secara wajar ke serangkaian interval yang berguna untuk analisis lebih lanjut (seperti waktu yang sama-sama spasi untuk analisis deret waktu): di situlah interpolasi dan resampling terlibat.

Ada banyak teknik interpolasi. Yang paling umum dalam demografi dikembangkan untuk perhitungan sederhana dan didasarkan pada polinomial splines. Banyak yang berbagi trik yang perlu diketahui, terlepas dari bagaimana Anda berencana untuk memproses data Anda: jangan mencoba untuk menginterpolasi data mentah; sebagai gantinya, interpolasi jumlah kumulatif mereka. Yang terakhir akan meningkat secara monoton karena non-negatif dari nilai-nilai asli, dan karena itu akan cenderung relatif lancar. Inilah mengapa spin polinom dapat bekerja sama sekali. Keuntungan lain dari pendekatan ini adalah bahwa meskipun kecocokan dapat menyimpang dari poin data (sedikit, satu harapan), secara keseluruhan itu benar mereproduksi total, sehingga tidak ada yang hilang atau diperoleh. Tentu saja, setelah menyesuaikan nilai kumulatif (sebagai fungsi waktu atau usia), Anda mengambil perbedaan pertama untuk memperkirakan total dalam setiap bin yang Anda suka.

Contoh paling sederhana dari pendekatan ini adalah spline linier: cukup sambungkan titik berurutan pada plot kumulatif vs kumulatif oleh segmen garis. Perkirakan hitungan dalam setiap interval waktu dengan membacakan nilai dan dari kurva pada dan masing-masing dan menggunakan . Splines yang lebih baik (kubik di beberapa area; quintic di banyak aplikasi demografis) terkadang meningkatkan perkiraan. Ini setara dengan intuisi Anda untuk menimbang data dan memberikan interpretasi grafis yang bagus.xt[t0,t1]x0x1t0t1x1x0


Terlihat menarik. Apakah Anda tahu implementasi R sederhana?
Farrel

Dear @whuber Saya benar-benar ingin menerapkan ini dalam R jadi saya telah memposting pertanyaan di stackoverflow. Anda mungkin tertarik. Jika Anda menggunakan RI akan sangat senang jika Anda menjawabnya, Anda mungkin hanya ingin duduk dan memukul
Farrel
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.