Thursday 6 July 2017

Moving Average Code Sas


Im SAS pemula dan saya penasaran apakah tugas berikut bisa dilakukan jauh lebih sederhana seperti saat ini di kepala saya. Saya memiliki data meta (disederhanakan) berikut di tabel bernama userdatemoney: User - Date - Uang dengan berbagai pengguna dan tanggal untuk setiap hari kalender (selama 4 tahun terakhir). Data yang dipesan oleh User ASC dan Date ASC, data sampel terlihat seperti ini: Saya sekarang ingin menghitung rata-rata pergerakan lima hari untuk Uang. Saya memulai dengan apprach yang cukup populer dengan fungsi lag () seperti ini: seperti yang Anda lihat, masalah dengan metode ini terjadi jika ada langkah data yang masuk ke pengguna baru. Aron akan mendapatkan beberapa nilai tertinggal dari Anna yang tentu saja tidak boleh terjadi. Sekarang pertanyaan saya: Saya cukup yakin Anda dapat menangani pengguna beralih dengan menambahkan beberapa bidang tambahan seperti laggeduser dan dengan mengatur ulang variabel N, Sum dan Mean jika Anda melihat tombol seperti itu tapi: Bisakah ini dilakukan dengan cara yang lebih mudah. ​​Mungkin menggunakan OLEH klausul dengan cara apapun Terima kasih atas ide dan pertolongan Anda. Cara termudah adalah menggunakan PROC EXPAND: Dan seperti yang disebutkan dalam komentar Johns, penting untuk diingat tentang nilai yang hilang (dan tentang pengamatan awal dan akhir juga). Saya telah menambahkan opsi SETMISS ke kode ini, karena Anda menjelaskan bahwa Anda ingin menghapus nilai yang salah, tidak mengabaikannya (perilaku MOVAVE default). Dan jika Anda ingin mengecualikan pertama 4 pengamatan untuk setiap pengguna (karena mereka tidak memiliki cukup pra sejarah untuk menghitung rata-rata bergerak 5), Anda dapat menggunakan opsi TRIMLEFT 4 di dalam TRANSFORMOUT (). Dijawab 3 Des 13 di 15: 29Kode contoh pada tab Kode Penuh mengilustrasikan bagaimana menghitung rata-rata bergerak suatu variabel melalui kumpulan data keseluruhan, selama pengamatan N terakhir dalam kumpulan data, atau selama pengamatan N terakhir dalam OLE - kelompok. Contoh file dan contoh kode ini disediakan oleh SAS Institute Inc. karena tanpa jaminan apapun, baik tersurat maupun tersirat, termasuk namun tidak terbatas pada jaminan tersirat tentang kelayakan jual dan kesesuaian untuk tujuan tertentu. Penerima mengetahui dan menyetujui bahwa Institut SAS tidak bertanggung jawab atas segala kerusakan yang timbul dari penggunaan material ini. Selain itu, SAS Institute tidak akan memberikan dukungan untuk materi yang terkandung di sini. Contoh file dan contoh kode ini disediakan oleh SAS Institute Inc. karena tanpa jaminan apapun, baik tersurat maupun tersirat, termasuk namun tidak terbatas pada jaminan tersirat tentang kelayakan jual dan kesesuaian untuk tujuan tertentu. Penerima mengetahui dan menyetujui bahwa Institut SAS tidak bertanggung jawab atas segala kerusakan yang timbul dari penggunaan material ini. Selain itu, SAS Institute tidak akan memberikan dukungan untuk materi yang terkandung di sini. Hitunglah rata-rata bergerak dari sebuah variabel melalui keseluruhan kumpulan data, selama pengamatan N terakhir dalam kumpulan data, atau pengamatan N terakhir dalam kelompok BY. Beginning di Release 6.08 dari Sistem SAS, PROC EXPAND pada perangkat lunak SASETS dapat dilakukan. Digunakan untuk membuat berbagai transformasi data. Transformasi ini meliputi: lead, lag, weighted dan unweighted moving averages, moving sum, dan jumlah kumulatif, untuk beberapa nama. Banyak transformasi baru ditambahkan pada Release 6.12, termasuk spesifikasi terpisah untuk moving average terpusat dan terbelakang. Transformasi baru ini membuat perlu memodifikasi sintaks untuk beberapa transformasi yang didukung sebelum Release 6.12. Contoh bagaimana menentukan sintaks untuk rata-rata bergerak terpusat dan terbelakang menggunakan Release 6.11 dan yang lebih baru dan Release 6.12 dan yang lebih baru diberikan di bawah ini. PROC EXPAND dapat menghitung rata-rata pergerakan terpusat atau rata-rata bergerak ke belakang. Moving moving average 5-periode dihitung dengan merata-ratakan total 5 nilai berturut-turut dari rangkaian (nilai periode saat ini ditambah dua nilai sebelumnya dan dua nilai segera mengikuti nilai saat ini). Rentang moving average 5 periode dihitung dengan rata-rata nilai periode saat ini dengan nilai dari 4 periode sebelumnya. Sintaks berikut mengilustrasikan bagaimana menggunakan spesifikasi TRANSFORM (MOVAVE n) untuk menghitung rata-rata pergerakan terpusat 5-periode dengan menggunakan Release 6.11 atau yang lebih awal: Untuk menghitung n periodward moving average ke belakang dengan menggunakan Release 6.11 atau lebih awal, gunakan TRANSFORM (MOVAVE N LAG k), di mana k (n-1) 2 jika n aneh atau di mana k (n-2) 2 jika n genap. Sebagai contoh, sintaks berikut mengilustrasikan bagaimana menghitung moving average 5-tingkat ke belakang dengan menggunakan Release 6.11 atau yang lebih awal: Sintaks berikut ini menggambarkan bagaimana menggunakan spesifikasi TRANSFORM (CMOVAVE n) untuk menghitung moving average 5-periode yang berpusat pada Release 6.12 atau Kemudian: Sintaks serupa berikut ini menggambarkan bagaimana menggunakan spesifikasi TRANSFORM (MOVAVE n) untuk menghitung moving average 5-tingkat ke belakang dengan menggunakan Release 6.12 atau yang lebih baru: Untuk informasi lebih lanjut, lihat Transformasi Operasi di bab EXPAND dari Panduan Pengguna SASETS. Jika Anda tidak memiliki akses ke SASETS, Anda dapat menghitung rata-rata bergerak dalam langkah DATA seperti yang digambarkan dalam program contoh ini. Sistem Operasi dan Informasi Pelepasan

No comments:

Post a Comment