Simple Science

最先端の科学をわかりやすく解説

# 統計学# 方法論

カナダの慈善情報の自動データテスト

この記事では、カナダのチャリティや寄付のデータ品質を確保するための自動テストについて調べてるよ。

― 1 分で読む


チャリティのデータ検証チャリティのデータ検証こと。慈善や寄付データベースの正確性を確保する
目次

この記事では、カナダの慈善団体、政治寄付、ロビー活動に関するデータの質をチェックするために設計された自動化テストについて話すよ。このテストはデータが正確で、時間が経っても一貫していて、他のデータソースと一致していることを確認するのに役立つんだ。私たちが作成したテスト、データで見つけたもの、今後の作業に関するアイデアについてカバーするよ。

背景

調査報道財団(IJF)は、カナダの慈善団体、政治寄付、政府のロビー活動に関連する8つの重要なデータベースを管理しているんだ。これらのデータベースは一般に公開されていて、簡単にアクセスできるよ。でも、これらのデータベースを構成する生データソースは質や完全性が地域ごとに大きく異なって、時間とともに変わることもあるんだ。だから、IJFは定期的にこれらのデータベースを更新しつつ、クリーンで標準化された状態を保つために、細かいデータパイプラインを構築したんだ。

自動データテストは、データが特定の基準に合っているかを確認するのに役立つ方法なんだ。これは、さまざまなソースから情報を集める複雑なデータベースを扱うときに特に便利だよ。さらに、すべてのデータセットは、データが後でどう分析されるかに影響を及ぼす基本的な考えや決定に基づいて構築されているんだ。

IJFのデータ検証を自動化するために、特定のライブラリを使ってテストのセットを作成したよ。このテストツールは、共有されるデータが信頼できて明確であることを確認するのに役立つんだ。これは、ニュースや学術研究にとって重要なんだ。

現在のデータ品質ツール

最近、公開された研究の透明性と信頼性についての懸念が高まっているんだ。いくつかの研究は以前の結果を再現しようとしたけど、多くは成功しなかった。この状況は、再現可能なワークフローやデータとコードへのアクセスを含む、より良い基準の必要性を浮き彫りにしたんだ。自動データ検証は、これを達成するための重要なツールなんだ。

関連する本では、再現可能で適切に文書化されたワークフローの重要性を論じているよ。データやコードの変更についてオープンであることが再現性にとって必須だと強調しているんだ。研究者やジャーナルがこれらの慣行を採用しなければ、再現できない仕事を発表し続けることになり、科学への公衆の信頼が失われたり、不正確な結論に至ることがあるんだ。

別のリソースでは、異なる段階でデータに期待される内容を示すことでコードの質を向上させるためのテストを作成するためのフレームワークを提供しているよ。このフレームワークは、妥当性、内部一貫性、外部一貫性のテストを含むんだ。妥当性は、データの型や値が正しいことを確認することに関連していて、内部一貫性はデータの部分が論理的に合計されるかをチェックするんだ。外部一貫性は、データが外部ソースと一致することを確認することを意味するよ。

特に機械学習プロジェクト向けに作られたさまざまなツールもあるんだ。これらのツールのいくつかは、これらのプロジェクトに使用されるデータのエラーを検出することに焦点を当てていて、データ処理の初期段階で問題を見つけて修正することの重要性を強調しているよ。

特定の状況のために設計されたツールに加えて、データテスト用の多くの汎用ツールも利用可能なんだ。いくつかのリソースは、Rのテストライブラリについての情報や例コードを提供していて、ユーザーがデータ特性をチェックできる関数が含まれているよ。Great Expectationsは、データを検証し文書化するためのPythonツールで、特定のデータセットに合わせたテストの作成も手助けしてくれるんだ。

データソース

このセクションでは、IJFのデータベースに供給される生データの概要を示すよ。IJFは、情報源のウェブサイトから得た新しい情報でこれらのデータベースを継続的に更新しているんだ。

慈善団体データ

慈善団体のデータベースには、慈善税務報告書の情報、慈善団体のスタッフの報酬の詳細、慈善団体が受け取った寄付に関する3つのデータセットが含まれているよ。この情報はカナダ歳入庁(CRA)から得られ、1990年以降のデータをカバーしているんだ。カナダの登録慈善団体は、法的に年次情報報告書を提出しなければならないんだ。これには、財務諸表や関連文書が含まれるよ。

慈善税務報告書のフォームは広範で、慈善団体の財務活動を示す多くの項目が含まれているんだ。CRAは年々これらのフォームに変更を加えていて、定義や項目番号の更新が含まれることもあるよ。たとえば、総負債は1990年以降異なる項目番号を持っているんだ。

スタッフの報酬データセットには、各慈善団体で働くスタッフの人数とその総報酬や個別の報酬が含まれているよ。寄付を受け取るデータは、慈善団体が他の適格な組織に寄付する際に提出するフォームから来ているんだ。

政治寄付データ

このデータベースは、連邦、州、地域レベルで行われた寄付をカバーしているよ。政治寄付の最初の記録は1993年に遡り、法的に報告が求められているんだ。異なる司法管轄区域では、寄付の種類、最大金額、寄付者についての異なるルールがあるんだ。

IJFは、さまざまな選挙機関のウェブサイトからこれらの寄付記録を集め、スプレッドシート、PDF、HTMLなどの形式でデータを保存しているよ。

ロビー活動データ

ロビー活動データベースは、ロビー登録、政府の資金提供、ロビー活動のコミュニケーション、以前に政府の地位を持っていたロビイストに関する情報の4つの要素で構成されているよ。ロビイストは登録し、活動に関する特定の詳細を開示する必要があって、これは地域によって異なることがあるんだ。

IJFは、さまざまな連邦、州、地域のウェブサイトからロビイスト登録情報をスクレイピングして、ロビー活動のトピックや以前の公職者に関する詳細を集めているんだ。

初期データクリーニング

前に示したように、IJFのデータベースを構築するために使用された生データは、異なる形式で構造的な違いがあったんだ。だから、データの使いやすさを改善するために、初期のクリーニングが必要だったんだ。

IJFは、慈善税務報告書のフォームの変遷を追跡するためのスプレッドシートを作成したんだ。その中から、公開データセットに含める約250の項目を選んだよ。

データは自己申告のフォームから取得されていて、年間の監査を受ける慈善団体はごく少数なので、人為的なエラーが一般的なんだ。IJFは慈善データセットをクリーンアップして標準化するために取り組んだよ。重複した列を削除したり、わかりやすくするために名前を変更したり、大文字と小文字の不一致などの問題を修正したりしたんだ。

寄付の記録が静的なPDFとしてしか入手できなかった場合、光学式文字認識(OCR)技術が必要で、それを使って使える形式に変換したんだ。このプロセスでエラーが発生することもあるから、IJFは手動でチェックしてミスを修正しているよ。

同様に、ロビー活動データもクリーニングが必要だったんだ。特に、名前や職位の使われ方が時間とともに変わることが多かったからね。

テストの開発

私たちは、妥当性、内部一貫性、外部一貫性に関する重要な原則に基づいてテストのスイートを開発したんだ。これらのテストを作成するために、データの元のフォーム、望ましいデータ形式、その生成方法を調査したよ。このプロセスが、妥当なデータの見た目、データに対する内部一貫性の意味、外部の基準との照合方法を理解するのに役立ったんだ。

妥当性テスト

妥当性テストは、主に欠損値のチェックに焦点を当てているよ。たとえば、すべてのデータセットに存在するべきユニークな識別子や日時値の欠損をチェックしたんだ。また、特定のパターンに一致する日付形式を確認するテストも作成したよ。

妥当性のもう一つの側面は、変数のクラスを確認することだね。たとえば、不適切なデータ型の分類は、分析結果に誤りを生じさせることがあるんだ。リレーショナルデータベースシステムは変数のクラスをチェックするけど、テストスイートを作成するときにこれらのチェックを含めることが重要だよ。

内部一貫性テスト

私たちは、欠損データがないべきさまざまな列に対して期待を設定したよ。このタイプのテストでは、クリーニングされたデータに密接に目を向けて、期待が他のデータ特性に依存するかもしれないんだ。

また、データの部分が論理的に合計されるかも確認したよ。たとえば、政治寄付データでは、金銭的寄付と非金銭的寄付が合計されたときに、報告された総額に一致するかを評価したんだ。慈善団体のデータベースでも同様のチェックを適用したよ。

ロビー活動データベースでは、一方のデータベースの各ユニークな登録が別のデータベースに対応するエントリーを持つべきだという期待を設定したよ。

最後に、すべての地域データがカナダの州や地域の正式名称と一致することを確認したんだ。

外部一貫性テスト

外部一貫性テストは、データの値を検証するために外部の基準を必要とするんだ。政治寄付データについては、地域ごとの政治寄付の法的制限を集め、その寄付額をこれらの法的制限と比較する予定だよ。

実施プロセス

私たちのテストを実施するために、PythonのGreat Expectationsライブラリを使用したよ。このツールはテスト用の多くの事前構築された関数を提供していて、さまざまなデータ特性を簡単にチェックできるんだ。

テストスイートを実行する前に、金銭列から非数値文字を削除し、特定の列を適切な形式に変換するためにデータを準備する必要があったんだ。このデータ操作によって、テストを効果的に実行できるようになったよ。

私たちは約10,000行のサンプルでテストを始めたんだ。多くのテストでデータに例外が見つかったよ。たとえば、政府の資金提供データベースにかなりの数の欠落した日付があったり、寄付が法的制限を超えていたりする例があったんだ。

例外が見つかったとき、私たちはそれが本当のエラーなのか、それともデータのユニークな特性に基づいて期待を調整する必要があるのかを評価したんだ。このプロセスによって、データにおけるパターンを探って期待を設定するのに役立ったよ。

初期の発見

これまでに、寄付やロビー活動データベースにテストを適用したんだけど、大部分の期待は慈善団体データベースに設定されたよ。初期の結果では、寄付データの期待がほぼうまくいっていて、ほとんどのフィールドでヌルエントリはなかったんだ。

寄付に関しては、高い割合のデータが期待を満たしていて、ただ一部の特定の地域で法的寄付限度を超えていたよ。ロビー登録のテストも成功率が非常に高く、わずかな例外しかなかったんだ。

慈善データを評価するとき、20,000件のランダムサンプルをテストしたんだけど、このテストでは、使用されたフォームに基づいて値があってはいけない項目にいくつかの不一致が発覚したよ。

全体的に、プログラムでデータをテストしたときに、多くの期待が満たされていたんだ。失敗したテストはさらなる調査を引き起こし、期待を調整したり、クリーニング手法を改善したり、生データの不正確さを特定したりする機会を与えてくれたよ。

今後の作業

このデータベースに関連する今後の作業にはいくつかの道があるよ。

政治寄付については、2022年以前の寄付を法的制限と照らし合わせるための包括的なスキーマを作成する予定だよ。これは、法的制限が時間とともにどう変わったかについての詳細な情報を集めることを含むんだ。

慈善団体データベースのテストも強化したいと思っているよ。一つの目標は、さまざまな項目が報告された合計に合致するかを確認することだよ。これらのチェックを自動化することで、新しいデータが入ってきたときも継続的に検証できるようになるんだ。

もう一つの焦点は、ロビー活動データベースの自由テキストデータのテストを開発することだよ。これにより、名前の形式や他のテキスト情報の不一致をキャッチできるようになるんだ。

最後に、大規模言語モデルを使ってデータ検証テストを生成し、複雑なデータセットを扱う人々のプロセスを簡素化できることに興味があるんだ。

結論

データを検証することは、信頼性が高く透明な研究を生み出すために重要なんだ。自動データ検証テストを実施することで、IJFのデータの質や一貫性をチェックすることができ、より明確な理解やより堅牢な分析につながったんだ。

学んだ重要な教訓

  1. データを理解すること: パブリックデータと内部データベースのしっかりとした理解が、正確な期待を作成するためには不可欠だよ。

  2. データの整形が必要: テスト要件に合うようにデータ形式を調整することは重要だよ。

  3. 反復的プロセス: データ検証の実施は継続的なプロセスで、作業を管理可能な部分に分けることで利益が得られるよ。

  4. ドメイン知識が重要: データに精通した専門家と協力することで、正確なテストを作成し、誤解を避けることができるんだ。

データ検証の作業は決して完全ではないけれど、この取り組みはデータを効果的に理解し使用するための継続的な改善の基盤を築いているよ。

類似の記事