Slide 1

Slide 1 text

validate パッケージで データを検証する @y__mattu 2022-02-19 HiRoshima.R #7 LT

Slide 2

Slide 2 text

誰︖ • 松村優哉 • 出⾝: 計量経済、ベイズ統計、 因果推論 • お仕事: データサイエンティスト& データエンジニア in 広告会社 • ⾔語: R, Python • Tokyo.R, Japan.R運営 • 近況:2⽉に転職しました︕

Slide 3

Slide 3 text

宣伝 Rユーザのための RStudio[実践]⼊⾨ 第2版 好評発売中!!

Slide 4

Slide 4 text

今⽇のお話 • 統計的データクリーニングについて • validateパッケージの紹介

Slide 5

Slide 5 text

データクリーニングとは • データクリーニング≒データ前処理の最も基本的な部分 • 数値表現の統⼀ • ⽇付型の統⼀ • ⽂字列の正規化・前処理 • ⽋測データの特定・補完 • エラーデータの特定・修正 • 今⽇の話題は、エラーデータの特定、つまりデータ検証がメイン 統計的な処理が必要な領域

Slide 6

Slide 6 text

データ検証の必要性 • データは意図せず変化してしまう • 前処理⼯程のミス • 集計のミス • そもそもデータソースの時点で変なデータが含まれている • 適当なタイミングで、⽬の前のデータが「正しいか」の検証(バリ デーション)を⼊れると良い データの読み込み データの前処理 分析・可視化 処理1 処理2 処理3 検証 検証 検証

Slide 7

Slide 7 text

validateパッケージ • CRANからインストール • 使うデータをロード

Slide 8

Slide 8 text

retailersデータ • 架空の⼩売業者の財務データ

Slide 9

Slide 9 text

check_that()による簡単なチェック ルールを記述。ここでは以下の2つ - 売上⾼は0より⼤きい - 従業員⼀⼈当たりの⼈件費は50(50,000ギルダー)未満

Slide 10

Slide 10 text

検証結果の可視化

Slide 11

Slide 11 text

検証ルール作成、適⽤、結果確認の分離 検証 ルール 作成 適⽤ 確認 validate::validator() validate::confront() summary(), validate::aggregate() ルール 作成 適⽤

Slide 12

Slide 12 text

検証ルールの作成⽅法(発展編1) • レコード間での⽭盾のチェック • 例: 市と通りが同じなら郵便版後も同じでなくてはならない • 簡単なデータで検証 2レコード⽬が間違い

Slide 13

Slide 13 text

検証ルールの作成⽅法(発展編1) • レコード間での⽭盾のチェック • 例: 市と通りが同じなら郵便版後も同じでなくてはならない ルールをチルダでつなぐ

Slide 14

Slide 14 text

検証ルールの作成⽅法(発展編2) • マクロの定義 • ルールが多くなると、似たようなルール(平均が0以上など)が多くなって きて、書くのが⾯倒 := 演算⼦で共通ルールを 作っておけば、再利⽤可能

Slide 15

Slide 15 text

検証ルールの作成⽅法(発展編3) • 変数グループ • a>=m, b>=mみたいに「m(平均)が0以上」は共通してるので何⾏も書き たくない • 以下の2つは同じ

Slide 16

Slide 16 text

検証結果をデータフレームとして出⼒ • aggregate() • retailorデータの例に戻る ルール 作成 適⽤ 確認

Slide 17

Slide 17 text

検証ルールを外部ファイルで定義 • validator()に渡す検証ルールは外部ファイル(yaml)にて定義可能 • ルールが多くなってくるとこちらのほうが便利かも rules.yml

Slide 18

Slide 18 text

まとめ • データ前処理の途中で検証(バリデーション)をするのは⼤切 • Rでデータ検証ならvalidateパッケージが便利

Slide 19

Slide 19 text

参考資料 • R⾔語 - データ検証パッケージ "validate” • validateパッケージのドキュメント • 『統計的データクリーニングの理論と実践』

Slide 20

Slide 20 text

Enjoy!