Sunday, 3 December 2017

الانتقال من المتوسط وظيفة في و ساس


يوضح نموذج التعليمة البرمجية في علامة التبويب "التعليمات البرمجية الكاملة" كيفية حساب المتوسط ​​المتحرك للمتغير من خلال مجموعة بيانات كاملة، على الملاحظات N الماضية في مجموعة بيانات، أو على الملاحظات N الماضية ضمن مجموعة بي. يتم توفير هذه الملفات عينة وأمثلة التعليمات البرمجية من قبل شركة ساس معهد كما هو دون أي ضمان من أي نوع، سواء صريحة أو ضمنية، بما في ذلك سبيل المثال لا الحصر الضمانات الضمنية من القابلية للتسويق واللياقة لغرض معين. يقر المستلمون ويوافقون على أن معهد ساس لن يكون مسؤولا عن أي أضرار من أي نوع تنشأ عن استخدامها لهذه المواد. وبالإضافة إلى ذلك، سوف معهد ساس تقديم أي دعم للمواد الواردة في هذه الوثيقة. يتم توفير هذه الملفات عينة وأمثلة التعليمات البرمجية من قبل شركة ساس معهد كما هو دون أي ضمان من أي نوع، سواء صريحة أو ضمنية، بما في ذلك سبيل المثال لا الحصر الضمانات الضمنية من القابلية للتسويق واللياقة لغرض معين. يقر المستلمون ويوافقون على أن معهد ساس لن يكون مسؤولا عن أي أضرار من أي نوع تنشأ عن استخدامها لهذه المواد. وبالإضافة إلى ذلك، سوف معهد ساس تقديم أي دعم للمواد الواردة في هذه الوثيقة. احسب المتوسط ​​المتحرك للمتغير من خلال مجموعة بيانات كاملة أو على ملاحظات N الأخيرة في مجموعة بيانات أو على ملاحظات N الأخيرة داخل مجموعة فرعية. أنا مبتدئ ساس و إم غريبة إذا كان يمكن القيام بالمهمة التالية كثيرا أكثر بساطة كما هو حاليا في رأسي. لدي البيانات الوصفية (المبسطة) التالية في جدول اسمه وسيرداتموني: المستخدم - التاريخ - المال مع مختلف المستخدمين والتواريخ لكل يوم تقويم (على مدى السنوات الأربع الماضية). يتم ترتيب البيانات من قبل المستخدم أسك وتاريخ أسك، تبدو البيانات عينة مثل هذا: أريد الآن لحساب المتوسط ​​المتحرك لمدة خمسة أيام للمال. بدأت مع أباتش شعبية جدا مع الدالة (مثل): مثل كما ترون، تحدث المشكلة مع هذا الأسلوب إذا كان هناك إذا كانت الخطوة البيانات إلى مستخدم جديد. سوف أرون الحصول على بعض القيم المتخلفة من آنا التي بالطبع لا ينبغي أن يحدث. الآن سؤالي: أنا متأكد من أنك يمكن التعامل مع مفتاح المستخدم بإضافة بعض الحقول الإضافية مثل لاجدوسر وإعادة تعيين N، سوم ومتوسط ​​المتغيرات إذا لاحظت مثل هذا التبديل ولكن: هل يمكن أن يتم ذلك بطريقة أسهل ربما باستخدام حسب البند بأي شكل من الأشكال شكرا لأفكارك ومساعدة أعتقد أن أسهل طريقة لاستخدام بروك توسيع: وكما ذكر في تعليق جونز، من المهم أن نتذكر حول القيم المفقودة (وبداية ونهاية الملاحظات كذلك). إيف وأضاف الخيار سيتمس إلى التعليمات البرمجية، كما جعلت من الواضح أنك تريد زيروفي القيم المفقودة، لا تجاهلها (السلوك موفاف الافتراضي). وإذا كنت ترغب في استبعاد أول 4 ملاحظات لكل مستخدم (نظرا لأنها لا تملك ما يكفي من التاريخ ما قبل التاريخ لحساب المتوسط ​​المتحرك 5)، يمكنك استخدام الخيار تريمليفت 4 داخل ترانسفورموت (). الرد أفاتار ديك 3 13 في 15: 29Sas فونكتيونسكومبوتينغ A موفينغ أفيراج كومبوتينغ a موفينغ أفيراج يعد إجراء العمليات الحسابية بين الملاحظات في خطوة داتا أكثر صعوبة بكثير من معالجة الملاحظات. على سبيل المثال، لحساب متوسط ​​X1 و X2 و X3، ضمن ملاحظة واحدة، سوف تكتب: مينكسمان (أوف X1-X3) أو مينكس (X1X2X3) 3 ومع ذلك، فإن حساب متوسط ​​X للمراقبة الحالية و اثنين من الملاحظات السابقة يعرض أكثر من تشالنجيمدشويثوت وظيفة لاغ، وهذا هو. وكثيرا ما يحسب الاقتصاديون تحركا متحركا نحو الاتجاهات في بياناتهم. فعلى سبيل المثال، يمكن أن تتغير مؤشرات الأسهم مثل مؤشر داو جونز بشكل كبير من شهر لآخر. وللاطلاع على الاتجاه في هذا المؤشر، يقوم الاقتصاديون بتخطيط متوسط ​​المؤشر للأشهر الثلاثة الماضية لكل شهر من الفائدة. هذا ينعم البيانات بحيث الاتجاهات على المدى الطويل أكثر وضوحا. في هذا المثال، يمكنك استخدام وظيفة لاغ لحساب متوسط ​​متحرك. ترجع LAGn قيمة التنفيذ السابق نث لوظيفة لاغ. وهذا هو، في كل مرة يتم تنفيذ وظيفة لاغ، فإنه ريممبرث القيمة الحالية للحجة، والتي ستكون القيمة المتخلفة في المرة القادمة ينفذ الدالة. مثال سيجعله واضحا. هنا هو رمز لحساب المتوسط ​​المتحرك الذي تم وصفه للتو: المتغير X1 هو قيمة X من الملاحظة السابقة X2 هي قيمة X من الملاحظة قبل أن تستخدم الدالة مين لحساب متوسط ​​(متوسط) ثلاث قيم. للتكرار الأول لخطوة البيانات، لاغ (X) و LAG2 (X) مفقودة لأنه لم يكن هناك تنفيذ سابق لوظيفة لاغ. بالنسبة للتكرار الثاني لخطوة البيانات، يتم تعيين قيمة X (لاغ) قيمة X للمراقبة 1، و LAG2 (X) مفقود. وأخيرا، بالنسبة للثالث من خلال التكرار الأخير لخطوة داتا، لاغ (X) و يتم تعيين LAG2 (X) القيم. في هذا المثال، لا تقوم بإخراج ملاحظة في مجموعة البيانات الجديدة إلا إذا كان أفي يستند في الواقع إلى ثلاث قيم. المتغير N مفيد لاختبار هذه الحالة. يمكنك إخراج ملاحظة للثالث من خلال التكرار الأخير من خطوة البيانات فقط. تنبيه خاص عند استخدام وظيفة لاغ تنبيه لا تقم بتنفيذ وظيفة لاغ مشروط إلا إذا كنت تفعل عمدا شيء صعب جدا وتعرف حقا ما تقومون به. لإثبات وجهة نظرنا، انظر إلى التعليمات البرمجية التالية: ما هي قيم Y الإجابة: مفقود، مفقود، مفقود، 8، في عداد المفقودين). إف بيان تعليمات النظام لتنفيذ وظيفة لاغ فقط عندما X أكبر من أو يساوي 5. وبالتالي يتم تنفيذ أول مرة عند قراءة الملاحظة الثانية (X8 ).في المرة القادمة ينفذ الدالة لاغ (الملاحظة رقم 4، X9)، قيمة لاغ (X) هو 8، وقيمة X في المرة الأخيرة تم تنفيذ وظيفة لاغ. هل حصلت على هذه النقطة إن لم يكن، لا تأكل. هذا ليس من السهل الاشياء. في ​​هذه الوظيفة، وأظهر خدعة للقيام الحساب المتوسط ​​المتحرك (يمكن أن تمتد إلى عمليات أخرى تتطلب وظائف نافذة) وهذا هو بسرعة فائقة. في كثير من الأحيان، يحتاج محللون ساس لإجراء حساب متوسط ​​متحرك وهناك عدة خيارات حسب ترتيب التفضيل: 1. بروك توسيع 2. داتا ستيب 3. بروك سكل ولكن العديد من المواقع قد لا مرخصة ساسيتس لاستخدام بروك توسيع والقيام المتوسط ​​المتحرك في داتا يتطلب ستيب بعض الترميز وهو عرضة للخطأ. بروك سكل هو خيار طبيعي للمبرمجين المبتدئين وفي العديد من الحالات التجارية الحل الوحيد، ولكن SAS39s بروك سكل يفتقر وظائف النوافذ التي تتوفر في العديد من دبس لتسهيل المتوسط ​​المتحرك الحساب. تقنية واحدة الناس عادة ما تستخدم كروس جوين، وهو مكلفة للغاية وليس حلا قابلا للتطبيق حتى متوسطة الحجم مجموعة البيانات. في هذا المنصب، وأظهر خدعة للقيام حساب المتوسط ​​المتحرك (يمكن أن تمتد إلى عمليات أخرى تتطلب وظائف نافذة) وهذا هو بسرعة فائقة. النظر في أبسط حساب المتوسط ​​المتحرك حيث يتم تضمين الملاحظات K زائدة في الحساب، وهي ما (K)، وهنا نضع K5. نولد أولا 20 عينة من عينات أوبس، حيث يتم استخدام المعرف المتغير للنافذة و X المتغير لاستخدامه في حساب ما، ثم نطبق معيار كروس جوين لدراسة أول البيانات الناتجة، غير مجمعة، فقط لفهم كيفية الاستفادة من بنية البيانات. من مجموعة البيانات الناتجة، فإنه من الصعب العثور على فكرة، والآن let39s الفرز من قبل كوتيدكوت العمود في هذه المجموعة من البيانات: من هذه البيانات المصنفة، فمن الواضح أننا فعلا don39t ديك إلى كروس الانضمام إلى مجموعة البيانات الأصلية بأكملها، ولكن بدلا من ذلك، ونحن يمكن أن تولد مجموعة البيانات كوبراتيونكوت التي تحتوي على قيمة الفرق، والسماح لمجموعة البيانات الأصلية كروس الانضمام مع هذا أصغر بكثير مجموعة البيانات كوبيراتيونكوت، وجميع البيانات التي نحتاج لاستخدامها لحساب ما سيكون هناك. الآن Let39s القيام بذلك: كروس الانضمام إلى البيانات الأصلية مع البيانات كوبراتيونكوت، فرز حسب (a. idops)، الذي هو في الواقع كوتيد 39 في فرز البيانات مجموعة لاحظ أنه في التعليمات البرمجية أعلاه، فمن الضروري أن يكون الفأس مضاعفة من قبل b. weight بحيث البيانات يمكن أن تكون بين الأوراق، وإلا فإن نفس قيمة X من الجدول الأصلي يكون الإخراج وسيتم فشل حساب ما. ويضيف المتغير الوزن الصريح فعلا في مزيد من المرونة لحساب ما كله. في حين وضعه ليكون 1 لجميع النتائج أوبس في حساب ما بسيط، تعيين أوزان مختلفة سوف تساعد على حل أكثر تعقيدا الحوسبة ما، مثل إعطاء مزيد من الملاحظات أقل وزنا ل ما تلاشى. إذا كانت معلمة K مختلفة في حسابات ما (K) مطلوبة، إلا أن مجموعة بيانات التشغيل تحتاج إلى تحديث والتي هي وظيفة تافهة. الآن قالب التعليمات البرمجية الفعلية لحساب ما (K) سيكون: مع هذه الطريقة الجديدة، فمن المثير للاهتمام لمقارنتها إلى باهظة النفس كروس الانضمام فضلا عن بروك توسيع. على محطة العمل الخاصة بي (إنتل i5 و 3.8 غيغاهرتز، ذاكرة 32GB، 1TB 72K هد)، كروس الانضمام الذاتي هو طويل بشكل محظوظ في وقت التشغيل (إذا كانت البيانات كبيرة) في حين أن الطريقة الجديدة يستخدم فقط 2X الكثير من الوقت كما بروك توسيع، كل من استهلاك الوقت تافهة مقارنة مع النفس الصليب الانضمام. استهلاك الوقت هو مبين أدناه في كوتسيكوندكوت. أدناه يمكن للقراء رمز تشغيل ومقارنة أنفسكم. نشر 10 مايو 2015 من قبل ليانغ زي ساس برمجة لتعدين البيانات

No comments:

Post a Comment