จะจัดการโครงการวิเคราะห์ทางสถิติได้อย่างมีประสิทธิภาพได้อย่างไร


89

เรามักจะได้ยินเกี่ยวกับการจัดการโครงการและรูปแบบการออกแบบในวิทยาการคอมพิวเตอร์ แต่ไม่ค่อยบ่อยนักในการวิเคราะห์ทางสถิติ อย่างไรก็ตามดูเหมือนว่าขั้นตอนเด็ดขาดในการออกแบบโครงการสถิติที่มีประสิทธิภาพและทนทานคือการจัดระเบียบสิ่งต่าง ๆ

ฉันมักจะสนับสนุนการใช้ R และองค์กรที่สอดคล้องกันของไฟล์ในโฟลเดอร์ที่แยกต่างหาก (ไฟล์ข้อมูลดิบ, ไฟล์ข้อมูลที่ถูกแปลง, สคริปต์ R, ตัวเลข, บันทึก, ฯลฯ ) เหตุผลหลักสำหรับวิธีนี้คือการวิเคราะห์ของคุณในภายหลังอาจทำได้ง่ายขึ้น (เมื่อคุณลืมว่าคุณได้สร้างพล็อตที่กำหนดขึ้นมาอย่างไร)

อะไรคือแนวทางปฏิบัติที่ดีที่สุดสำหรับการจัดการโครงการเชิงสถิติหรือคำแนะนำที่คุณต้องการให้จากประสบการณ์ของคุณเอง? แน่นอนว่าสิ่งนี้ใช้ได้กับซอฟต์แวร์ทางสถิติใด ๆ ( หนึ่งคำตอบต่อโพสต์โปรด )


ฉันลงคะแนนเพื่อปิดคำถามนี้เป็นปิดหัวข้อเพราะมันเป็นเรื่องของการบริหารจัดการโครงการ
Aksakal

2
@ Aksakal: ฉันคิดว่าคุณจะรุนแรง :) เกี่ยวข้องกับ " ผู้ที่สนใจในสถิติ " นอกจากนี้การโหวต 70+ ยังแสดงให้เห็นว่าผู้ใช้มาตรฐานพบคำถามที่น่าสนใจและมีประโยชน์นี้
usεr11852

1
ฉันคิดว่าสิ่งนี้ควรพิจารณาในหัวข้อที่นี่
gung

@ gung คุณอาจต้องการเพิ่มคำตอบสำหรับเธรด Meta นั้นเพื่อให้เราสามารถพูดคุยได้หรือไม่
อะมีบา

คำตอบ:


80

ฉันกำลังรวบรวมแนวทางที่รวดเร็วซึ่งฉันพบในSO (ตามที่แนะนำโดย @Shane), Biostar (ต่อจากนี้, BS) และ SE นี้ ฉันพยายามอย่างดีที่สุดเพื่อรับทราบความเป็นเจ้าของสำหรับแต่ละรายการและเพื่อเลือกคำตอบแรกหรือคำตอบที่ได้รับความสนใจสูง ฉันยังเพิ่มสิ่งต่าง ๆ ของฉันเองและรายการที่ถูกตั้งค่าสถานะที่เฉพาะเจาะจงกับสภาพแวดล้อม [R]

การจัดการข้อมูล

  • สร้างโครงสร้างโครงการเพื่อรักษาทุกสิ่งให้ถูกที่ (ข้อมูลรหัสตัวเลข ฯลฯgiovanni / BS)
  • อย่าแก้ไขไฟล์ข้อมูลดิบ (โดยหลักแล้วควรเป็นแบบอ่านอย่างเดียว) คัดลอก / เปลี่ยนชื่อเป็นไฟล์ใหม่เมื่อทำการแปลงทำความสะอาด ฯลฯ
  • ตรวจสอบความสอดคล้องของข้อมูล ( whuber / SE)
  • จัดการการพึ่งพาสคริปต์และการไหลของข้อมูลด้วยเครื่องมือสร้างอัตโนมัติเช่น GNU make ( Karl Broman / Zachary Jones )

การเข้ารหัส

  • จัดระเบียบซอร์สโค้ดในหน่วยทางลอจิคัลหรือแบบเอกสารสำเร็จรูป ( Josh Reich / hadley / ars / SO; giovanni / Khader Shameer / BS)
  • แยกซอร์สโค้ดออกจากการแก้ไขเนื้อหาโดยเฉพาะอย่างยิ่งสำหรับโครงการขนาดใหญ่ - ซ้อนทับบางส่วนกับรายการก่อนหน้าและการรายงาน
  • บันทึกเอกสารทุกอย่างด้วยเช่น [R] oxygen ( Shane / SO) หรือการใส่หมายเหตุประกอบตนเองในไฟล์ต้นฉบับ - การอภิปรายที่ดีเกี่ยวกับ Medstats การวิเคราะห์เอกสารและการแก้ไขข้อมูล
  • [R] ฟังก์ชั่นที่กำหนดเองสามารถใส่ลงในไฟล์เฉพาะ (ซึ่งสามารถจัดหาได้เมื่อจำเป็น) ในสภาพแวดล้อมใหม่ (เพื่อหลีกเลี่ยงการเติมเนมสเปซระดับบนสุดเบรนแดน OConnor / SO) หรือแพ็คเกจ ( Dirk Eddelbuettel / Shane / SO)

การวิเคราะห์

  • อย่าลืมตั้งค่า / บันทึกเมล็ดพันธุ์ที่คุณใช้เมื่อเรียก RNG หรืออัลกอริธึมแบบสุ่ม (เช่น k-mean)
  • สำหรับการศึกษา Monte Carlo อาจเป็นเรื่องที่น่าสนใจที่จะเก็บรายละเอียด / พารามิเตอร์ในไฟล์แยกต่างหาก ( สุมาตราอาจเป็นตัวเลือกที่ดีgiovanni / BS)
  • อย่า จำกัด ตัวเองในหนึ่งพล็อตต่อตัวแปรใช้จอแสดงผลหลายตัวแปร (Trellis) และเครื่องมือสร้างภาพเชิงโต้ตอบ (เช่น GGobi)

รุ่น

  • ใช้การควบคุมการแก้ไขบางอย่างเพื่อให้ง่ายต่อการติดตาม / ส่งออกเช่น Git ( Sharpie / VonC / JD Long / SO) - นี่เป็นคำถามที่ดีที่ @Jeromy และ @Tal ถาม
  • สำรองข้อมูลทุกอย่างเป็นประจำ ( Sharpie / JD Long / SO)
  • เก็บบันทึกความคิดของคุณหรือพึ่งพาตัวติดตามปัญหาเช่นditz ( giovanni / BS) - ซ้ำซ้อนบางส่วนกับรายการก่อนหน้าเนื่องจากมีอยู่ใน Git

แก้ไข / รายงาน

ขณะที่ทราบด้านนายอำเภอ Wickham มีภาพรวมที่ครอบคลุมของการจัดการ R โครงการรวมทั้งยกตัวอย่างทำซ้ำและปรัชญาแบบครบวงจรของข้อมูล

ในขั้นตอนสุดท้ายในเวิร์กโฟลว์ R-oriented ของการวิเคราะห์ข้อมูลทางสถิติ Oliver Kirchkamp นำเสนอภาพรวมอย่างละเอียดว่าทำไมการยอมรับและปฏิบัติตามขั้นตอนการทำงานเฉพาะนั้นจะช่วยให้นักสถิติทำงานร่วมกันในขณะเดียวกันก็มั่นใจในความถูกต้องของข้อมูล นอกจากนี้ยังรวมถึงการอภิปรายเกี่ยวกับการใช้ระบบการทอผ้าและการควบคุมเวอร์ชัน ผู้ใช้ Stata อาจพบว่ากระบวนการการวิเคราะห์ข้อมูลของ J. Scott Long นั้นใช้ Stataก็มีประโยชน์เช่นกัน


เยี่ยมมาก chl! คุณจะโอเคไหมถ้าฉันจะโพสต์สิ่งนี้ลงในบล็อกของฉัน? (ฉันหมายถึงข้อความนี้เป็นซีซีดังนั้นฉันทำได้ แต่ฉันต้องการให้คุณอนุญาต แต่อย่างใด :)) ไชโย Tal
Tal Galili

@Tal ไม่มีปัญหา มันอยู่ไกลจากการเป็นรายการที่ครบถ้วนสมบูรณ์ แต่บางทีคุณอาจรวมลิงก์ที่มีประโยชน์อื่น ๆ ในภายหลัง นอกจากนี้อย่าลังเลที่จะปรับหรือจัดระเบียบใหม่ในวิธีที่ดีกว่า
chl

+1 นี่คือรายการที่ดี คุณอาจพิจารณา "ยอมรับสิ่งนี้" เพื่อให้มันอยู่ด้านบนเสมอ เนื่องจากเป็น CW ทุกคนสามารถอัปเดตได้ตลอดเวลา
เชน

@Shane ดีฉันเป็นหนี้บุญคุณคุณสำหรับการให้คำตอบแรกกับลิงค์ที่มีประโยชน์ดังนั้น รู้สึกอิสระที่จะเพิ่ม / ปรับเปลี่ยนวิธีที่คุณต้องการ
chl

ฉันตีพิมพ์ซ้ำที่นี่ รายการที่ยอดเยี่ยม! r-statistics.com/2010/09/…
Tal Galili

21

ขอบคุณสำหรับลิงค์! คำถามเปิดให้ซอฟต์แวร์ทางสถิติใด ๆ - ฉันใช้ Python และ Stata เป็นครั้งคราวดังนั้นฉันสงสัยว่าผู้ใช้ที่ได้รับการยืนยันอาจมีคำแนะนำที่น่าสนใจหรือไม่
chl

แน่นอน; แม้ว่าฉันจะเพิ่มว่าคำแนะนำในลิงก์ด้านบนสามารถนำไปใช้กับโครงการสถิติใด ๆ (โดยไม่คำนึงถึงภาษา)
เชน

ใช่แน่นอน! ฉันปรับปรุงคำถามของฉันในเวลาเดียวกัน
chl

8

สิ่งนี้ทับซ้อนกับคำตอบของ Shane แต่ในมุมมองของฉันมีท่าเรือหลักสองแห่ง:

  • การทำสำเนา ; ไม่เพียงเพราะคุณจะไม่จบลงด้วยผลลัพธ์ที่ทำ "อย่างใด" แต่ยังสามารถเรียกใช้การวิเคราะห์ได้เร็วขึ้น (บนข้อมูลอื่นหรือด้วยพารามิเตอร์ที่เปลี่ยนแปลงเล็กน้อย) และมีเวลาคิดเกี่ยวกับผลลัพธ์มากขึ้น สำหรับข้อมูลขนาดใหญ่คุณสามารถทดสอบแนวคิดของคุณใน "playset" ขนาดเล็กก่อนแล้วจึงขยายข้อมูลทั้งหมดได้อย่างง่ายดาย
  • เอกสารที่ดี ; ความเห็นสคริปต์ภายใต้การควบคุมเวอร์ชันวารสารวิจัยบางฉบับแม้แต่ระบบตั๋วสำหรับโครงการที่ซับซ้อนมากขึ้น ปรับปรุงการทำซ้ำทำให้การติดตามข้อผิดพลาดง่ายขึ้นและการเขียนรายงานขั้นสุดท้ายเล็กน้อย

+1 ฉันชอบจุดที่สอง (ฉันใช้ roxygen + git) จุดแรกทำให้ฉันคิดว่ายังมีความเป็นไปได้ที่จะให้รหัสของคุณกับนักสถิติอีกคนหนึ่งที่จะสามารถทำซ้ำผลลัพธ์ของคุณในระยะต่อมาของโครงการโดยไม่มีความช่วยเหลือใด ๆ
chl

การทำสำเนา? ข้อมูลมีข้อผิดพลาดแบบสุ่มอยู่แล้วดังนั้นใครสนใจ เอกสาร? คำตอบที่เป็นไปได้สองข้อ: 1) เรายุ่งเกินไปเราไม่มีเวลาสำหรับเอกสารหรือ 2) เรามีงบประมาณเพียงแค่ทำการวิเคราะห์หรือจัดทำเอกสารดังนั้นเราจึงเลือกทำการวิเคราะห์ คุณคิดว่าฉันล้อเล่นเหรอ? ฉันเคยเห็น / ได้ยินทัศนคติเหล่านี้หลายครั้ง - ในโครงการที่ชีวิตกำลังขี่บนเส้น
Mark L. Stone


1

แค่ 2 เซ็นต์ของฉัน ฉันพบว่า Notepad ++ มีประโยชน์สำหรับสิ่งนี้ ฉันสามารถบำรุงรักษาสคริปต์แยกต่างหาก (การควบคุมโปรแกรมการจัดรูปแบบข้อมูล ฯลฯ ) และไฟล์. pad สำหรับแต่ละโครงการ การเรียกไฟล์. pad เป็นสคริปต์ทั้งหมดที่เกี่ยวข้องกับโครงการนั้น


3
คุณหมายถึง, Notepad ++ ที่มีการใช้ npptor :)
Tal Galili

1

ในขณะที่คำตอบอื่น ๆ นั้นยอดเยี่ยมฉันจะเพิ่มความรู้สึกอื่น: หลีกเลี่ยงการใช้ SPSS ฉันใช้ SPSS สำหรับวิทยานิพนธ์ปริญญาโทของฉันและตอนนี้ฉันทำงานประจำในการวิจัยตลาด

ในขณะที่ทำงานกับ SPSS มันยากที่จะพัฒนารหัสทางสถิติที่จัดอย่างไม่น่าเชื่อเนื่องจาก SPSS นั้นไม่ดีในการจัดการไฟล์หลาย ๆ ไฟล์ (แน่นอนว่าคุณสามารถจัดการกับไฟล์ได้หลายไฟล์ แต่ก็ไม่เจ็บปวดเหมือน R) เพราะคุณไม่สามารถ สำหรับตัวแปร - คุณต้องใช้ "ชุดข้อมูลเปิดใช้งาน x" - รหัสซึ่งอาจเป็นความเจ็บปวดโดยรวม นอกจากนี้ไวยากรณ์ยังเป็น clunky และกระตุ้นการจดชวเลขซึ่งทำให้โค้ดไม่สามารถอ่านได้มากขึ้น


0

Jupyter Notebooks ที่ทำงานกับ R / Python / Matlab / etc ช่วยขจัดความยุ่งยากในการจดจำว่าสคริปต์ตัวใดที่สร้างตัวเลขขึ้นมา โพสต์นี้จะอธิบายถึงวิธีการที่เป็นระเบียบในการเก็บรักษารหัสและรูปภาพไว้ข้างๆกัน การเก็บตัวเลขทั้งหมดไว้ในบทกระดาษหรือวิทยานิพนธ์ในสมุดบันทึกเดียวทำให้รหัส asccoiated นั้นหาง่ายมาก

ยิ่งไปกว่านั้นในความเป็นจริงเพราะคุณสามารถเลื่อนดูตัวเลขจำนวนโหลเพื่อค้นหาสิ่งที่คุณต้องการ รหัสจะถูกซ่อนไว้จนกว่าจะมีความจำเป็น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.