Googleデータアナリティクス：データ検証プロセス

# はじめに

本記事は、Googleデータアナリティクスのプロフェッショナル認定証のプログラムより、参照させて頂いています。興味を持った方は、是非受講してみてください。

https://www.coursera.org/professional-certificates/data-analytics-japanese

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/21a12cb1-a49a-802f-d903-6f68758eca0c.png" width="800">

# 確認、そして再確認

データ検証プロセスは データクリーニングの一種ですが 分析全体を通じて行う必要があります。 このプロセスでは、データの品質をチェックし 再確認することで、
- 完全性
- 正確性
- 安全性
- 一貫性

を確保します。 

データを理解し、 それがクリーンであることを確認し ビジネス上の目的に沿ったものであると 確認する必要もあります。 言い換えれば、データが意味を持つようにする、 ということでもあります。

時間と経験を重ねれば、ビジネスの知識は 身につく、ということを覚えておきましょう。 もう一つ、プロからのアドバイスです。 必要なときにできるだけ 多くの問いかけをすることで この作業はずっと楽になります。 

### 例１

ある家具販売店のデータを分析するとします。 販売価格列の値が常に、販売個数×商品価格と 等しいことを確認したいと思います。 そこで、新しい列に数式を追加し 掛け算をすることで、販売価格を再計算します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/b045888c-58dd-672f-1b10-d3553fb5088a.png" width="600">

合計を比較すると、少なくとも 1 つ 販売価格列の値と一致しない値があります。 分析を進めるためには、 その答えを見つけなければなりません。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/217d6323-c928-6af7-9c7b-4067945d387c.png" width="600">

調査したり人に聞いてみたりしたところ、 商品を 5 個以上買うと 30% 割引になることがわかりました。 もしこれを確認していなかったら 完全に見逃していたかもしれません。

データアナリストの仕事は、計算が重要だと よくわかりましたね。 計算をするときはいつも 正しい方法で計算したかを 確認することが大切です。 

### 例2

例えば、平日しか営業していない企業で 店頭プロモーションの効果を分析する場合について 考えてみましょう。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2358573/593708c1-3598-1405-2fe9-5f2bb6083536.png" width="600">

その際には 土日の売上データがないことを確認するでしょう。 もし土日の売上データがあったとしても、 それはデータ自体の問題ではなく 問題でさえない場合もあります。 何か理由があるはずでしょう。 もしかすると土日に特別なイベントを 開催しているかもしれません。 その場合、その週末の売上があるはずです。 それでも、平日だけを見るのであれば 週末の売上は 分析から除外した方がいいかもしれません。 このようなデータ検証を行うことで 計算ミスや分析の誤りを 防げる可能性があります。 

:::note info
どのような分析ツールを使っていても、 データ検証は必ず行うようにしましょう。
:::

# データ検証の種類

### <font color="MediumBlue">データ型</font>

| 項目 |  説明 | 
| :--- | :--- | 
| 目的 | データがフィールドに定義されたデータ型と一致するかどうかを確認します。 | 
| 例 | 小学校の学年 1 ～ 6 のデータ値は、数値データ型でなければなりません。 | 
| 制限 | データ値 13 はデータ型検証は通過できますが、範囲外の値です。この場合、データ範囲の検証も必要になります。 | 

### <font color="MediumBlue">データ範囲</font>

| 項目 |  説明 | 
| :--- | :--- | 
| 目的 | データがフィールドに定義された値の許容範囲内にあるかを確認します。 | 
| 例 | 小学校の学年のデータ値は 1 から 6 の範囲内でなければなりません。 | 
| 制限 |  データ値 5.5 は許容範囲内に含まれ、そして数値データ型としても成立します。しかし、 5.5 という学年は存在しないため、本来許容されるべきではありません。この場合、データ制約の検証も必要になります。 | 

### <font color="MediumBlue">データ制約</font>

| 項目 |  説明 | 
| :--- | :--- | 
| 目的 | データがフィールドの特定の条件または基準を満たしているかを確認します。これには、入力されたデータ型だけでなく、文字数など他の属性も含まれます。 | 
| 例 | 内容の制約：この場合、小学校の学年 1 ～ 6 のデータ値は整数でなければなりません。 | 
| 制限 | データ値 13 は整数なので、内容制約の検証は通過します。しかし、 13 は学年として存在しないため、許容されるべきではありません。この場合、データ範囲の検証も必要になります。 | 

### <font color="MediumBlue">データの一貫性</font>

| 項目 |  説明 | 
| :--- | :--- | 
| 目的 | データが他の関連データのコンテキストで意味をなすか確認します。 | 
| 例 | 製品の出荷日のデータ値は、製造日よりも早くなることはありません。 | 
| 制限 |　データの整合性は取れていても、不正確または間違っている場合があります。この場合、出荷日のデータ値が生産日より後であったとしても、不正確である可能性があるということです。  | 

### <font color="MediumBlue">データ構造</font>

| 項目 |  説明 | 
| :--- | :--- | 
| 目的 | データが設定された構造に沿っているか、または適合しているかを確認します。 | 
| 例 | ウェブページが正しく表示されるためには、設定された構造に沿っている必要があります。 | 
| 制限 | データ構造が正しくても、データそのものが不正確または誤っている場合があります。ウェブページのコンテンツが正しく表示されていても、間違った情報が含まれている可能性があるということです。 | 

### <font color="MediumBlue">コード検証</font>

| 項目 |  説明 | 
| :--- | :--- | 
| 目的 | ユーザーのデータ入力時に、アプリケーションのコードが前述のいずれかの検証を体系的に実行できているかどうかを確認します。 | 
| 例 | コード検証で発見されるよくある問題として、複数のデータ型が許可されている、データ範囲のチェックが行われていない、テキスト文字列の終了が適切に定義されていない、などがあります。 | 
| 制限 | コード検証では、データ入力で起こりうるすべてのバリエーションを検証できない可能性があります。 |