(Ich habe keine wirkliche Ahnung, womit ich das markieren soll, da ich kein Statistiker bin und nicht weiß, in welches Feld dies fällt. Sie können gerne weitere geeignete Tags hinzufügen.)
Ich arbeite für ein Unternehmen, das Datenanalyse-Software herstellt, und wir benötigen einen anständigen Datensatz, um unser neuestes Produkt mit zu testen und zu testen. Wir können die Datenbank nicht einfach mit der Ausgabe eines Zufallszahlengenerators füllen, da die Ausgaben des Programms unsinnig werden würden. Eine der einfachsten Möglichkeiten, solche Daten abzurufen, ist von einem Client. Wir haben eine große Datenmenge aus einem von uns durchgeführten Test. Natürlich können wir die tatsächlichen Daten eines Kunden nicht veröffentlichen, daher müssen wir sie ein wenig ändern, aber wir brauchen sie immer noch, um uns wie echte Daten zu verhalten.
Das Ziel hier ist es, ihren Datensatz zu nehmen und einen "Fuzz" darauf anzuwenden, so dass er nicht als spezifisch ihrer erkannt werden kann. Meine Erinnerung an die statistische Theorie ist selbst ein wenig verschwommen, deshalb möchte ich dies von euch ausführen lassen:
Im Wesentlichen sind die Daten, die wir (vom Kunden) haben, selbst eine Stichprobe aller vorhandenen Daten (im Land oder auf der Welt). Was ich wissen möchte, ist, welche Art von Operationen angewendet werden können, um die Stichprobe nicht mehr stark repräsentativ für die Stichprobenpopulation des Kunden zu machen, während sie dennoch ungefähr repräsentativ für die Weltbevölkerung bleibt.
Als Referenz folgen die uns vorliegenden Daten im Allgemeinen groben Normalverteilungen (Gaußschen).
Der ursprüngliche Datensatz ist nicht weit verbreitet, könnte aber theoretisch anhand einiger regional spezifischer Merkmale erkannt werden (wir wissen nicht, was diese Merkmale sind, und es ist zweifelhaft, ob jemand dies in ausreichendem Maße tut, aber wir wissen, dass Abweichungen von Ort zu Ort bestehen hinstellen). Wie auch immer, ich interessiere mich mehr für die Theorie als für die Praxis - ich möchte wissen, ob eine Operation es unmöglich (oder zumindest schwierig) macht, den Quelldatensatz anhand von Parameter X zu identifizieren, ob jemand hat oder arbeiten könnte oder nicht Parameter X an erster Stelle.
Der Ansatz, den ich mir ausgedacht habe, besteht darin, die Messwerte in die verschiedenen Typen zu unterteilen (ohne viel preiszugeben, nehmen wir an, eine Gruppe könnte "Länge" oder "Zeit, die für X benötigt wird" sein.) Berechnen Sie für jeden dieser Werte die Standardabweichung. Fügen Sie dann zu jedem Wert einen zufälligen Wert zwischen den positiven und negativen Werten von (n * stddev) hinzu, wobei n ein Bruchteil ist, mit dem ich das Ergebnis optimieren kann, bis die Daten ausreichend "unscharf" sind. Ich wollte nicht einfach einen statischen Bereich anwenden (z. B. zufällig zwischen 90% und 110% des ursprünglichen Werts), da einige Werte viel mehr oder weniger variieren als andere - bei einigen Messungen ist es kaum wahrnehmbar, 10% über dem Mittelwert zu liegen , aber in anderen macht es Sie zu einem ernsthaften Ausreißer.
Reicht dies aus, um die Quelle der Originaldaten zu maskieren? Wenn nicht, durch welche statistischen Maßnahmen wären die Daten noch identifizierbar, und wie würde ich diese maskieren, während die resultierenden Daten noch vage realistisch bleiben?
quelle
Antworten:
Es gibt einige Vorschläge:
quelle
Ich würde einen zweistufigen Ansatz vorschlagen. Der erste Schritt wäre das Abtasten mit Ersetzen - ähnlich der beim Bootstrapping verwendeten Methode. In
R
könnten Sie verwendenSie haben jetzt einen anderen Datensatz mit denselben Eigenschaften wie das Original. Der zweite Schritt wäre das Hinzufügen einer Zufallsvariablen, die um Null zentriert ist:
Jede Zufallsvariable, die um Null symmetrisch ist, funktioniert und die Grenzen der Verteilung sind nicht wichtig.
Am Ende sollten Sie einen völlig anderen Datensatz mit denselben Eigenschaften wie der alte Datensatz haben.
quelle