Pedoman jaminan kualitas dan kontrol kualitas (QA / QC) untuk database

18

Latar Belakang

Saya mengawasi input data dari literatur primer ke dalam database . Proses entri data rentan kesalahan, terutama karena pengguna harus menginterpretasikan desain eksperimental, mengekstrak data dari grafik dan tabel, dan mengubah hasil menjadi unit standar.

Data dimasukkan ke dalam database MySQL melalui antarmuka web. Lebih dari 10k titik data dari> 20 variabel,> 100 spesies, dan> 500 kutipan telah dimasukkan sejauh ini. Saya perlu menjalankan pemeriksaan kualitas tidak hanya data variabel, tetapi juga data yang terkandung dalam tabel pencarian, seperti spesies yang terkait dengan setiap titik data, lokasi penelitian, dll.

Entri data sedang berlangsung, jadi QA / QC perlu dijalankan sebentar-sebentar. Data belum dirilis secara publik, tetapi kami berencana untuk merilisnya dalam beberapa bulan ke depan.

Saat ini, QA / QC saya melibatkan tiga langkah:

  1. pengguna kedua memeriksa setiap titik data.
  2. periksa histogram secara visual setiap variabel untuk pencilan.
  3. pengguna melaporkan data yang dipertanyakan setelah hasil palsu diperoleh.

Pertanyaan

  1. Apakah ada pedoman yang dapat saya gunakan untuk mengembangkan prosedur QA / QC yang kuat untuk database ini?
  2. Langkah pertama adalah yang paling memakan waktu; Adakah yang bisa saya lakukan untuk menjadikan ini lebih efisien?
David LeBauer
sumber
1
Pembaca di sini juga akan tertarik pada utas berikut: Tes pemeriksaan data penting .
gung - Reinstate Monica

Jawaban:

25

Tanggapan ini berfokus pada pertanyaan kedua, tetapi dalam prosesnya sebagian jawaban untuk pertanyaan pertama (pedoman untuk prosedur QA / QC) akan muncul.

Sejauh ini, hal terbaik yang dapat Anda lakukan adalah memeriksa kualitas data pada saat entri dicoba. Pemeriksaan dan laporan pengguna padat karya dan karenanya harus dicadangkan untuk nanti dalam proses, selambat mungkin.

Berikut adalah beberapa prinsip, pedoman, dan saran, yang berasal dari pengalaman yang luas (dengan desain dan pembuatan banyak basis data yang sebanding dengan dan jauh lebih besar dari milik Anda). Mereka bukan aturan; Anda tidak harus mengikuti mereka untuk menjadi sukses dan efisien; tetapi mereka semua ada di sini untuk alasan yang sangat baik dan Anda harus berpikir keras untuk menyimpang dari mereka.

  1. Pisahkan entri data dari semua aktivitas yang menuntut intelektual . Jangan meminta operator entri data secara bersamaan untuk memeriksa apa pun, menghitung apa pun, dll. Batasi pekerjaan mereka untuk membuat faksimili data yang dapat dibaca komputer, tidak lebih. Secara khusus, prinsip ini menyiratkan formulir entri data harus mencerminkan format di mana Anda awalnya mendapatkan data, bukan format di mana Anda berencana untuk menyimpan data. Relatif mudah untuk mengubah satu format ke format lain di lain waktu, tetapi proses yang rawan kesalahan untuk mencoba transformasi dengan cepat saat memasukkan data.

  2. Buat jejak audit data : setiap kali sesuatu dilakukan pada data, mulai dari tahap entri data, dokumentasikan ini dan catat prosedur dengan cara yang membuatnya mudah untuk kembali dan memeriksa apa yang salah (karena semuanya akan salah). Pertimbangkan mengisi bidang untuk prangko waktu, pengidentifikasi operator entri data, pengidentifikasi sumber untuk data asli (seperti laporan dan nomor halaman mereka), dll. Penyimpanan murah, tetapi waktu untuk melacak kesalahan mahal.

  3. Otomatiskan semuanya. Asumsikan setiap langkah harus diulang kembali (pada waktu yang paling buruk, menurut Hukum Murphy), dan rencanakan dengan tepat. Jangan mencoba menghemat waktu sekarang dengan melakukan beberapa "langkah sederhana" dengan tangan.

  4. Secara khusus, buat dukungan untuk entri data : buat ujung depan untuk setiap tabel (bahkan spreadsheet dapat melakukannya dengan baik) yang menyediakan cara yang jelas, sederhana, seragam untuk mendapatkan data. Pada saat yang sama ujung depan harus menegakkan "bisnis Anda aturan: "yaitu, ia harus melakukan sebanyak mungkin pemeriksaan validitas sederhana. (Misalnya, pH harus antara 0 dan 14; jumlah harus positif.) Idealnya, gunakan DBMS untuk menegakkan pemeriksaan integritas relasional (misalnya, setiap spesies yang terkait dengan pengukuran benar-benar ada dalam database).

  5. Hitung terus-menerus hal - hal dan periksa bahwa jumlah benar-benar setuju. Misalnya, jika sebuah penelitian seharusnya mengukur atribut 10 spesies, pastikan (segera setelah entri data selesai) bahwa 10 spesies benar-benar dilaporkan. Meskipun memeriksa jumlah sederhana dan tidak informatif, ini bagus untuk mendeteksi data yang digandakan dan dihilangkan.

  6. Jika datanya berharga dan penting, pertimbangkan untuk secara independen memasukkan dua kali seluruh data . Ini berarti bahwa setiap item akan dimasukkan pada waktu yang berbeda oleh dua orang yang tidak berinteraksi. Ini adalah cara yang bagus untuk menangkap kesalahan ketik, data yang hilang, dan sebagainya. Pemeriksaan silang dapat sepenuhnya otomatis. Ini lebih cepat, lebih baik dalam menangkap kesalahan, dan lebih efisien daripada pengecekan manual ganda 100%. (Entri data "orang" dapat menyertakan perangkat seperti pemindai dengan OCR.)

  7. Gunakan DBMS untuk menyimpan dan mengelola data. Spreadsheet bagus untuk mendukung entri data, tetapi dapatkan data Anda dari spreadsheet atau file teks dan masuk ke database nyata sesegera mungkin. Ini mencegah semua jenis kesalahan berbahaya sambil menambahkan banyak dukungan untuk pemeriksaan integritas data otomatis. Jika Anda harus, gunakan perangkat lunak statistik untuk penyimpanan dan manajemen data, tetapi pertimbangkanlah untuk menggunakan DBMS khusus: itu akan melakukan pekerjaan yang lebih baik.

  8. Setelah semua data dimasukkan dan diperiksa secara otomatis, gambarlah : buat tabel yang diurutkan, histogram, sebar plot, dll., Dan lihat semuanya. Ini mudah diotomatisasi dengan paket statistik lengkap.

  9. Jangan meminta orang untuk melakukan tugas berulang yang dapat dilakukan komputer . Komputer jauh lebih cepat dan lebih andal dalam hal ini. Biasakan menulis (dan mendokumentasikan) skrip kecil dan program kecil untuk melakukan tugas apa pun yang tidak dapat diselesaikan dengan segera. Ini akan menjadi bagian dari jejak audit Anda dan memungkinkan pekerjaan untuk diulang dengan mudah. Gunakan platform apa pun yang Anda sukai dan yang cocok untuk tugas itu. (Selama bertahun-tahun, tergantung pada apa yang tersedia, saya telah menggunakan berbagai platform seperti itu dan semuanya efektif dalam caranya, mulai dari program C dan Fortran melalui skrip AWK dan SED, skrip VBA untuk Excel dan Word, dan custom program yang ditulis untuk sistem basis data relasional, GIS, dan platform analisis statistik seperti R dan Stata.)

Jika Anda mengikuti sebagian besar pedoman ini, sekitar 50% -80% pekerjaan dalam memasukkan data ke dalam basis data akan menjadi desain basis data dan menulis skrip pendukung. Sudah lazim untuk mendapatkan 90% melalui proyek seperti itu dan kurang dari 50% selesai, namun masih selesai tepat waktu: setelah semuanya sudah diatur dan telah diuji, entri data dan pemeriksaan dapat sangat efisien.

whuber
sumber
4
Yah, saya cukup cinta dengan jawaban ini. Saya ingin menekankan bahwa, pada poin 4 berikut, Anda harus menjaga cek tetap sederhana - seringkali ada sedikit ketidaksesuaian dalam data nyata yang harus dapat dimasuki oleh orang yang masuk, tetapi yang tidak dapat Anda lihat sebelumnya. Misalnya, saya memastikan bahwa tanggal dimasukkan sebagai tanggal; tapi saya sudah berhenti memiliki aturan keras tentang rentang tanggal, dan sebaliknya memeriksa dengan laporan, dan menindaklanjuti nilai di luar batas dengan siapa pun yang melakukan entri data.
Matt Parker
5
Mencegah seseorang memasukkan nilai yang mereka yakini benar dapat menimbulkan lebih banyak kesalahan daripada mendeteksi dan menyelidikinya.
Matt Parker
+1, jawaban yang bagus. Saya setuju dengan Matt, saya juga suka jawaban ini :)
mpiktas
1
@ Matt Poin bagus, keduanya. Saya sangat setuju. Mengenai yang pertama, pendekatan yang baik adalah untuk menguji prosedur entri data pada sebagian kecil perwakilan dari data dan secara menyeluruh membahas semua masalah yang muncul. Ini tidak akan membahas segala hal yang mungkin muncul, tetapi mengidentifikasi sebagian besar masalah utama sejak dini dan memungkinkan Anda menanganinya secara efektif.
whuber
2
Menambahkan informasi ini berguna di satu tempat. 1. Buat dokumen aturan bisnis yang berisi meta data. termasuk aturan yang digunakan untuk menghasilkan variabel turunan seperti usia. 2. Jika ini adalah basis data administrasi, asumsikan bahwa variabel akan berubah seiring waktu, misalnya kode baru ditambahkan. Dalam metadata, jelaskan kapan perubahan terjadi, dan bagaimana hal ini dapat memengaruhi setiap rangkaian waktu. 3. Jika database akan ditambahkan ke waktu, perubahan tanggal dan cap waktu ke database.
Michelle
3

DataOne menyediakan serangkaian praktik terbaik pengelolaan data yang bermanfaat yang dapat difilter menurut tag. Praktik terbaik yang ditandai dengan "kualitas", ditemukan di http://www.dataone.org/best-practices/quality , mengulangi dan memperluas banyak poin yang dibuat oleh @whuber. Berikut adalah daftar topik yang dibahas di sana (dalam urutan abjad):

  • Mengkomunikasikan kualitas data
  • Konfirmasikan kecocokan antara data dan deskripsinya dalam metadata
  • Pertimbangkan kompatibilitas data yang Anda integrasikan
  • Kembangkan jaminan kualitas dan rencana kendali mutu
  • Periksa ulang data yang Anda masukkan
  • Pastikan kontrol kualitas dasar
  • Pastikan integritas dan aksesibilitas saat membuat cadangan data
  • Identifikasi pencilan
  • Identifikasi nilai yang diperkirakan
  • Berikan informasi versi untuk digunakan dan ditemukan
David LeBauer
sumber