どういう意味でしょうか?
データの整合性を調べるんでしょうか?それともアンケート結果の信憑性でしょうか?
後者は守備範囲外なので勘弁してくださいww
前者についてですが、MD5というものがあり、どんなものでも1つに特定できるといわれています。
http://ja.wikipedia.org/wiki/MD5
これだと100%しかチェックできませんが、プログラムで一字一句あわせていけばどれだけ正しいかもチェックできます。
http://www.cybernetic-survival.net/md5.htm
とりあえずMD5の算出のみ載せておきます。
ちょっと意味を取りにくかったので間違えてたらすみません。
私はシステム系ではないですし、当件具体的に分かりませんので、何とも言えませんが、具体的にはどういうデータ要件なのでしょうか?。
ただ、似たような話であれば、初心者でも、マイクロソフトアクセスを使えば簡単にできます。
エクセルに地域住民1万行のデータベースがあるとします。住所、年齢、家族構成、などなど1行(1人)につき20列の項目がある仮定すると、データ単位は行ですので、1万行1万人分ですから、1万データです。1万データ×20項目なので、20万データではあっても1万データ(1万人分)です。
この1万人のデータが1人の漏れも無いのかどうか、点検する方法ならあります。ただし、正しいかどうか疑問なデータと、正しいとして手本に出来るデータの両方が必要となります。
上記例ですと、20万個1万人分のデータの正誤を点検したいとした時に
1万行1万人分の住民台帳か何かの氏名データをエクセルデータにしたものが手本としてあるならば、可能となります。
アクセスに両者のエクセルシートをテーブルとして載せておいて、氏名をKey列にして、照合させればいいだけです。初心者用のアクセス教本の水準ですぐ可能になります。氏名が一対一で対応し同じものが存在するものを抽出できます。例えばこれが90%以上であれば、90%以上は正と推測できます。
(氏名データがユニークでなければならない、とか、記述方法やデータ仕様が同じでなければならない、とか、照合結果が合致と出ても理論照合に過ぎませんから事実上は違うなど詳細はありますが)
ありがとうございます。
ちょっと私の意図とはずれていましたが、住所というテーマはずばり想定通りでした。
データの件数のチェックではなく、加工したデータが想定通りに変換されているかどうかをチェックしたいのですが、件数が多いのでどうしようかと思っています。
もちろんプログラム自体はテスト済みとします。といっても、住所データはナマモノですので最終的に抜き取り検査をして安心するための基準があれば知りたいところです。
ならば、1から10000の乱数を10000の90%つまり1000個生成して、それをインデクスとするレコードをチェック関数で調べる。
これってモンテカルロ法になるのかな?
ありがとうございます。
なるほど、モンテカルロ法というのがあるのですね。
ちょっと調べてみました。
解析的に解くことができない問題でも、十分多くの回数シミュレーションを繰り返すことにより、近似的に解を求めることができる。適用範囲が広く、問題によっては他の数値計算手法より簡単に適用できるが、高い精度を得ようとすれば計算回数が膨大になってしまうという弱点もある。
(IT用語辞典より)
確率的に完全に他に従属しないデータを扱う場合は有効のようですね。今回の場合は住所というデータの加工を想定しているので、ある程度の数をこなせば、残りもだいたい大丈夫だろうと想像できそうな気がします。つまりちこょっと従属してるというか・・・。このへん数学的になんとか表現できますでしょうか?
全数調査ができない場合、母集団から抽出した標本を評価し、母集団の性質を推測する手法があります。
データの仮説検定、と呼ばれるものですが、これが今回のケースに適用できるでしょう。
http://ja.wikipedia.org/wiki/%E4%BB%AE%E8%AA%AC%E6%A4%9C%E5%AE%9...
このような統計処理の場合いつでも、ある確率の上で判断を行います。
わかりずらい表現ですが、「90% の確率で正しいということを、何%の確かさで確認する。」という方法です。
統計をある程度理解できないと、正確な判断ができないと思いますが、世の中の製品の品質というものは、多くはこのような方法で管理されています。
ありがとうございます。
仮説検定、ですね。
なかなか本格的な話題になってきました。
「90% の確率で正しいということを、何%の確かさで確認する。」
ちょっと難しいですね。よくよく考えてみるとシステムのテストの場合はデータ変換の仕組み自体は100%正確でないといけないため、
「100% の確率で正しいということを、何%の確かさで確認する。」
ということになるのでしょうか?
紹介いただいたURLだけではちょっと計算するのは難しそうですね。
ざっくりとでいいのですが具体的な数字というのは計算出来るものなのでしょうか?(疑問点に矛盾があったらすみません)
全数か抜き取りかは、品質の重要性と、御社の品質の能力しだいです。
初期は要求どおり全数を検査して、品質が安定して全数の必要が無いということがデータで示せるようになれば、お客さんも納得して、抜き取り検査に移行させてくれると思います。
抜取検査についてはJISに計数値検査における抜取検査手順(JIS Z 9015)というのがあります。
これにのっとっておこなうのがベターでしょう。
このへんの検査の緩め方も品質の教科書に書いてありますので、ここは難しくて・・・と言わず勉強しないと顧客の信頼は得られませんし、そういう公のルールに基づいて検査していると言えないと、お客さんも困ってしまいます。
がんばってくださいhttp://q.hatena.ne.jp/1151923407
ご指摘ありがとうございます。
そうですね、全数がベストなのはおっしゃるとおりです。
ただ、品質の安定をデータで示しにくいのがシステム開発の難しいところでもあります。
計数値検査における抜取検査手順(JIS Z 9015)は大変参考になりました。勉強して、また何かの形で業務に生かせればと思います。
二回目の回答です。
少し誤解があるようなので、このあたりは書籍などをじっくり読まれた方が良いと思いますが、簡単に説明をします。
まず、100%正しくなければならない(正常に動作しなければならない)問題に対しては、基本的には全数検査です。
生命が関わる自動車や、交通機関に関わるものがこれに相当するでしょう。
一定の不良率が許される場合(もちろん、これは利益に直結するので、低いに越したことはありませんが)、サンプリングによる検査で品質が一定水準に保たれていることを試験しながら、全体の水準を推定するのです。
たとえば、99%の品質で製造でいていると仮定すると、不良で返品やクレームが起こる可能性がありますが、それに対する費用を出しても、全数検査を行うより製造効率が上がり、結果として利益が上がる場合、これでよしとするのです。冷蔵庫やテレビ、パソコンなどがこれにあたるでしょうか。
基本的には、サンプリングで検査したものの品質から、全数の品質を推定するものであって、品質をコントロールするのは、あくまで製造手法(今回の場合ならプログラムのアルゴリズム?)になります。
サンプリングした結果に問題があれば、これが期待した精度に収まるまで改善をしていく必要があります。
このときのサンプリングから母集団の分布を推定する手法が仮説検定です。
乱暴に言えば、10000のデータを処理し、そのうち100のデータを確認したら、処理不良が3個ありました。
といった場合でも、データの分布により、品質が95%以上である確かさが90%にも50%にもなるのです。
日本では古くからQC手法と呼ばれる改善プロセスがありましたが、統計的に改善手法を確立したものとしては、シックスシグマと呼ばれるものが有名です。
http://homepage1.nifty.com/QCC/sqc4/sqc4-cpk.htm
たびたびのご回答、ありがとうございます。
なるほど、一定の不良品が許される場合の推定方法として仮説検定というのがあるようですね。
不良品の発生が予期できない場合にはあまり使用できないというのが実際のところでしょうか。
ただ、「住所情報の加工」ということに限定すればデータのばらつきはある程度予測できて、その結果高い確かさでサンプリング可能と言うことになるのかもしれません。
どちらにしろ、長期にわたる経験と調査が必要のようですね。
ご回答ありがとうございます。
工場で行われている抜き取り検査みたいなものを、システムのテストに使うとどうなるのかなと、興味を持ちまして。
具体的には顧客データの1件1件について処理を施すスクリプトなのですが、最終的に何件ほどチェックすればほぼ正常に動いていると判断できるものでしょうか。
もちろんホワイトボックス的なチェックも必要でしょうが、ここはあくまでも興味本位の質問ということでご勘弁下さい。
最初のご回答でしたのでお礼は優遇させて頂きます。ありがとうございました。