Temel veri kontrol testleri


93

Görevimde sık sık başkalarının veri kümeleriyle çalışıyorum, uzman olmayanlar bana klinik veriler getiriyor, özetlemelerine ve istatistiksel testler yapmalarına yardımcı oluyorum.

Karşılaştığım sorun şu ki, getirdiğim veri kümelerinin neredeyse her zaman yazım hataları, tutarsızlıklar ve diğer her türlü sorunla karşılaşılması. Diğer kişilerin, gelen tüm veri kümelerini kontrol etmek için standart testler yapıp yapmadıklarını bilmek istiyorum.

Her değişkenin histogramlarını sadece bir görünüm elde etmek için çizerdim ama şimdi bu testte hayatta kalabilecek çok sayıda korkunç hata olduğunu fark ettim. Örneğin, bazı bireyler için, tekrarlanan ölçümün, Zaman 1'deki ile 2. Zamandakiyle aynı olduğu, geçen gün veri kümesini tekrarlayan ölçümler yaptım. Başka bir veri setinde, çok ciddi bir şekilde düzensizlikten (yüksek puanla temsil edilen) problemsiz olmaktan ve yönetim kurulunda 0'lar tarafından temsil edilen bir birey vardı. Bu kesin olarak kanıtlayamasam da imkansız.

Peki her veri setinde yazım hataları olmadığından ve imkansız değerler içermediğinden emin olmak için hangi temel testleri uygulayabilirim?

Şimdiden teşekkürler!


3
Harika soru Genel cevaplar vermenin zor olacağından şüpheliyim, çünkü kontroller veri setinin özelliklerine bağlı olacak.
mark999

2
@ mark999 Katılıyorum. Bu sorunun cevaplarını okumakla ilgileneceğim. Bazı genel stratejiler var, ancak birçok kontrolün hem verinin neye benzemesi gerektiği, hem de ortaya çıkabilecek yaygın hataların bazıları hakkında alana özel beklentiler oluşturma konusunda olduğunu düşünüyorum.
Jeromy Anglim

Yanıtlar:


77

Verilerin nasıl kaydedildiğini anlamanıza yardımcı olur.

Bir hikaye paylaşmama izin ver . Bir zamanlar, çok uzun zaman önce, birçok veri kümesi yalnızca solma baskısında saklandı. Bu karanlık günlerde, üretim tesislerinden birinde yaklaşık 10 ^ 5 çevresel izleme verisi kaydını bilgisayarlaştırmak için bir organizasyonla (büyük soyağacı ve büyüklükte; çoğunuz muhtemelen stoklarına sahip olacaksınız) sözleşme yaptım. Bunu yapmak için kişisel olarak bir laboratuvar raporları rafı oluşturdum (verilerin nerede olduğunu göstermek için), veri giriş formlarını oluşturdum ve okuma yazma için geçici bir ajansla sözleşme yaptımçalışanları formlara veri yazmak için. (Evet, okuyabilen insanlar için fazladan ödeme yapmanız gerekiyordu.) Verilerin değeri ve hassasiyeti nedeniyle, bu süreci bir seferde iki işçiyle paralel olarak yürüttüm (genellikle günden güne değişen). Birkaç hafta sürdü. İki girdi kümesini karşılaştırmak için yazılım yazdım, ortaya çıkan tüm hataları sistematik olarak tanımlayıp düzeltdim.

Çocuk hatalar vardı! Ne yanlış gidebilir? Hataları tanımlamanın ve ölçmenin iyi bir yolu, temel kayıt düzeyindedir; bu durumda, belirli bir izleme noktasında belirli bir izleme noktasında elde edilen belirli bir numune için tek bir analitik sonucun (bazı kimyasalların konsantrasyonu) tanımlanmasıydı. verilen tarih. İki veri setini karşılaştırırken buldum:

  • İhmal hataları : Bir veri kümesi bir kaydı içerecek, diğeri içermeyecektir. Bu, genellikle (a) bir ya da iki satır sayfanın altında göz ardı edildiğinde ya da (b) bir sayfanın tamamında atlandığından ortaya çıkar.

  • Gerçekten veri girişi hataları olan açık ihmal hataları. Bir kayıt, bir izleme noktası adı, tarih ve "analit" (genellikle kimyasal bir ad) ile tanımlanır. Bunlardan herhangi birinin yazım hatası olması durumunda, ilgili olduğu diğer kayıtlarla eşleştirilmez. Aslında, doğru kayıt kaybolur ve yanlış bir kayıt belirir.

  • Sahte çoğaltma . Aynı sonuçlar, çoklu kaynaklarda görünebilir, birçok kez kopyalanabilir ve olmadıklarında tekrarlanan gerçek ölçümler gibi görünebilir. Kopyalar, algılanması kolaydır, ancak hatalı olup olmadıklarına karar vermek, kopyaların veri kümesinde görünüp görünmeyeceğini bilmeye bağlıdır. Bazen bilemezsin.

  • Frank veri girişi hataları . "İyi" olanlar onlar değiştirmek çünkü yakalamak kolaydır türü verinin: basamağı için harfini kullanarak "O", "0", örneğin bir sigara sayıya bir sayı dönüşür. Diğer iyi hatalar değeri istatistiksel testlerle kolayca tespit edilebilecek şekilde değiştirir. (Bir durumda, "1,000,010 mg / Kg" deki ana rakam kesildi ve 10 değerinde kaldı. Böcek ilacı konsantrasyonundan bahsettiğinizde bu çok büyük bir değişiklik!) Kötü hataların yakalanması zor çünkü değişiyorlar. "50" için "80" yazmak gibi verilerin geri kalanıyla uyuşan bir değer. (Bu tür bir hata OCR yazılımı ile her zaman olur.)

  • Transpozisyonlar . Doğru değerler girilebilir ancak yanlış kayıt tuşları ile ilişkilendirilebilir. Bu çok sinsidir, çünkü veri setinin küresel istatistiksel özellikleri değişmeden kalabilir, ancak gruplar arasında sahte farklılıklar oluşabilir. Muhtemelen sadece çift girişli bir mekanizma bile bu hataları tespit edebilmektedir.

Bu hataların farkında olduktan ve bunların nasıl gerçekleştiğinin bir teorisine sahip olduğunuzda, bir kez bilgi sahibi olduktan sonra, veri kümelerinizi bu tür hataların olası varlığına göre tutmak için komut dosyaları yazabilir ve daha fazla dikkat çekmek için işaretleyebilirsiniz. Bunları her zaman çözemezsiniz, ancak en azından sonraki analizlerinde verilere eşlik etmek için bir "yorum" veya "kalite bayrağı" alanı ekleyebilirsiniz.

O zamandan beri veri kalitesi konularına dikkat ettim ve büyük istatistiksel veri kümelerinin kapsamlı kontrollerini yapmak için daha birçok fırsatım oldu. Hiçbiri mükemmel değil; hepsi kalite kontrollerinden yararlanırlar. Bunu yapmak için yıllar içinde geliştirdiğim ilkelerden bazıları şunlardır:

  1. Mümkün olduğunda, veri girişinde ve veri transkripsiyon prosedürlerinde fazlalık yaratın : sağlama toplamları, toplamlar, tekrarlanan girişler: otomatik iç tutarlılık kontrollerini destekleyen herhangi bir şey.

  2. Mümkünse, verilerin nasıl görünmesi gerektiğini açıklayan başka bir veritabanı oluşturun ve kullanın : yani bilgisayar tarafından okunabilen meta veriler. Örneğin, bir ilaç deneyinde, her hastanın üç kez görüleceğini önceden biliyor olabilirsiniz. Bu, tüm doğru kayıtları ve tanımlayıcılarını yalnızca doldurulmayı bekleyen değerlerle içeren bir veritabanı oluşturmanıza olanak tanır. Size verilen verileri doldurun ve kopyaları, ihmalleri ve beklenmedik verileri kontrol edin.

  3. Veri kümesini analiz için nasıl biçimlendirmeyi planladığınızdan bağımsız olarak verilerinizi her zaman normalleştirin (özellikle onları en az dördüncü normal forma alın ). Bu sizi modelleyeceğiniz her kavramsal açıdan ayrı varlığın tablolarını oluşturmaya zorlar. (Çevresel durumda bu, izleme yerleri tablolarını, numuneleri, kimyasalları (özellikleri, tipik aralıkları vb.), Bu numunelerin testlerini (bir test genellikle bir kimyasallar grubunu kapsar) ve bu testlerin bireysel sonuçlarını içerir. Bunu yaparken, birçok etkili veri kalitesi ve tutarlılığı kontrolü yaratır ve potansiyel olarak eksik veya yinelenen veya tutarsız değerleri tespit edersiniz.

    Bu çaba (iyi veri işleme becerileri gerektirir, ancak kolaydır) şaşırtıcı derecede etkilidir. Büyük veya karmaşık veri kümelerini analiz etmeyi arzu ediyorsanız ve ilişkisel veritabanları ve teorileri hakkında iyi bir çalışma bilgisine sahip değilseniz, en kısa sürede öğrenilecek şeyler listenize ekleyin. Kariyeri boyunca temettü ödeyecek.

  4. Her zaman mümkün olduğu kadar çok "aptal" kontrol yapın . Bunlar, tarihlerin beklenen sürelere düştüğü, hasta sayısının (veya kimyasalların veya her neyse) her zaman doğru bir şekilde toplandığı, değerlerin her zaman makul olduğu (örneğin bir pH'ın 0-14 arasında olması ve belki de kan pH değerleri), vb. için çok daha dar bir aralık. Alan uzmanlığının en fazla yardım edebileceği yer burasıdır: istatistikçi korkusuzca uzmanların aptalca sorularını sorabilir ve verileri kontrol etmek için cevaplardan yararlanabilir.

Elbette çok daha fazla şey söylenebilir - konu bir kitaba değer - ancak bu fikirleri teşvik etmek için yeterli olmalıdır.


5
sizin için mükemmel Zeyilname veritabanı QA / QC yönergelerine
David LeBauer

2
Bir takip sorusu - konu bir kitaba değer - kitap var mı?
Chris Beeley

5
+1 - harika cevap whuber. Keşke bir blogunuz olsaydı :) (Yazınızı r-bloggers.com'a eklemek isterdim)
Tal Galili

2
Konunun değdiği kitabı yazmalısınız!
Zach

1
Bu o kadar karmaşıktır ki, birçok danışmanlık firması "veri alma / temizleme / depolama" konusunda uzmanlaşmıştır.
Lucas Reis,

25

@whuber harika önerilerde bulunur; Sadece şunu ekleyeceğim: Arsalar, araziler, araziler, araziler. Saçılma noktaları, çubuk grafikler, kutu lekeleri, çizgiler, ısı haritaları ve aklınıza gelebilecek başka herhangi bir şey. Elbette, gördüğünüz gibi herhangi bir alanda görünmeyecek hatalar var, ancak başlamak için iyi bir yer. Yazılımınızın eksik verileri nasıl işlediğini netlediğinizden emin olun.

Bağlama bağlı olarak yaratıcı olabilirsiniz. Yapmayı sevdiğim bir şey Çok değişkenli verilerle bir çeşit faktör modeli / olasılıksal PCA (eksik veriler için birden fazla değerlendirme yapacak bir şey) uyuyor ve olabildiğince çok bileşen için puanlara bakıyoruz. Daha az önemli bileşenler / faktörler üzerine yüksek puan alan veri noktaları, genellikle göremeyeceğiniz aykırı değerlerdir.


5
+1 Ploting, Chicago için oylamanın ne olduğu istatistikleri içindir: herkesin erken ve sık yaptığı bir şey. ;-)
whuber

15

Kontrol etme eğiliminde olduğum büyük şeyler:

  1. Değişken türü - bir sayının sayısal olduğunu ve faktör / karakter olmadığını görmek için (girilen verilerde bir sorun olduğunu gösterebilir)
  2. Tutarlı değer seviyeleri - "t1" adındaki bir değişkenin "t1" veya "t 1" adında bir daha kendini bulamadığını görmek için
  3. Aykırı Değerler - değer aralıklarının anlamlı olduğunu görün. (Tansiyon değeri 0 veya eksi mi aldınız?). Burada bazen birinin -5'i eksik değer olarak kodladığını ya da onun gibi bir şey olduğunu tespit ediyoruz.
  4. Doğrusal kısıtlamalar. Bunu kullanmıyorum, ancak bazıları bazı sütunların bağımlılıkları üzerinde yeniden yapılanmalar olmasını istediklerini anlıyor (A, B sütunları C'ye eklemeli, ya da benzeri bir şey). Bunun için doğru paketi inceleyin (son kullanımda olan konferansta konuşmacı Mark van der Loo ile tanıştım - ve paketinden çok etkilendim)
  5. çok az rastgelelik. Bazen değerler bazı değerlere yuvarlanır veya bir noktada kesilir. Bu tür şeyler, saçılma alanlarında genellikle daha belirgindir.
  6. Eksik değerler - eksikliğin başka bir değişkenle ilişkili olmadığından emin olmak (rastgele eksik). Ama burada vereceğim bir kural yok.
  7. Boş satır veya çoğunlukla değer içermeyen satırlar. Bunlar (genellikle) bulunmalı ve çıkarılmalıdır.

Büyük soru BTW - Başkalarının konuyla ilgili deneyimlerini okumayı umuyorum.


10

Zaman içinde ölçüleriniz olduğunda (" boyuna veriler ") , gradyanları ve marjinal dağılımları kontrol etmek genellikle yararlıdır . Bu gradyan farklı ölçeklerde hesaplanabilir. Daha genel olarak verileriniz üzerinde anlamlı dönüşümler yapabilirsiniz (fourier, wavelet) ve dönüştürülen verilerin marjinal dağılımlarını kontrol edebilirsiniz.


7

Birkaç ben her zaman geçiyorum:

  1. Olması gereken kayıt sayısı var mı? Örneğin, verilerinizi başka bir kaynaktan aldıysanız veya birisinin verileri başka bir alt kümesinden çıkardıysanız, numaralarınız makul görünüyor mu? Bunun işleneceğini düşünürdün, ama sen ... sürpriz olacaktın.
  2. Tüm değişkenlerin orada mı? Bu değişkenlerin değerleri anlamlı mı? Örneğin, bir Evet / Hayır / Eksik değişken "1,2,3" olarak kodlanmışsa - bu ne anlama geliyor?
  3. Kayıp değerlerin nerede? Eksik bilgi ile aşırı yüklenmiş bazı değişkenler var mı? Çok sayıda eksik değere sahip belirli konular var mı ?

Bunlar, bir veri setinin keşifsel veri analizi gibi bir şeye hazır olduğundan emin olmak için attığım ilk adımlar. Sadece oturup veriyi dolaştırırken, bazıları "Doğru mu görünüyor?"


1

Her sütuna kabul örnekleme yöntemini kullanırdım (yüksek kalite ile düşük kalite arasındaki çizgiyi çizebileceğiniz kesme sayısını verir), bunun için bir çevrimiçi hesap makinesi var.


3
bu, şu anda olduğu gibi bir cevaptan çok bir yorum olarak daha uygun olacaktır. lütfen biraz detaylandırın, kaynaklara veya referanslara bağlantılar verin, vb.
Antoine

1
İşe yaramayan (teller ya da diğer nominal veriler gibi) ya da korkunç olan (çok değişkenli ilişkileri tamamen göz ardı ettiği için) bulmak için bunun etkili ve kolay olacağı bir çok durumu görmek zor. Aynı zamanda keyfi görünüyor, çünkü zaman serileri (ve bazı ilgili veriler hariç), bir veri tablosunun kayıtlarında doğal bir düzen bulunmamakla birlikte, çoğu (tümü değilse) kabul örnekleme yöntemlerinin sekansa bağlı olduğu görülmektedir.
whuber

Eh, burada kullanılacak hesap makinesi: sqconline.com/… Rastgeleleştirme kullandığınız sürece kabul örneklemesi kullanılabilir. Karmaşıklaştırmak istiyorsanız, sistematik örnekleme tekniğini ve ardından her bölüm için kabul örneklemesi kullanabilirsiniz
Tareq Shahwan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.