実際のデータから「デモ」データを作成:外観を損なうことなく変装


9

(私は統計学者ではないので、これに何をタグ付けするかはわかりません。これがどのフィールドに該当するかわかりません。さらに適切なタグを追加してください。)

私はデータ分析ソフトウェアを製造している会社で働いています。最新の製品をテストしてデモするための適切なデータセットが必要です。プログラムの出力が無意味になるため、乱数ジェネレータの出力をデータベースに入力することはできません。そのようなデータを取得する最も簡単な方法の1つはクライアントからです。実行した試験からの大量のデータがあります。さて、明らかにクライアントの実際のデータを公開することはできないため、少し変更する必要がありますが、実際のデータのように動作する必要があります。

ここでの目的は、一連のデータを取得し、「ファズ」を適用して、具体的にそれらのデータとして認識されないようにすることです。私の統計理論の記憶自体は少しあいまいなので、皆さんがこれを実行したいと思います。

基本的に、(クライアントから)取得したデータは、それ自体が(国または世界に)存在するすべてのデータのサンプルです。私が知りたいのは、サンプルをクライアントのサンプル母集団を強く代表しなくても、世界の母集団を大まかに代表したままにするために適用できる操作の種類です。

参考までに、私たちが知っている限り、私たちが持っているデータは一般的に大まかな正規(ガウス)分布に従います。

元のデータセットは広く利用可能ではありませんが、理論的にはいくつかの地域固有の特性から認識できます(これらの特性が何であるかは不明であり、誰かが十分なレベルに達しているかどうかは疑わしいですが、場所によって変動が存在することがわかっています)場所へ)。とにかく、実践よりもこの理論に興味があります。操作によって、パラメータXでソースデータセットを特定することが不可能(または少なくとも困難)であるかどうか、誰かが持っているかどうかがわかりますそもそもパラメータX。

私が思いついたアプローチは、読み取り値をさまざまなタイプに分離することです(多くのことを与えることなく、グループは「長さ」または「Xを実行するのにかかる時間」であるとしましょう。)それぞれについて、計算します標準偏差。次に、各値に、(n * stddev)の正と負の値の間にランダムな値を追加します。nは、データが十分に「ファジー」されるまで結果を調整するために使用できる小数です。一部の値は他の値よりも大幅に変動するため、静的範囲(たとえば、元の値の90%から110%の間でランダム)を単に適用したくありませんでした。一部の測定では、平均の10%はほとんど目立たない、しかし他の人ではそれはあなたを深刻な外れ値にします。

これは、元のデータのソースをマスクするのに十分ですか?そうでない場合、どの統計的測定によってデータは依然として識別可能であり、結果のデータを漠然と現実的に保ちながら、それらをどのようにマスクしますか?


3
関連する質問への最近のコメントで、私はこの主題に関するオンラインで入手可能ないくつかの調査報告へのリンクを提供しました。リンクは国勢調査データの偽装に焦点を当てていますが、それらの多くはデータ一般の偽装の問題に対処しています。
whuber

私が統計学者でも数学者でもないことを指摘するのは賢明かもしれません。私は貿易でプログラマーなので、アルゴリズムの説明を扱うことができますが、風変わりな代数は私の頭をパテに変えます。また、これは特に厳密である必要はありません。このデータが使用されるデモンストレーションは、一般的にプレゼンテーションです-担当者の1人がソフトウェアを使い回している10〜20分。誰かが長期間ソフトウェアを試用することを許可されている場合、彼らは自分のデータをそれに入れることから始めます-彼らは実際にデモデータを精査することはできません。
anaximander 2013年

2
以前にこれを行った統計家を雇うことをお勧めします。これを最初のロデオにしないでください。あなたはこれでひどい仕事をするのに夢中になりたくないのですか?arstechnica.com/tech-policy/2009/09/…を
デビッドJ.

回答:


2

いくつかの提案があります:

  1. それを無次元形式に変換します。0から1になり、2週間あたりのハロンや石炭のトンなどの単位がない場合は、認識が難しくなります。
  2. 小さな乱数をそれに追加します。ガウスとガウスを畳み込むと、別のガウスが得られます。それは本質を変えませんが、正確な値から移動することは誰かが数字をググるようにしてそれが何であるかを理解しようとし続けます。
  3. 回転させるのが好きです。いくつかのタイムステップの遅れをとって、1dデータセットから2dデータセットを作成することができます。次に、PCAまたはSVD(センタリングおよびスケーリング後)を使用して回転を決定できます。データが適切にローテーションされると、分散が変更され、情報自体が混乱します。回転した座標軸の1つを「サンプルデータ」としてレポートできます。
  4. 他のソースからの強く形成されたデータと混合することができます。したがって、サンプルデータが株式市場のデータである場合、天候や、ビートルズのお気に入りのサウンドトラックの平均ピッチからの変動に基づいて摂動を追加できます。人々がナスダックを理解できるかどうかにかかわらず、彼らはナスダック+ビートルズを理解するのに苦労します。

1

私は2段階のアプローチを提案します。最初のステップは、置換によるサンプリングです。ブートストラップで使用される方法と同様です。ではR

 newdata = sample(olddata, replace = TRUE)

これで、オリジナルと同じプロパティを持つ別のデータセットができました。2番目のステップは、ゼロを中心とする確率変数を追加することです。

 newdata = newdata + runif(1, min = -10, max = 10)

ゼロを中心に対称である確率変数はすべて機能し、分布の範囲は重要ではありません。

最後に、古いデータセットと同じプロパティを持つ完全に異なるデータセットが必要です。


1
「同じ特性を持つ」とはどういう意味ですか?少なくとも、分散と共分散は異なります。変数間の関係に興味がある場合、それは本当に重要です。
チャーリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.