Neden bazı insanlar eksik değerleri değiştirmek için -999 veya -9999 kullanıyor?


32

Veri setim var. Çok fazla eksik değer var. Bazı sütunlarda eksik değer -999 ile değiştirildi, ancak diğer sütunlarda eksik değer 'NA' olarak işaretlendi.

Eksik değeri değiştirmek için neden -999'u kullanalım?


1
Kendimi hiç -999 görmedim. Şimdiye kadar boş teller ve NA'lar gördüm.
Ye Tian,

12
Çünkü yüzeysel analiz yapan ve dökümanları dikkatlice okumayan insanlar için sonuçları berbatlaştırmak istiyorlar! (Ciddi olmakla birlikte, @Stephan Kolassa gerçek bir cevaba sahiptir.)
Matthew Gunn

1
Veri setini sağlayan kişiye sorun ...?
BlueRaja - Danny Pflughoeft

Daha da iyisi, ölçümün geçerli olmadığını göstermek için ölçüm sütunlarındaki 999 değerdir ... en azından bir -999 veya 0, bunun geçerli / önemli bir değer olmadığı anlamında olacaktır. 999 sadece en kötüsü.
Adam Martin,

Bir keresinde yumruk kartlarındaki verilerin kaydedildiği günlerden ibaret bir kural olduğunu okudum gibi hissediyorum. 9 saniyelik tam bir satır dağıtılması, tam olarak bir "eksik satır" olduğundan karta bakarken eksik verileri açıkça görülebilir hale getirdi. Bunu yedeklemek için bir referans bulamıyorum, bu yüzden yorum olarak bırakacağım.
Lucas,

Yanıtlar:


65

Bu, bilgisayar yazılımı sayısal vektörleri sayısal vektörler olarak sakladığında, önceki zamanlardaki bir sonuçtur. Hiçbir gerçek sayı "Ben özlüyorum" anlamını taşımaz. Dolayısıyla, erken istatistik yazılımı "doğru" sayılarla eksik değerler arasında ayrım yapmak zorunda kaldığında, -999 veya -9999 gibi geçerli bir sayı olmayan "açıkça" bir şey koyuyorlardı.

Tabii ki, -999 veya -9999, eksik bir değer için durdu, "açık" değil. Oldukça sık, kesinlikle geçerli bir değer olabilir. Bu tür değerleri açıkça kontrol etmediğiniz sürece , analizlerinizde her türlü "ilginç" hataları görebilirsiniz.

Günümüzde, eksik değerleri içerebilen sayısal vektörler, dahili olarak "zenginleştirilmiş" sayısal vektörler, yani, hangi değerlerin eksik olduğuna dair ek bilgi içeren sayısal vektörler olarak temsil edilir. Bu elbette çok daha iyidir, çünkü o zaman eksik değerler bu şekilde ele alınacak ve yanlışlıkla geçerli olarak kabul edilmeyecektir.

Ne yazık ki, bazı yazılımlar belki de uyumluluk için hala böyle bir kural kullanıyor. Bazı kullanıcılar bu konvansiyonu gayri resmi osmoz ile ıslattılar ve yazılımları eksik değerlere dikkatlice girmeyi destekleseler bile NA yerine -999 yazdılar.

Ahlaki: yok -999 olarak eksik değerleri kodlamak.


1
Daha önceki zamanlardan uzak kalmasına ek olarak, eksik değerlerin açık bir şekilde temsil edildiğini asla öğrenmemiş olan insanlar vardır ve bu yüzden, eksik bir değer eklemek zorunda kaldıklarında, kullanılacak şeyin bir çeşit sahte olduğunu düşünürler. numara.
Kodiolog

9
Bu sadece bir bekletme olayı değil. Verilerin bir miktar manipülasyonunu yapmak için bir araç yazıyorsam, orada sayıdaki herhangi bir programlama dilinde sayı sütunlarıyla okumak kolaydır. Değerlerin okunması, sayısal olmayan değerlerin tespit edilmesi ve buna göre ayrıştırılması çok daha fazla zaman alır. Eğer -9999'un istatistiklerle muhakkak olduğunu düşünüyorsanız, birlikte çalıştığım grubum geçersiz değerler için 1e32 kullanma sevgisini geliştirdi. Bunu yaptığınızda varyansınıza ne olduğunu söyleyeyim!
Cort Ammon - Reinstate Monica,

1
Harika, özlü cevap. Ancak bazı tarihsel ayrıntılar eklemek daha da iyi bir cevap olabilir. Kuşkusuz, bu biraz araştırma gerektirecektir. :)
tchakravarty

1
Bu kodlama başka bir tür ölçüm hatasını belirtmek için de kullanılabilir; yani "makine çalışmıyor" vs. "ölçüm yapacak kimse yoktu".
Hao Ye,

1
@qqqwww: Eksikliği belirtmek için kullanılan değeri tespit etmek ve bu girişleri gerçek eksikliğe veya NA'ya dönüştürmek en iyisi olacaktır. Sayısal verilerin ayrıklaştırılması genellikle iyi bir fikir değildir.
S. Kolassa - Monica'yı yeniden kurun

24

Bu tür değerler veritabanları içindir. Uzun zaman önce ve çoğu günümüzde çoğu veritabanı, tamsayı değerli veriler için sabit sayıda basamak ayırdı. -999 gibi bir sayı, dört karakterde, -9999, beş karakterde vb. Saklanabilen en küçük sayıdır.

(Tanım gereği - sayısal bir alan "NA" gibi alfanümerik karakterleri saklayamayacağını söylemeye gerek olmadan gider. Bazı sayısal kodların eksik veya geçersiz verileri göstermek için kullanılması gerekir.)

Kayıp bir değeri belirtmek için depolanabilecek en negatif sayı neden kullanılmalı? Çünkü yanlış bir şekilde geçerli bir sayı olarak kabul ediyorsanız, sonuçların çarpıcı biçimde yanlış olmasını istersiniz. Eksik değerlere ilişkin kodlarınız ne kadar fazla gerçekçi olursa, o kadar güvende olursunuz, çünkü büyük ölçüde yanlış giriş genellikle çıktıyı bozar. (Sağlam istatistiksel yöntemler önemli istisnalar!)

Böyle bir hata nasıl olabilir? Bu, sistemler arasında veri alışverişinde bulunduğunda her zaman gerçekleşir. -9999'un eksik bir değeri temsil ettiğini varsayan bir sistem, verileri CSV gibi çoğu biçimde yazdığınızda bu değeri çıktı olarak verir. CSV dosyasını okuyan sistem, eksik gibi değerleri değerlendirmek için “bilmeyebilir” (veya “söylenmeyebilir”).

Bir başka neden de, iyi istatistiksel veri ve bilgi işlem platformlarının birçok farklı eksik değer türünü tanımasıdır: NaN'ler, gerçekten eksik değerler, taşmalar, aşağı akışlar, yanıt vermeyenler, vb. 9998, -9997, vb) bunlara, tüm eksik değerleri herhangi bir tablodan veya diziden sorgulamayı kolaylaştırırsınız.

Bir diğeri ise, bu tür değerlerin genellikle grafiksel göstergelerde aşırı aykırı değerler olarak gösterilmesidir. Bir grafikte göze çarpmayı seçebileceğiniz tüm değerler arasında, mümkün olan en olumsuz olanı verilerinizden uzakta olma olasılığınızın en yüksek olduğu anlamına gelir.


Yararlı çıkarımlar ve genellemeler var:

  • -10303

  • Yeni durumlarda NoData kodlarını icat etmeyi kolaylaştırmak için bu tür standart bir kural benimseyin (kendi veritabanı yazılımınızı tasarlarken).

  • Yazılımınızı ve sistemlerinizi, hiç başarısız olmadıklarında önemli ölçüde başarısız olacak şekilde tasarlayın. En kötü böcek, aralıklı, rastgele veya minik olanlardır, çünkü tespit edilemezler ve avlanmaları zor olabilir.


2
NaN-10303

NaN Sayı Değil, NA En Az Müsait değil R
llr

1
Teoride, IEEE yüzer farklı tipteki eksik / geçersiz veriler için etiketler olarak iyi çalışacak farklı NaN tiplerini destekler. Uygulamada çoğu programlama dili, bu tür NaN'leri ayırt etmek için uygun bir desteğe sahip değildir ve bu ilave bilgileri kaybetmeye meyillidir.
CodesInChaos

İşaret biti dışında çok iyi aslında veritabanları tarafından kullanılan düzeninde herhangi bir yer almadı. 00-99 rakam çiftlerine ayrılır ve bunları sayı olarak görürler; ancak sayı negatif olsaydı, sayı yerine 255 - # yazarlardı. Ayrıca +/- inf için 127 ve 128 kullanılmıştır.
Joshua

@Joshua Bu, bazı veritabanları için doğru olabilir, ancak kesinlikle geliştirme için erken dönemde, diğerleri için durum böyle değildi. Ondalık kodlanmış değerler kullanan hiçbir veritabanı, teklif ettiğiniz mekanizmayı yine de kullanamazdı. Tarif ettiğim şekilde çalışan erken ve yaygın olarak kullanılan bir PC veritabanının bir örneği, sonunda dBase III, Clipper ve FoxPro ürünleri (Microsoft tarafından edinilen ve daha sonra Access lehine terk edilmiş) olarak sunulan dBase'dir. Sabit alan genişliği veri değişim formatları için eksi işareti her zaman bir karakter kaplar.
whuber

13

Kayıp değerleri kodlamak için her şeyi kullanabilirsiniz . R gibi bazı yazılımlar, eksik verileri kodlamak için özel değerler kullanır, ancak aynı zamanda eksik veriler için özel kodları olmayan SPSS gibi yazılım paketleri de vardır. İkinci durumda , bu tür değerler için keyfi bir seçim yapmanız gerekir . Herhangi bir şeyi seçebilirsiniz , ancak verilerinizden gözle görülür şekilde farklı bir değer seçmek genellikle iyi bir fikirdir (örneğin, verileriniz 0-100 aralığında yüzdedir, bu nedenle eksik verileri kodlamak için 999'u seçersiniz veya verileriniz insan yaşıdır ve eksik gözlemler için negatif değerler kullanırsınız). Bunun arkasındaki fikir, böyle yaparak bir şeyin yanlış gittiğini ve rakamların toplanmadığını fark edebilmeniz gerektiğidir.

Bununla birlikte, bu tür kodlamayla ilgili sorun, özel kodlamayı gerçekten fark edemediğiniz ve çöp sonuçlarına varamadığınızdır.


2

Veri kümesinde hesaplanmış değişkenler var mı? Yoksa bu birleştirilmiş / sıralanmış verilerden oluşan bir analitik veri seti mi? Bazı yazılımlar eksik verileri belirtmek için çok büyük negatif değerler kullanır. Ancak diğer yazılımlar NA veya ile eksik değerler oluşturur .. Tutarsız olduklarında, genellikle bazı işlem sonrası işlemler anlaşmazlıklara yol açmıştır.


2

Tabii ki, SPSS'de, eksik değer (ler) 999 veya her ne IS ise özel bir eksik kod olarak etiketlenir ve diğer değerlerden ayrı olarak ele alınır. Ayrı olarak tablo halinde gösterilebilir veya tamamen hariç tutulabilir. Sıfır bölme veya kütük (0) gibi şeylerin sonucundan bir ayrım yapılır.

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.