データセットがあります。多くの欠損値があります。一部の列では、欠損値は-999に置き換えられましたが、他の列では欠損値は「NA」としてマークされていました。
なぜ-999を使用して欠損値を置き換えるのですか?
データセットがあります。多くの欠損値があります。一部の列では、欠損値は-999に置き換えられましたが、他の列では欠損値は「NA」としてマークされていました。
なぜ-999を使用して欠損値を置き換えるのですか?
回答:
これは、コンピューターソフトウェアが数値ベクトルとして数値ベクトルを保存していた以前の時代からのホールドアウトです。「I'm missing」という意味を持つ実数はありません。したがって、初期の統計ソフトウェアが「真の」数値と欠損値を区別しなければならなかった場合、「明らかに」有効な数値ではないもの(-999や-9999など)を入力しました。
もちろん、欠損値を表す-999または-9999はまったく「明白」ではありません。かなり頻繁に、それは確かに有効な値になり得ます。そのような値を明示的にチェックしない限り、分析であらゆる種類の「興味深い」エラーが発生する可能性があります。
現在、欠損値を含む可能性のある数値ベクトルは、「強化された」数値ベクトルとして内部的に表されます。もちろん、欠損値はそのように扱われ、誤って有効として扱われないため、これははるかに優れています。
残念ながら、一部のソフトウェアは、おそらく互換性のために、このような規則をまだ使用しています。また、一部のユーザーは、非公式の浸透によってこの規則を吸収し、ソフトウェアが欠損値の入力をサポートしている場合でも、NAの代わりに-999を入力しています。
道徳:欠損値を-999としてエンコードしないでください。
このような値はデータベース用です。ほとんどのデータベース、および今日の多くのデータベースは、整数値のデータに固定桁数を割り当てました。-999のような数値は、4文字で保存できる最小のもので、5文字で-9999などです。
(言うまでもなく、定義により、数値フィールドは "NA"などの英数字を格納できません。 欠落または無効なデータを表すためにいくつかの数値コードを使用する必要があります。)
保存できる最も負の数を使用して、欠損値を示すのはなぜですか? 誤って有効な数値として処理した場合、結果が劇的に不正確になるためです。 欠損値のコードが現実的であるほど、コードはより安全になります。これは、入力が非常に間違っていると通常出力が台無しになるためです。(堅牢な統計手法は注目に値する例外です!)
どうしてそのような間違いが起こるのでしょうか?これは、システム間でデータが交換されるときに常に発生します。-9999が欠損値を表すと想定するシステムは、CSVなどのほとんどの形式でデータを書き出すときにその値をそのまま出力します。そのCSVファイルを読み取るシステムは、そのような値を欠落として処理するために「認識」(または「説明」)されない場合があります。
もう1つの理由は、優れた統計データとコンピューティングプラットフォームが、NaN、真の欠損値、オーバーフロー、アンダーフロー、無応答など、さまざまな種類の欠損値を認識することです。 9998、-9997など)を使用すると、任意のテーブルまたは配列からすべての欠損値を簡単に照会できます。
さらにもう1つは、このような値は通常、極端な外れ値としてグラフィック表示に表示されることです。グラフィックで目立つように選択できるすべての値の中で、最も否定的な値は、データから遠く離れている可能性が最も高くなります。
有用な意味と一般化があります:
浮動小数点フィールドの欠損データに使用する適切な値は、最も負の有効な数値で、倍精度浮動小数点数の場合はおよそに等しくなります。(平均に与える影響を想像してください!)同じ原理で、単精度浮動小数点数を使用する多くの古いプログラムは、欠損値に1E + 30などのやや任意の大きな数を使用していました。
新しい環境(独自のデータベースソフトウェアを設計している場合)でNoDataコードを簡単に作成できるように、このタイプの標準ルールを採用します。
ソフトウェアとシステムがまったく失敗した場合に劇的に失敗するように設計します。最悪のバグは、断続的、ランダム、または小さなものです。これらは検出されず、追い詰めるのが難しいためです。
NaN
している場合は、欠損値に対してのみ使用できます。有効な数値であるかどうかについてあいまいさはなく、(ほとんどの標準的な浮動小数点演算がNaN伝播であると仮定すると)誤ってそれを有効なデータポイントとして誤って扱う計算を台無しにします。たとえば、なります。
任意の値を使用して、欠損値をエンコードできます。Rのような一部のソフトウェアは、欠損値をエンコードするために特別な値を使用しますが、欠損データ用の特別なコードを持たないSPSSなどのソフトウェアパッケージもあります。2番目のケースでは、そのような値を任意に選択する必要があります。何でも選択できますが、通常、データとは明らかに異なる値を選択することをお勧めします(たとえば、データは0から100の範囲のパーセンテージであるため、欠落データのエンコードに999を選択するか、データが人間の年齢であり、欠落している観測値に負の値を使用します)。その背後にある考え方は、そうすることで、何かがうまくいかず、数字が足りない場合に気づくことができるはずだということです。
ただし、このようなエンコーディングの問題は、実際には特別なエンコーディングに気付かず、結果がゴミになることです。