Veri analizinde hata ayıklama nasıl yapılır?


10

Aşağıdaki sorunla karşılaştım, keşif oldukça tipik.

Birkaç milyon satır gibi büyük verilerim var. Bazı önemsiz analiz, örneğin birkaç alt sorgudan oluşan bir SQL sorgusu çalıştırın. Örneğin X özelliğinin zaman içinde arttığını belirten bir sonuç elde ediyorum.

Şimdi, buna yol açabilecek iki olası şey var:

  1. X gerçekten zaman içinde artıyor
  2. Analizimde bir hata var

Birincisinin ikinciden ziyade olduğunu nasıl test edebilirim? Ara sonuçlar hala milyonlarca satırdan oluşabileceğinden, adım adım bir hata ayıklayıcı, bir tane olsa bile yardımcı olmaz.

Düşünebildiğim tek şey, bir şekilde test etmek istediğim özelliğe sahip küçük, sentetik bir veri kümesi oluşturmak ve analizini bir birim testi olarak çalıştırmaktı. Bunu yapmak için araçlar var mı? Özellikle, ancak bunlarla sınırlı olmamak kaydıyla, SQL.


Harika bir soru! Bunun önemli ve önemsiz bir sorun olduğunu düşünüyorum.
Ben

Yanıtlar:


4

İşte bir öneri:

  • Analizinizi, alt örnekler üzerinde çalışacak şekilde kodlayın.
  • Rastgele, zamana veya bölgeye göre örnekleme yapabilen tamamlayıcı bir rutini kodlayın veya ... Bu, etki alanına özgü olabilir. Bilginiz buraya girer.
  • İkisini birleştirin ve sonuçların alt örnekler arasında sabit olup olmadığını görün.

Bu, hatanın alt örnekler arasında kararlı olduğu anlamına da gelmez mi?
Küçük Bobby Tablolar

Bu olası bir sonuçtur, ancak sadece denedikten sonra bileceksiniz. Ve eğer öyleyse, en azından daha küçük veri kümelerinde hata ayıklayabilirsiniz.
Dirk Eddelbuettel

1

Normalde yaptığım budur - en önemli değişkenleri ele alır (iş anlayışınızı ve hipotezinizi temel alır - daha sonra her zaman revize edebilirsiniz), daha sonra bir Pivot'a içe aktarılabilen satır sayısını azaltmak için bu niteliklere göre gruplandırın. Her satıra ilgili metriklerin toplamını ve sayısını eklemelisiniz.

Önceki adıma filtre koymadığınızdan emin olun. Tüm verileri özetlenmiş bir düzeyde elde ettikten sonra, Pivot tablolarında oynayabilir ve neyin değiştiğini / arttığını veya azaldığını görebilirsiniz.

Veriler önemli parametrelerde bile özetlenemeyecek kadar büyükse, verileri 3-4 alt kümeye ayırmanız ve sonra tekrar yapmanız gerekir.

Umarım yardımcı olur.


1

Öncelikle algoritma uygulamanızın doğru olduğunu doğrulamanız gerekir. Bunun için küçük bir veri örneği kullanın ve sonucun doğru olup olmadığını kontrol edin. Bu aşamada örneğin popülasyonu temsil etmesi gerekmez.

Uygulama doğrulandıktan sonra, tahmin etmeye çalıştığınız değişkenler arasında anlamlı bir ilişki olduğunu doğrulamanız gerekir. Bunu yapmak için sıfır hipotezi tanımlayın ve sıfır hipotezini anlamlı bir güven düzeyi ile reddetmeye çalışın. ( doğrusal regresyon için hipotez testi )

SQL dağıtımınız için birim test çerçeveleri olabilir. Ancak R gibi bir programlama dili kullanmak daha kolay olacaktır.


1

Çok adımlı bir stratejiyi seviyorum:

  1. Kısa ve zor kodların aksine, anlaşılması kolay kod yazın. İstatistikçileri zor kodlar gibi biliyorum, ama zor kodlardaki sorunları tespit etmek tehlikelidir. (Bundan bahsediyorum çünkü benim bir süpervizör belgesiz 500 satır python komut dosyalarına düşkün - bu karmaşa hata ayıklama eğlenin ve bu deseni özellikle BT arka planından olmayan insanlardan çok gördüm)

  2. Kodunuzu, daha küçük stilerde test edilebilecek ve değerlendirilebilecek daha küçük işlevlerde parçalayın.

  3. Bağlı öğeleri arayın, örneğin X koşulu olan vaka sayısı Y'dir - bu nedenle bu sorgu Y döndürmelidir ZORUNLU Çoğu zaman bu daha karmaşık, ancak yapılabilir.

  4. Komut dosyanızı ilk kez çalıştırırken, küçük bir alt örnekle test edin ve her şeyin yolunda olup olmadığını dikkatlice kontrol edin. BT'deki birim testlerden hoşlanırken, istatistik komut dosyalarındaki hatalar o kadar belirgindir ki, dikkatlice kontrol ederek kolayca görülebilirler. Veya, muhtemelen birim testler tarafından yakalanmayan metodik hatalardır.

Temiz bir "bir defalık" iş sağlamak için yeterli olmalıdır. Ama göründüğünüz gibi bir zaman dizisi için, aralık dışı, imkansız kombinasyonlar vb. bir şey değişir. Ve çoğu zaman, veriler değişiyor - ve bu her çalışma için kontrol edilmesi gereken bir şey. Bunun için kod yazmak zaman alıcı ve sinir bozucu olabilir, ancak veri giriş hataları nedeniyle küçük hataları yener.

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.