コラムバックナンバー

2021年に入り、再び新型コロナウイルス感染症拡大防止のため、首都圏をはじめとして再び緊急事態宣言が発令されました。2020年は4月初旬で勤務形態の変更をはじめとして従来の価値観が大きく変わった年でしたが、2020年の殆どの期間、私が気にかけていたのが「異常値・外れ値・欠損値」の処理についてです。前回は異常値と外れ値について記載しましたが、今回は欠損値についての具体的な処理方法と、気をつけるべきポイントを記載したいと思います。

前回のコラムはこちら「異常値・外れ値・欠損値(1)

欠損値とは

欠損値とは、分析に利用するデータにおいて、何らかの理由によりデータが記録されず存在していない状態を言います。欠測、欠落とよばれることもあり、英語では missing data といいます。対して全て揃っているデータのことを完全データ(complete data)と呼びます。データの欠損状況は、分析用のデータセットが揃った時点で 1. サンプル単位での欠損状況の確認を行い(レコード単位)、 2. さらには変数内での欠損状況の確認(列単位)を両方向から行います。たとえば小売店の分析を行うことになり顧客マスタが1万人分、データには、顧客ID/登録日/性別/年齢/居住地/初回購入のきっかけが入っていたとします。1行を1人の顧客IDとしたとき、それぞれに登録日/性別/年齢/居住地/初回購入のきっかけが揃っているかどうか、これが行単位でのチェックです。そして、1万件に対して登録日のデータ入力状況、性別の入力状況、年齢の入力状況……といったように、変数ごとの確認もします。「殆どのデータが含まれていない顧客」や「居住地が欠けている顧客」「初回購入のきっかけは300人程度しか入力されていない」といった状況が起きていたら、どのように対処するとよいでしょうか。

対処法:レコードごと除く

欠けた変数が多いレコード(このケースでは顧客)をそもそも削除して対処することは非常にシンプルで理解しやすい対処です。特に、全データのうちほんの数件しかないという場合であれば、この対処で問題ありません。では、分析しようとする対象のデータの多くに欠損があるという場合ではどうすればいいでしょうか。分析対象は1万件あるのに、半数近くが欠損ばかりという状況では、適切な分析は実行できるでしょうか? このとき「どのような情報が欠損しているのか」「欠損している情報は分析課題を解くために必要なのか」という視点が非常に大切になります。

対処法:欠損の多い変数を除く

分析課題を解くために必要でない変数は、分析の対象外として差し支えないと言えます。ただし、欠損している理由や背景については十分に確認することが求められます。私達の手元には、何かが起きた「結果」としてデータがやってきます。そのため「欠損が多く起こっている」ということも情報となります。システムにおけるバグやエラー、抽出やデータ化時の人的ミスなど「欠損が起きている状況」の把握は、実は新たなインサイトの発見のきっかけとなることが多くあります。

対処法:補完する

欠損値の補完には多くの方法があります。今回はその中でも代表的なものをご紹介したいと思います。

(1)代表値で補完する

シンプルでよく知られた方法として、平均値や最頻値等の代表値で補完するという方法があります。ただし闇雲に代表値を入れればいいというものでは、もちろんありません。そのデータを補完することによりデータの分布に影響がないかどうかは必ず確認する必要があります。

(2)類似するデータで補完する

欠損しているデータと類似した特性を持つデータの値を使って補完するという方法もよく行われます。たとえば欠けているデータが60代男性であった場合、類似する属性である60代男性を特定してその値を代入するという方法です。(1)の代表値を属性別に計算して補完するということも行いますので、(1)と(2)の組み合わせで行うケースもあります。また、K近傍法など機械学習の技法を用いて「似ているサンプルを特定」し、それらを用いるというケースもあります。

(3)予測して補完する(回帰分析の活用など)

欠損している変数と、他の変数の関係性が明らかである場合は回帰分析などの手法を用いて一方を予測し、その値をもって補完する方法もよく行われます。そもそもどのようなプロジェクトにおいても変数間の関係性把握は行うでしょうから、その過程で実行するのもスマートではないでしょうか。

(4)多重代入法を活用する

利用可能なデータを用いて多重で代入するアプローチ、多重代入法もよく知られた方法です。多重代入法の内部で使われているアルゴリズムにも様々なものがあります。また、前述の方法と組み合わせることも多く行われます。

いずれの方法であっても「データの取得背景」を理解しておくと、なぜ欠損となったのかということを把握しやすくなり、対処の方法も選択しやすくなります。

新型コロナウィルスの感染拡大の影響を受け、私達の手元に集まるデータは欠損が多くなりがちです。そこには「欠損が起きた」という事実があります。私はデータセットに「欠損があり、欠損を補填した値である」という記録をもたせてデータを処理するように心がけています。そこには「データがない」という事実が有るためで、その意味合いにおいては「情報は有る」のです。

今回の二度目の緊急事態宣言の発令は、はじめての2020年4月とはデータの振る舞いも異なっているでしょうが、異常値・外れ値・欠損値が起きるだろうことは明らかです。データから何が起きているかを観測するのが分析者の仕事ではありますが、起きることがわかっていることに備えるのも分析者に必要な資質ではないでしょうか。

コラム担当スタッフ

菅 由紀子

株式会社Rejoui
代表取締役

株式会社サイバーエージェント、株式会社ALBERTを経て、2016年に株式会社Rejouiを設立。DX推進支援、データ分析・利活用コンサルティング、データサイエンス教育事業などを展開。
統計ソフトRやPythonを活用した分析入門講座をはじめ、学生、企業、官公庁へ向けた統計・データサイエンス学習講座を提供。日本行動計量学会、WiDS TOKYO @ YCU、日本RNAi研究会等、数々の学会およびシンポジウムに登壇。自身がアンバサダーを務める人材育成の活動(WiDS HIROSHIMA)が評価を受け、2021年度日本統計学会統計教育賞受賞。

一つ前のページに戻る

a2i セミナー風景イメージ

あなたも参加しませんか?

「アナリティクス アソシエーション」は、アナリティクスに取り組む皆さまの活躍をサポートします。会員登録いただいた方には、セミナー・イベント情報や業界の関連ニュースをいち早くお届けしています。

セミナー・イベント予定

予定一覧へ

コラムバックナンバー

バックナンバー一覧へ