Skip to main content

คำนวณ 3 เดือน เฉลี่ยเคลื่อนที่ ใน Sas


ฉันได้รวมภาพหน้าจอเพื่อช่วยชี้แจงปัญหาของฉัน: ฉันพยายามคำนวณค่าเฉลี่ยเคลื่อนที่และค่าส่วนเบี่ยงเบนมาตรฐานเคลื่อนที่ สิ่งที่ฉันต้องการคำนวณค่าสัมประสิทธิ์ของการเปลี่ยนแปลง (stdevavg) สำหรับค่าจริง โดยปกติจะทำโดยการคำนวณ stdev และค่าเฉลี่ยสำหรับ 5 ปีที่ผ่านมา แต่บางครั้งจะมีการสังเกตในฐานข้อมูลของฉันซึ่งฉันไม่มีข้อมูลในช่วง 5 ปีที่ผ่านมา (อาจจะมีเพียง 3, 2 ฯลฯ ) Thats ทำไมฉันต้องการรหัสที่จะคำนวณเฉลี่ยและ stdev แม้ว่าจะไม่มีข้อมูลสำหรับทั้ง 5 ปี นอกจากนี้ตามที่คุณเห็นในข้อสังเกตบางครั้งฉันมีข้อมูลมากกว่า 5 ปีเมื่อเป็นกรณีนี้ฉันต้องมีค่าเฉลี่ยเคลื่อนที่ซึ่งจะช่วยให้ฉันสามารถคำนวณค่าเฉลี่ยและเฉลี่ยได้ในช่วง 5 ปีที่ผ่านมา ดังนั้นหาก บริษัท มีข้อมูลเป็นเวลา 7 ปีฉันต้องการรหัสบางประเภทซึ่งจะคำนวณค่าเฉลี่ยและค่าเฉลี่ยสำหรับปี 1997 (โดย 1991-1996), 1998 (โดย 1992-1997) และ 1999 (1993-1998) เป็น im ไม่คุ้นเคยกับคำสั่ง sas ควรดู (มากอย่างคร่าว ๆ ) เช่น: หรือบางอย่างเช่นนี้ผมมีเงื่อนงำไม่ Im gonna พยายามและคิดออก แต่มูลค่าการโพสต์มันถ้าฉันเคยชินพบว่าตัวเองฉันเป็น SAS เริ่มต้นและ Im อยากรู้อยากเห็นถ้างานต่อไปนี้สามารถทำได้ง่ายมากขึ้นตามที่อยู่ในหัวของฉัน ฉันมีเมตาดาต้า (แบบง่าย) ต่อไปนี้ในตาราง userdatemoney: User - Date - เงินกับผู้ใช้รายต่างๆและวันที่สำหรับทุกๆปฏิทิน (สำหรับ 4 ปีที่ผ่านมา) ข้อมูลถูกสั่งโดย User ASC และ Date ASC ข้อมูลตัวอย่างมีลักษณะดังนี้: ตอนนี้ฉันต้องการคำนวณค่าเฉลี่ยเคลื่อนที่ 5 วันสำหรับ Money ฉันเริ่มต้นด้วย apprach ที่นิยมมากกับ lag () ฟังก์ชันเช่นนี้: ตามที่คุณเห็นปัญหาเกี่ยวกับวิธีการนี้เกิดขึ้นถ้ามีถ้าขั้นตอนข้อมูลทำงานเป็นผู้ใช้ใหม่ Aron จะได้รับค่าล้าหลังจากแอนนาซึ่งแน่นอนว่าไม่ควรเกิดขึ้น ตอนนี้คำถามของฉัน: ฉันค่อนข้างมั่นใจว่าคุณสามารถจัดการสลับผู้ใช้โดยการเพิ่มเขตข้อมูลพิเศษเช่น laggeduser และโดยการตั้งค่า N, Sum และตัวแปรค่าเฉลี่ยถ้าคุณสังเกตเห็นเช่นเปลี่ยน แต่: นี้สามารถทำได้ในวิธีที่ง่ายขึ้นอาจใช้ โดยวิธีใดขอบคุณสำหรับความคิดและความช่วยเหลือของคุณฉันคิดว่าวิธีที่ง่ายที่สุดคือการใช้ PROC ขยาย: และดังกล่าวในความคิดเห็น Johns สำคัญที่ต้องจำเกี่ยวกับค่าที่หายไป (และเกี่ยวกับการเริ่มต้นและสิ้นสุดการสังเกตด้วย) Ive เพิ่มตัวเลือก SETMISS ลงในรหัสตามที่คุณระบุให้ชัดเจนว่าคุณต้องการ zerofy ค่าที่หายไปอย่าละเลย (พฤติกรรมเริ่มต้นของ MOVAVE) ถ้าคุณต้องการยกเว้น 4 ข้อสังเกตแรกสำหรับผู้ใช้แต่ละคน (เนื่องจากไม่มีประวัติก่อนคำนวณค่าเฉลี่ยเคลื่อนที่ 5) คุณสามารถใช้ตัวเลือก TRIMLEFT 4 ภายใน TRANSFORMOUT () ตอบเมื่อวันที่ 3 ธันวาคม 13 เวลาเฉลี่ย 15: 29 โดยมีค่าเฉลี่ยตามช่วงวันที่ที่มีช่วงค่าเฉลี่ยของช่วงวันที่กับช่วงวันที่ Im new to SAS และฉันมีปัญหาบางอย่างกับการคำนวณค่าเฉลี่ยเคลื่อนที่ตามวันที่และกลุ่มภายในชุดข้อมูล โดยทั่วไปฉันพยายามคำนวณค่าเฉลี่ยเคลื่อนที่สำหรับการสังเกตแต่ละครั้งในช่วง 90 วันที่ผ่านมา การสังเกตแต่ละครั้งมีวันที่ ฉันยังต้องจัดกลุ่มพวกเขาเพื่อให้ค่าเฉลี่ยเคลื่อนที่จะขึ้นอยู่กับกลุ่มเท่านั้น กล่าวอีกนัยหนึ่งถ้าฉันจัดกลุ่มตามผลไม้แอปเปิ้ลจะมีค่าเฉลี่ยเคลื่อนที่และ orages ฯลฯ ฉันรู้ว่าฉันจะต้องจัดเรียงข้อมูลก่อนจากนั้นใช้คำสั่ง retain ฉันกำลังคิดที่จะทำมาโครด้วย ฉันเริ่มต้นนี้ แต่ดูเหมือนจะไม่มีส่วนใดในการทำงาน คนสามารถช่วยฉันได้หรือไม่? ฉันรู้วิธีการเรียงลำดับ แต่ฉันยังรู้วิธีหาค่าเฉลี่ย แต่ไม่ได้จัดกลุ่มอย่างถูกต้อง มันเป็นเพียงการให้ฉันค่าของการสังเกต ฉันก็พยายามที่จะทำกับ SQL แต่ไม่ได้ทำงานอย่างใดอย่างหนึ่ง นี่คือสิ่งที่ฉันเกิดขึ้น proc sql create table data. movingavg as a., mean (basis) as moving จาก xx ตามวันที่กลุ่มผลิตภัณฑ์ RE: ค่าเฉลี่ยเคลื่อนที่โดยใช้ช่วงวันที่ที่ไม่ทำงานอย่างใดอย่างหนึ่ง ข้อมูลใหม่ชุดเก่าโดย id retain basis ถ้า date90 แล้วเฉลี่ยเฉลี่ย (basis) run RE: ค่าเฉลี่ยเคลื่อนที่โดยใช้ช่วงวันที่นี่คือตัวอย่างของชุดข้อมูลของฉัน วันที่ของผลิตภัณฑ์แอปเปิลอาจ 20 4 march2 สีส้ม 3 apple april 3 กล้วย jan31 33 apple feb13 88 apple dec2 12 สิ่งที่ฉันต้องการคือค่าเฉลี่ยเคลื่อนที่ที่วิ่งอยู่ในช่วง 90 วันที่ผ่านมาของผลิตภัณฑ์โดยขึ้นอยู่กับจำนวนพื้นฐาน ขอโทษสำหรับโพสต์หลาย แต่หลังจากที่ฉัน reread โพสต์ก่อนหน้าของฉันดูเหมือนสับสนเป็นสิ่งที่ฉันพยายามที่จะทำ ขอบคุณครับ RE: ค่าเฉลี่ยเคลื่อนที่ที่มีช่วงวันที่ klaz2002 (โปรแกรมเมอร์) 25 Sep 07 16:00 ฉันต้องเริ่มต้นด้วยการกล่าวขอบคุณสำหรับคำถามนี้ เพราะมันทำให้ฉันไม่มีเวลาพักผ่อนจนกว่าฉันจะสามารถแก้ปัญหาได้ ให้ฉันระบุสิ่งที่ฉันเชื่อว่าเป็นความต้องการของคุณเพียงเพื่อให้คุณและฉันอยู่ในหน้าเดียวกัน ต้องการ 1) คุณต้องการมีค่าเฉลี่ยเคลื่อนที่ของ 90 วันที่ผ่านมาของข้อมูลตามชื่อผลิตภัณฑ์ ความหมายว่าสำหรับผลิตภัณฑ์ชิ้นเดียว (เช่นแอปเปิ้ล) คุณสนใจเฉพาะค่าพื้นฐานของผลิตภัณฑ์นั้นที่จะย้อนกลับไป 90 วัน 2) ฉันคิดว่าคุณมีบันทึก (1) ต่อผลิตภัณฑ์ต่อวัน นั่นหมายความว่าคุณไม่มีมูลค่าพื้นฐานมากกว่าหนึ่งครั้งต่อผลิตภัณฑ์ต่อวัน เมื่อต้องการแก้ปัญหาประวัติ (ค่าที่จะย้อนกลับไป 90 วัน) ฉันใช้ lagx () และใส่วันที่ 1-90 ในตัวแปรแล้วเพิ่มลงในอาร์เรย์ เนื่องจากตัวแปรต้องถูกรวมไว้ในอาร์เรย์ฉันจึงสร้างมาโครขนาดเล็กที่สร้างบรรทัดของรหัสที่ฉันต้องการ MACRO ที่สร้าง 270 ตัวแปรสำหรับ 90 วันของประวัติศาสตร์แมโคร SetVars ทำ i1 ถึง 90 ผลิตภัณฑ์โปรโมชั่น lagampi (ผลิตภัณฑ์) dateampi lagampi (วันที่) basisampi lagampi (พื้นฐาน) สิ้นสุดแก้ไขปรับปรุงครั้งแรกโดยผลิตภัณฑ์และวันที่ proc จัดเรียงข้อมูล yourdata out datasorted ตามวันที่ข้อมูลการเรียกใช้ผลิตภัณฑ์ ชุดข้อมูลสุดท้ายที่จัดเก็บตามวันที่ของผลิตภัณฑ์ prod1-prod90 7 date1-date90 basis1-basis90 mysum 8 อาร์เรย์ปัจจุบันอาร์เรย์ mysum prod prod1-prod90 array dt date1-date90 อาร์เรย์ bs basis1-basis90 SetVars กำหนดวันที่ 90 วันเพื่อตรวจสอบ DateMinus90 date-90 bctr 1 mysum 0 วนรอบวันที่เป็นไปได้ทั้งหมดทำ i1 ถึง 90 ข้อยกเว้นสำหรับกรณีแรกในกลุ่มผลิตภัณฑ์ตามที่มีอยู่ไม่ช้าถ้า first. product แล้ว moveavg พื้นฐานตรวจสอบชื่อผลิตภัณฑ์เดียวกันและภายใน 90 วันอื่นถ้าตัด (upcase (แยง) )) ตัด (upcase (ผลิตภัณฑ์)) และ dt dateminus90 แล้วทำถ้าพบแล้วใส่ลงใน SUM VAR mysum sum (mysum, basis, bs) เก็บจำนวน CODE ของเอกสารจำนวนมากที่พบ bctr 1 end end ถ้าไม่พบค่าพื้นฐานปัจจุบัน ควรใช้ ถ้า mysum 0 แล้ว myavg พื้นฐานอื่น myavg mysumbctr รัน proc พิมพ์ dataFINAL var วันที่ผลิตภัณฑ์ dateminus90 พื้นฐาน myavg วันที่รูปแบบ dateminus90 mmddyy10 วิ่งฉันหวังว่านี้จะช่วยให้คุณ จริงๆคุณควรมองเรื่องนี้มากกว่าที่ฉันได้นี้จริงๆโดยไม่ต้องตรวจสอบอย่างกว้างขวาง อาจมีข้อ จำกัด หลายประการในโค้ดนี้ดังนั้นโปรดระวังในโพสต์นี้ฉันจะแสดงเคล็ดลับในการคำนวณค่าเฉลี่ยเคลื่อนที่ (สามารถขยายไปยังการดำเนินการอื่น ๆ ที่ต้องใช้ฟังก์ชั่น windowing) ซึ่งเร็วเกินไป บ่อยครั้งที่นักวิเคราะห์ของ SAS จำเป็นต้องคำนวณค่าเฉลี่ยเคลื่อนที่และมีหลายทางเลือกตามลำดับความชอบ: 1. PROC EXPAND 2. ขั้นตอนของข้อมูล PROC SQL แต่หลายไซต์อาจไม่ได้รับอนุญาต SASETS ใช้ PROC EXPAND และทำค่าเฉลี่ยเคลื่อนที่ใน DATA ขั้นตอนต้องมีการเขียนโค้ดและมีข้อผิดพลาดเกิดขึ้น PROC SQL เป็นทางเลือกที่เป็นธรรมชาติสำหรับโปรแกรมเมอร์รุ่นจูเนียร์และในหลายกรณีทางธุรกิจจะเป็นทางออกเดียว แต่ SAS PROC SQL ของ SAS ขาดฟังก์ชันการทำงานของหน้าต่างที่มีอยู่ในดีดีจำนวนมากเพื่อช่วยในการคำนวณค่าเฉลี่ยเคลื่อนที่ คนเทคนิคหนึ่งมักใช้คือ CROSS JOIN ซึ่งมีราคาแพงมากและไม่ใช่โซลูชันที่ทำงานได้สำหรับชุดข้อมูลที่มีขนาดปานกลาง ในโพสต์นี้ฉันแสดงเคล็ดลับการคำนวณค่าเฉลี่ยเคลื่อนที่ (สามารถขยายไปยังการดำเนินการอื่น ๆ ที่ต้องใช้ฟังก์ชัน windowing) ซึ่งเร็วเกินไป พิจารณาการคำนวณค่าเฉลี่ยเคลื่อนที่ที่ง่ายที่สุดที่มีการสังเกตการณ์ K ต่อท้ายรวมอยู่ในการคำนวณ ได้แก่ MA (K) ที่นี่เรากำหนด K5 เราสร้างข้อมูลตัวอย่าง 20 ครั้งแรกซึ่งใช้ตัวแปร ID สำหรับหน้าต่างและตัวแปร X จะใช้ในการคำนวณ MA และจากนั้นเราจะใช้ CROSS JOIN มาตรฐานเพื่อตรวจสอบข้อมูลที่ได้ก่อนไม่ได้จัดกลุ่มไว้ เพื่อทำความเข้าใจวิธีใช้โครงสร้างข้อมูล จากชุดข้อมูลที่เป็นผลลัพธ์มันเป็นการยากที่จะหาเงื่อนงำตอนนี้ให้เรียงตามคอลัมน์ quotbidquot ในชุดข้อมูลนี้: จากข้อมูลที่เรียงลำดับนี้เป็นที่แน่ชัดว่าเราไม่มีข้อมูล CROSS JOIN ทั้งชุดข้อมูลเดิม แต่ใช้ CROSS JOIN, เราสามารถสร้างชุดข้อมูล quotoperationquot ที่มีค่าความแตกต่างได้และให้ชุดข้อมูลต้นฉบับ CROSS JOIN กับชุดข้อมูล quotoperationquot ขนาดเล็กมากนี้และข้อมูลทั้งหมดที่เราต้องการใช้สำหรับการคำนวณ MA จะอยู่ที่นั่น ตอนนี้ให้ทำ: CROSS JOIN ข้อมูลเดิมที่มีข้อมูล quotoperationquot จัดเรียงตาม (a. idops) ซึ่งเป็นจริงในชุดข้อมูล sortbid39 ตามที่ระบุไว้ในโค้ดด้านบนมีความจำเป็นต้องมีขวานคูณด้วย b. weight เพื่อให้ข้อมูล สามารถเป็นแบบ inter-leaved ได้มิเช่นนั้นค่า X เดียวกันจากตารางต้นฉบับจะถูกส่งออกและการคำนวณ MA จะล้มเหลว ตัวแปรน้ำหนักอย่างชัดเจนจะเพิ่มความยืดหยุ่นในการคำนวณ MA ทั้งหมดได้มากขึ้น ในขณะที่การตั้งค่าให้เป็น 1 สำหรับผลการปฏิบัติงานทั้งหมดในผลการคำนวณ MA แบบธรรมดาให้กำหนดน้ำหนักที่แตกต่างกันจะช่วยในการแก้ไขปัญหาการประมวลผลแบบ MA ที่ซับซ้อนมากขึ้นเช่นให้ข้อสังเกตเพิ่มเติมเกี่ยวกับน้ำหนักที่ลดลงสำหรับ MA ที่ผุกร่อน ถ้าจำเป็นต้องมี K parameter ที่แตกต่างกันในการคำนวณ MA (K) จะต้องมีการปรับปรุงชุดข้อมูลการทำงานซึ่งเป็นงานที่ไม่สำคัญ ตอนนี้แม่แบบรหัสจริงสำหรับการคำนวณ MA (K) จะเป็น: ด้วยวิธีการใหม่นี้เป็นที่น่าสนใจเพื่อเปรียบเทียบกับ CROSS JOIN รวมทั้ง PROC EXPAND บนเวิร์กสเตชันของฉัน (Intel i5 3.8Ghz หน่วยความจำ 32GB และฮาร์ดดิสก์แบบ 1TB 72K) CROSS JOIN มีความยาวมากในการทำงาน (ถ้าข้อมูลมีขนาดใหญ่) ในขณะที่วิธีการใหม่ใช้เวลาในการ PROC EXPAND เพียง 2 เท่าใช้เวลาทั้งหมด เล็กน้อยเมื่อเทียบกับตนเองเข้าร่วม การบริโภคเวลาที่แสดงด้านล่างอยู่ใน quotsecondquot ด้านล่างนี้ผู้อ่านโค้ดสามารถเรียกใช้และเปรียบเทียบตัวเองได้ โพสต์เมื่อ 10 พฤษภาคม 2015 โดย Liang Xie SAS การเขียนโปรแกรมสำหรับการทำเหมืองข้อมูล

Comments

Popular posts from this blog

Easy Forex Trading จำกัด ไซปรัส งาน

ก่อตั้งขึ้นในปีพ. ศ. 2546 โดยใช้ forex ที่ง่ายต่อการจัดหาประสบการณ์การค้าระดับโลกในกว่า 160 ประเทศทั่วโลก ด้วยบัญชี forex ที่ง่ายอย่างหนึ่งผู้ค้าสามารถซื้อขายสินค้าได้มากกว่า 175 รายการตั้งแต่สกุลเงินสินค้าโภคภัณฑ์และโลหะไปจนถึงตัวเลือกโดยใช้เดสก์ท็อปแท็บเล็ตหรืออุปกรณ์สมาร์ทโฟน forex ง่ายให้ผู้ค้าของตนด้วยโปรแกรมการฝึกอบรมส่วนบุคคล FX, ห้องผู้เชี่ยวชาญการให้รางวัลคุ้มค่าแนะนำโปรแกรมนายหน้าและข้อเสนอนวัตกรรมและการแข่งขันเสนอพันธมิตร ได้รับอนุญาตให้ใช้สิทธิในไซปรัสโดยคณะกรรมการกำกับหลักทรัพย์ไซปรัส CySEC (Easy Forex Trading Ltd - CySEC, เลขที่ใบอนุญาต 07907) ซึ่งได้รับการจดทะเบียนในสหภาพยุโรปผ่านทางคำสั่ง MiFID และในออสเตรเลียโดย Australian Securities Acut Investment Commission ASIC (Easy ตลาด PTY Ltd AFSL 246566) easy-forex มีสำนักงานในศูนย์การเงินรายใหญ่ ๆ ทั่วโลกเช่นเซี่ยงไฮ้, ลีมาซอล, วอร์ซอและซิดนีย์ คำเตือนความเสี่ยง: Forex, Commodities, Options และ CFDs (OTC Trading) เป็นผลิตภัณฑ์ที่ใช้ประโยชน์จากความเสี่ยงที่อาจเกิดขึ้นจากการลงทุนและอาจไม่เหมาะสำหรับทุกคน โปรดตรวจสอบให้แน่ใจว่าค...

Forex ดีที่สุด กรอบเวลา เพื่อ การค้า

เป็นอันดับแรกของความคิดเห็น 10 อันดับแรกของการจัดอันดับและการจัดอันดับสำหรับสัปดาห์ที่ผ่านมาแสดงให้เห็นว่าสกุลเงินที่แข็งแกร่งต่อไปนี้เป็นตัวแทนที่ดีสำหรับการไปนาน : USD (4X) ตามด้วย AUD (3X) สกุลเงินที่อ่อนค่าคือ GBP (5X) ตามด้วย NZD (2X) และ CAD (2X) ชุดค่าผสมที่ดีสำหรับสัปดาห์ที่จะมาถึงอาจเป็นเช่น: บางคู่ในรายการสอดคล้องกับการค้าระยะยาวโดยอิงจากเทคนิคการวิเคราะห์ (TA) ของแผนภูมิรายวันและรายสัปดาห์ สำหรับสัปดาห์ต่อไปนี้ดูเหมือนจะเป็น: GBPUSD, GBPAUD, EURGBP GBPCHF USDCAD, AUDNZD, AUDCAD, USDCHF และ AUDJPY สำหรับรายละเอียดเพิ่มเติมอ่านทั้งบทความของฉันที่มีการจัดทำแผนภูมิและตารางที่เกี่ยวข้องไว้ การจัดอันดับและการจัดอันดับรายการการวิเคราะห์ตามแผนภูมิ TA สำหรับทุกสกุลเงินหลักคู่ ขอให้ทุกคนโชคดี ไม่มีคำแนะนำข้อมูลเพียงอย่างเดียว ทุกสัปดาห์จัดอันดับการจัดอันดับ Forex จะจัดทำขึ้นสำหรับวันหยุดสุดสัปดาห์ จะมีการวิเคราะห์ช่วงเวลาทั้งหมดที่เกี่ยวข้องและกำหนดค่า ATR และ Pip สำหรับการวิเคราะห์คู่ค้าที่ดีที่สุดในมุมมองระยะยาวในช่วง 13 สัปดาห์ที่ผ่านมาการจัดประเภทสกุลเงินสามารถใช้ในการสนับสนุนได้ ...

Bollinger วง Ea Forex ค้า

ยินดีต้อนรับนักวิเคราะห์ทางเทคนิค BBForex สำหรับผู้ค้า forex สนใจใช้การวิเคราะห์ทางเทคนิคสำหรับการซื้อขายคู่สกุลเงินของพวกเขา ผู้ค้า forex นับพัน ๆ รายใช้กลุ่ม Bollinger Bands แต่เป็นเว็บไซต์แรกและแห่งเดียวที่อุทิศตนเพื่อให้บริการการวิเคราะห์ Bollinger Bands เฉพาะสำหรับตลาด forex เท่านั้น ไซต์แสดงรายชื่อคู่สกุลเงินที่เหมาะสมกับเกณฑ์ระบบของ Bollinger Band การคัดกรองแผนภูมิแบบโต้ตอบที่ช่วยให้คุณสามารถเขียนโปรแกรมตัวชี้วัดของคุณเองและอีกมากมายรวมถึงแผนภูมิ 2 มิติและ 3 มิติ และเพื่อจัดหาเครื่องมือระดับมืออาชีพสำหรับการซื้อขาย forex BBForex ได้เพิ่มการเขียนโปรแกรมบนเว็บ BBScript เพื่อให้ผู้ใช้สามารถปรับแต่งดัชนีและการวิเคราะห์ได้อย่างเต็มที่ bbforex ยังไม่ได้รับการปรับให้เหมาะสำหรับเบราว์เซอร์ที่ใช้มือถือระบบสัมผัสขนาดเล็ก ขณะนี้ดูดีที่สุดบนแล็ปท็อปหรือพีซี ปลั๊กอิน Adobe Flash Player อาจต้องใช้สำหรับคุณลักษณะบางอย่าง ฉันเข้าใจดำเนินการต่อ: bbforex copy 2017 การจัดการทุน Bollinger, Inc การสแกนเนอร์แถบแบนเนอร์กับทุกระบบที่แตกต่างกันเหล่านี้และอีเอที่ซับซ้อนดูเหมือนว่าเทคนิคเก่าดีดีที่ดีที่สุ...