การทดสอบการตรวจสอบข้อมูลที่สำคัญ


93

ในบทบาทงานของฉันฉันมักจะทำงานกับชุดข้อมูลของคนอื่นไม่ใช่ผู้เชี่ยวชาญนำข้อมูลทางคลินิกมาให้ฉันและฉันช่วยให้พวกเขาสรุปและดำเนินการทดสอบทางสถิติ

ปัญหาที่ฉันมีอยู่คือชุดข้อมูลที่ฉันนำมานั้นมักจะเต็มไปด้วยความผิดพลาดความไม่สอดคล้องกันและปัญหาอื่น ๆ อีกมากมาย ฉันสนใจที่จะรู้ว่าคนอื่นมีการทดสอบมาตรฐานที่พวกเขาทำเพื่อพยายามตรวจสอบชุดข้อมูลใด ๆ ที่เข้ามา

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

ดังนั้นการทดสอบขั้นพื้นฐานใดที่ฉันสามารถใช้กับชุดข้อมูลแต่ละชุดเพื่อให้แน่ใจว่าไม่มีชุดตัวพิมพ์ผิดและไม่มีค่าที่เป็นไปไม่ได้

ขอบคุณล่วงหน้า!


3
เป็นคำถามที่ดีมาก ฉันสงสัยว่ามันจะยากที่จะให้คำตอบทั่วไปเพราะการตรวจสอบจะขึ้นอยู่กับข้อมูลเฉพาะของชุดข้อมูล
mark999

2
@ mark999 ฉันเห็นด้วย ฉันจะสนใจอ่านคำตอบของคำถามนี้ มีกลยุทธ์ทั่วไปบางอย่าง แต่ฉันพบว่าการตรวจสอบจำนวนมากเกี่ยวกับการสร้างความคาดหวังเฉพาะของโดเมนทั้งเกี่ยวกับสิ่งที่ข้อมูลควรมีลักษณะอย่างไรและข้อผิดพลาดทั่วไปบางประการที่อาจเกิดขึ้น
Jeromy Anglim

1
ผู้อ่านที่นี่ยังจะมีความสนใจในหัวข้อต่อไปนี้: การประกันคุณภาพและการควบคุมคุณภาพ (QA / QC) แนวทางปฏิบัติสำหรับฐานข้อมูล
gung

คำตอบ:


77

ช่วยให้เข้าใจวิธีการบันทึกข้อมูล

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

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

  • ข้อผิดพลาดของการละเว้น : ชุดข้อมูลหนึ่งจะมีการบันทึกชุดข้อมูลอื่นจะไม่ สิ่งนี้มักจะเกิดขึ้นเพราะ (ก) บรรทัดหนึ่งหรือสองจะมองข้ามที่ด้านล่างของหน้าหรือ (b) หน้าทั้งหมดจะถูกข้าม

  • ข้อผิดพลาดที่ชัดเจนของการละเว้นซึ่งเป็นข้อผิดพลาดในการป้อนข้อมูล บันทึกจะถูกระบุด้วยชื่อจุดตรวจสอบวันที่และ "analyte" (มักจะเป็นชื่อทางเคมี) หากสิ่งเหล่านี้มีข้อผิดพลาดในการพิมพ์มันจะไม่ถูกจับคู่กับบันทึกอื่น ๆ ที่เกี่ยวข้อง ผลบันทึกที่ถูกต้องจะหายไปและบันทึกที่ไม่ถูกต้องจะปรากฏขึ้น

  • การทำสำเนาปลอม ผลลัพธ์เดียวกันสามารถปรากฏในหลาย ๆ แหล่งได้รับการคัดลอกหลายครั้งและดูเหมือนจะเป็นมาตรการที่ทำซ้ำจริงเมื่อพวกเขาไม่ได้ รายการที่ซ้ำกันนั้นตรงไปตรงมาเพื่อตรวจสอบ แต่การตัดสินใจว่าพวกเขาจะผิดพลาดขึ้นอยู่กับการรู้ว่าซ้ำกันควรปรากฏในชุดข้อมูล บางครั้งคุณก็ไม่รู้

  • ข้อผิดพลาดในการป้อนข้อมูลแฟรงก์ คนที่ "ดี" นั้นง่ายต่อการจับเพราะพวกเขาเปลี่ยนประเภทของข้อมูล: โดยใช้ตัวอักษร "O" สำหรับตัวเลข "0" เช่นเปลี่ยนตัวเลขเป็นตัวเลขที่ไม่ใช่ตัวเลข ข้อผิดพลาดที่ดีอื่น ๆ จะเปลี่ยนค่ามากจนสามารถตรวจพบได้พร้อมกับการทดสอบทางสถิติ (ในกรณีหนึ่งตัวเลขนำหน้าใน "1,000,010 mg / Kg" ถูกตัดออกโดยทิ้งค่า 10 นั่นเป็นการเปลี่ยนแปลงครั้งใหญ่เมื่อคุณพูดถึงความเข้มข้นของสารกำจัดศัตรูพืช!) ความผิดพลาดที่ไม่ดีนั้นยากที่จะจับเพราะเปลี่ยน ค่าเป็นค่าที่เหมาะกับ (เรียงลำดับ) กับส่วนที่เหลือของข้อมูลเช่นการพิมพ์ "80" สำหรับ "50" (ความผิดพลาดประเภทนี้เกิดขึ้นกับซอฟต์แวร์ OCR ตลอดเวลา)

  • การเปลี่ยนรูป. สามารถป้อนค่าที่ถูกต้อง แต่เชื่อมโยงกับคีย์บันทึกที่ไม่ถูกต้อง สิ่งนี้เป็นเรื่องร้ายกาจเนื่องจากลักษณะทางสถิติทั่วโลกของชุดข้อมูลอาจยังคงไม่เปลี่ยนแปลง แต่สามารถสร้างความแตกต่างปลอมระหว่างกลุ่มได้ อาจเป็นเพียงกลไกอย่างการป้อนข้อมูลสองครั้งเท่านั้นที่สามารถตรวจจับข้อผิดพลาดเหล่านี้ได้

เมื่อคุณทราบถึงข้อผิดพลาดและรู้หรือมีทฤษฎีว่าเกิดขึ้นอย่างไรคุณสามารถเขียนสคริปต์เพื่อหมุนรอบชุดข้อมูลของคุณเพื่อหาข้อผิดพลาดที่เป็นไปได้และตั้งค่าสถานะเพื่อให้ความสนใจต่อไป คุณไม่สามารถแก้ไขได้ตลอดเวลา แต่อย่างน้อยคุณสามารถรวมฟิลด์ "ความคิดเห็น" หรือ "ธงคุณภาพ" เพื่อประกอบข้อมูลตลอดการวิเคราะห์ในภายหลัง

ตั้งแต่เวลานั้นฉันได้ให้ความสนใจกับปัญหาคุณภาพของข้อมูลและมีโอกาสอีกมากมายที่จะทำการตรวจสอบที่ครอบคลุมของชุดข้อมูลเชิงสถิติขนาดใหญ่ ไม่มีใครสมบูรณ์แบบ; พวกเขาทั้งหมดได้รับประโยชน์จากการตรวจสอบคุณภาพ หลักการบางข้อที่ฉันได้พัฒนาในช่วงหลายปีที่ผ่านมาสำหรับการทำเช่นนี้

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

  2. หากเป็นไปได้ให้สร้างและใช้ประโยชน์จากฐานข้อมูลอื่นซึ่งอธิบายถึงข้อมูลที่ควรมีลักษณะ:นั่นคือเมทาดาทาที่คอมพิวเตอร์อ่านได้ ตัวอย่างเช่นในการทดลองยาคุณอาจรู้ล่วงหน้าว่าผู้ป่วยทุกคนจะถูกมองเห็นสามครั้ง สิ่งนี้ช่วยให้คุณสามารถสร้างฐานข้อมูลที่มีระเบียนที่ถูกต้องทั้งหมดและตัวระบุของพวกเขาด้วยค่าที่กำลังรอการกรอกข้อมูลเหล่านั้นด้วยข้อมูลที่ให้คุณแล้วตรวจสอบข้อมูลที่ซ้ำซ้อนการละเว้นและข้อมูลที่ไม่คาดคิด

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

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

  4. มักจะดำเนินการเป็นจำนวนมากการตรวจสอบ "โง่" คุณอาจจะสามารถ สิ่งเหล่านี้เป็นการตรวจสอบอัตโนมัติของสิ่งที่ชัดเจนเช่นวันที่ตกอยู่ในช่วงเวลาที่คาดไว้จำนวนผู้ป่วย (หรือสารเคมีหรืออะไรก็ตาม) จะเพิ่มขึ้นอย่างถูกต้องเสมอว่าค่านั้นสมเหตุสมผลเสมอ (เช่น pH ต้องอยู่ระหว่าง 0 ถึง 14 และอาจเป็น ช่วงแคบลงมากสำหรับการอ่านการอ่านค่า pH ในเลือด) และอื่น ๆ นี่คือที่ความเชี่ยวชาญด้านโดเมนสามารถได้รับความช่วยเหลือมากที่สุด: นักสถิติสามารถถามคำถามโง่ ๆ ของผู้เชี่ยวชาญและใช้คำตอบเพื่อตรวจสอบข้อมูลได้อย่างน่ากลัว

แน่นอนยิ่งกว่านั้นสามารถพูดได้ - หัวเรื่องมีมูลค่าหนังสือ - แต่ควรเพียงพอที่จะกระตุ้นความคิด


5
ภาคผนวกที่ยอดเยี่ยมที่คุณฐานข้อมูล QA / QC แนวทาง
เดวิด LeBauer

2
คำถามหนึ่งในการติดตาม - หัวเรื่องมีค่าหนังสือ - มีหนังสือหรือไม่
Chris Beeley

5
+1 - คำตอบที่ยอดเยี่ยม ฉันขอให้คุณมีบล็อก :) (ฉันอยากจะเพิ่มการเขียนของคุณใน r-bloggers.com)
Tal Galili

2
คุณควรเขียนหนังสือเล่มนี้ว่าหัวเรื่องนั้นมีค่า!
ซัค

1
นี่เป็นเรื่องที่ซับซ้อนที่ บริษัท ที่ปรึกษาหลายรายเชี่ยวชาญใน "การดึงข้อมูล / ทำความสะอาด / การจัดเก็บ"
Lucas Reis

25

@whuber ให้คำแนะนำที่ดี ฉันจะเพิ่มนี้เท่านั้น: แปลง, แปลง, แปลง, แปลง Scatterplots, histograms, boxplots, lineplots, heatmaps และสิ่งอื่น ๆ ที่คุณนึกออก แน่นอนว่าคุณพบว่ามีข้อผิดพลาดที่จะไม่ปรากฏในแปลงใด ๆ แต่เป็นจุดเริ่มต้นที่ดี เพียงให้แน่ใจว่าคุณมีความชัดเจนเกี่ยวกับวิธีที่ซอฟต์แวร์ของคุณจัดการกับข้อมูลที่ขาดหายไป ฯลฯ

ขึ้นอยู่กับบริบทที่คุณจะได้รับความคิดสร้างสรรค์ สิ่งหนึ่งที่ฉันต้องการทำกับข้อมูลหลายตัวแปรคือแบบจำลองปัจจัย / ความน่าจะเป็น PCA (สิ่งที่จะทำการเพิ่มความหลากหลายของข้อมูลที่ขาดหายไป) และดูคะแนนสำหรับองค์ประกอบต่างๆให้มากที่สุด จุดข้อมูลที่ให้คะแนนสูงในองค์ประกอบ / ปัจจัยที่สำคัญน้อยมักเป็นค่าผิดปกติที่คุณอาจไม่เห็นเป็นอย่างอื่น


5
+1 การพล็อตติ้งมีไว้สำหรับสถิติการลงคะแนนเสียงสำหรับชิคาโกคืออะไรที่ทุกคนทำได้เร็วและบ่อยครั้ง ;-)
whuber

15

สิ่งใหญ่ที่ฉันมักจะตรวจสอบ:

  1. ประเภทตัวแปร - เพื่อดูว่าตัวเลขเป็นตัวเลขไม่ใช่ตัวประกอบ / ตัวอักษร (อาจบ่งบอกถึงปัญหาบางอย่างกับข้อมูลที่ป้อน)
  2. ระดับค่าที่สอดคล้องกัน - เพื่อดูว่าตัวแปรที่มีชื่อ "t1" ไม่พบตัวเองอีกครั้งด้วยชื่อ "t1" หรือ "t 1"
  3. Outliers - เห็นว่าช่วงของค่าเหมาะสม (คุณได้ค่าความดันโลหิตเป็น 0 หรือลบ?) บางครั้งเราพบว่ามีคนเข้ารหัส -5 ว่าเป็นค่าที่ขาดหายไปหรืออะไรทำนองนั้น
  4. ข้อ จำกัด เชิงเส้น ฉันไม่ได้ใช้สิ่งนั้น แต่บางคนพบว่าพวกเขาต้องการให้มีการปรับโครงสร้างใหม่ตามการพึ่งพาของบางคอลัมน์ (คอลัมน์ A, B ต้องเพิ่มใน C หรืออะไรทำนองนั้น) สำหรับสิ่งนี้คุณสามารถดูแพคเกจการลบล้าง (ฉันได้พบกับลำโพง, Mark van der Loo ในการใช้งานครั้งสุดท้ายการประชุม R - และประทับใจมากกับแพ็คเกจของเขา)
  5. การสุ่มตัวอย่างน้อยเกินไป บางครั้งค่าจะถูกปัดเศษเป็นค่าบางค่าหรือถูกตัดทอนบางจุด ประเภทของสิ่งเหล่านี้มักจะชัดเจนมากขึ้นในแปลงกระจาย
  6. ค่าที่หายไป - ตรวจสอบให้แน่ใจว่าการหายไปนั้นไม่เกี่ยวข้องกับตัวแปรอื่น ๆ (หายไปโดยการสุ่ม) แต่ฉันไม่มีกฎง่ายๆที่จะให้ที่นี่
  7. ล้างแถวหรือแถวที่ไม่มีค่าเป็นส่วนใหญ่ ควรพบและละเว้น

Great question BTW - ฉันหวังว่าจะอ่านประสบการณ์ของผู้อื่นในเรื่องนี้


10

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


7

ไม่กี่ฉันจะผ่าน:

  1. มีจำนวนระเบียนที่ควรจะเป็นหรือไม่? ตัวอย่างเช่นถ้าคุณดึงข้อมูลของคุณจากแหล่งอื่นหรือเป็นชุดย่อยของข้อมูลคนอื่นตัวเลขของคุณดูสมเหตุสมผลหรือไม่ คุณคิดว่าสิ่งนี้จะได้รับการคุ้มครอง แต่คุณจะต้อง ... ประหลาดใจ
  2. ตัวแปรทั้งหมดของคุณอยู่ที่นั่นไหม? คุณค่าของตัวแปรเหล่านั้นสมเหตุสมผลหรือไม่? ตัวอย่างเช่นหากตัวแปร Yes / No / Missing เขียนรหัส "1,2,3" - นั่นหมายความว่าอย่างไร
  3. คุณค่าที่หายไปของคุณอยู่ที่ไหน มีตัวแปรบางอย่างที่ดูเต็มไปด้วยข้อมูลที่ขาดหายไปหรือไม่? มีบางวิชาที่มีค่าหายไปจำนวนมากหรือไม่

เหล่านี้เป็นขั้นตอนแรกที่ฉันต้องผ่านเพื่อให้แน่ใจว่าชุดข้อมูลนั้นพร้อมสำหรับการวิเคราะห์ข้อมูลเชิงสำรวจ แค่นั่งลงใช้งานโรมมิ่งเกี่ยวกับข้อมูลบางอย่างที่เกิดขึ้น "นั่น ... ดูเหมือนจะใช่ไหม"


1

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


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

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

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