Frage

Wie verteile ich eine kleine Menge an Daten, die in zufälliger Reihenfolge in einer viel größeren Datenmenge;

Zum Beispiel habe ich mehrere tausend Zeilen ‚echten‘ Daten, und ich möchte in den ‚echten‘ Daten ein Dutzend oder zwei Zeilen von Steuerdaten in zufälliger Reihenfolge eingefügt werden soll.

Jetzt versuche ich nicht zu fragen, wie Zufallszahlengeneratoren zu verwenden, habe ich eine statistische Frage bin zu fragen, ich weiß, wie Zufallszahl zu erzeugen, aber meine Frage ist, wie ich sicher, dass diese die Daten in zufälliger Reihenfolge eingefügt werden während zur gleichen Zeit durch die Datei ziemlich gleichmäßig gestreut wird.

Wenn ich vertrauen nur auf die Generierung von Zufallszahlen gibt es eine Möglichkeit (wenn auch eine sehr kleine), dass alle meine Steuerdaten oder zumindest Klumpen wird, innerhalb einer recht engen Auswahl von ‚echten‘ Daten eingefügt werden. Was ist der beste Weg, dies geschieht zu stoppen?

Begriff es eine andere Art und Weise, ich will Steuerdaten in meinen realen Daten einfügen, ohne dass es eine Möglichkeit für einen Dritten ist zu berechnen, welche Zeilen Kontrolle ist und die sind echt.


Update: Ich habe mache dieses eine ‚Community Wiki‘ also, wenn jemand will, meine Frage bearbeiten, so dass es dann mehr Sinn macht richtig voran gehen.
Update:. Lassen Sie mich ein Beispiel versuchen (Ich will nicht abhängig diese Sprache oder Plattform machen, da es nicht eine Codierung Frage ist, es ist eine statistische Frage)

  • Ich habe 3000 Zeilen von ‚echten‘ Daten (dieser Betrag von Laufe ändern wird der Benutzer ausgeführt werden, abhängig von der Datenmenge).
  • Ich habe 20 Reihen von ‚Kontrolle‘ Daten (auch dies von der Anzahl der Steuerzeilen je ändern wird der Benutzer verwenden möchte, alles von Null nach oben).

Ich möchte nun diese 20 'control' Reihen ungefähr nach allen 150 Zeilen oder 'echte' Daten einfügen eingefügt wurden (3000/20 = 150). Aber ich will es nicht so genau, wie das sein, wie ich will nicht, dass die Steuerzeilen zu identifizieren sind einfach auf der Grundlage ihrer Position in den Ausgangsdaten.

Deshalb habe ich nichts dagegen einige der ‚Kontrolle‘ Reihen verklumpten werden oder dort sein einige Abschnitte mit sehr wenigen oder keinen ‚Kontrolle‘ Reihen überhaupt , aber im allgemeinen möchte ich die ‚Kontrolle‘ Reihen ziemlich gleichmäßig über die Daten verteilt werden.

War es hilfreich?

Lösung

Es gibt immer eine Möglichkeit, dass sie einander nahe kommen, wenn Sie tun es wirklich zufällig:)

Aber was ich tun würde, ist:

  1. Sie haben N Reihen von realen Daten und x von Kontrolle Daten
  2. Um einen Index von einer Reihe bekommen sollten Sie i-ten Steuer Zeile einzufügen, würde ich verwenden: N/(x+1) * i + r, wo r einige Zufallszahl ist, unterschiedlich für jede der Steuer Reihen, klein im Vergleich zu N/x. Wählen Sie eine beliebige Art und Weise r zu bestimmen, kann es sein, entweder Gaußsche oder auch Wohnung Verteilung. i ist ein Index der Kontrollreihe, also ist es 1<=i<x
  3. Auf diese Weise können Sie sicher sein, dass Sie Kondensation Ihre Steuerreihen in einem einzigen Ort zu vermeiden. Sie können auch sicher sein, dass sie nicht in regelmäßigen Abständen voneinander sein.

Andere Tipps

Hier ist mein Gedanke. Warum gehst du nicht einfach eine Schleife durch die vorhandenen Zeilen und „Flip eine Münze“ für jede Zeile entscheiden, ob Sie dort Zufallsdaten einfügen wird.

for (int i=0; i<numberOfExistingRows; i++)
{    
    int r = random();
    if (r > 0.5)
    {
        InsertRandomData();
    }    
}

Dies sollten Sie eine schöne zufällige Verteilung in den Daten.

Möchten Sie den 3000 realen Datenzeilen und 20 Kontrollzeilen für das folgende Beispiel (ich bin besser mit Beispiel als mit Englisch)

Wenn Sie die 20 Steuer Reihen so gleichmäßig wie möglich zu verteilen sind zwischen den 3000 echten Datenzeilen Sie einem an jeder 150. reale Datenzeile einfügen würden. So wählen Sie die Nummer, 150, für die nächste Einfügung Index.
a) Erzeugen Sie eine Zufallszahl zwischen 0 und 150 und aus dem Einführungsindex
subtrahiert b) Legen Sie die Steuer Reihe gibt.
c) Erhöhen Einfügungsindex von 150
d) Wiederholen Sie in Schritt a)

Natürlich ist dies ein sehr grober Algorithmus und es braucht einige Verbesserungen:)

Wenn die realen Daten groß oder viel größer als die Steuerdaten nur interarrival Intervalle für Ihre Steuerdaten erzeugen.

Pick So ein zufälliges Intervall, kopieren Sie heraus, dass viele Linien von realen Daten, Steuerdaten einzufügen, wiederholen, bis beendet. Wie das zufällige Intervall wählen?

Ich würde empfehlen, eine Gaußsche deviate mit dem Mittelwert unter Verwendung der realen Datengröße festgelegt durch die Steuerdaten Größe unterteilt, von denen das erstere bei Bedarf geschätzt werden könnten, anstatt gemessen oder als bekannt vorausgesetzt. Stellen Sie die Standardabweichung dieser Gaußschen auf, wie viel „Spread“ Sie bereit sind zu tolerieren. Kleinerer stddev bedeutet ein leptokurtisch Verteilungsmittel engere Einhaltung gleichmäßigen Abstand. Größere stdev bedeutet eine platykurtische Verteilung und lockere Einhaltung gleichmäßigen Abstand.

Was ist nun mit dem ersten und letzten Abschnitt der Datei? Das heißt: Was ist eine Insertion von Steuerdaten gleich am Anfang oder ganz am Ende? Eine Sache, die Sie tun können, ist zu kommen mit Sonderfall für diese Schätzungen ... aber ein netter Trick ist, wie folgt: Starten Sie Ihren „Index“ in den realen Daten bei minus der Hälfte der Gaußschen Mittelwert und erzeugen Sie Ihre erste abweichen. Keine Ausgabe keine realen Daten, bis der „Index“ in den realen Daten ist echt. Ein symmetrischer Trick am Ende der Daten auch ganz gut funktionieren soll (einfach: Erzeugen hält abweicht, bis Sie einen „Index“ mindestens die Hälfte des Gaußschen Mittelwert über das Ende der realen Daten erreichen Wenn der Index, kurz bevor diese aus der war. Ende, erzeugt Daten am Ende.

Sie mögen bei mehr sehen als nur Statistiken: es hilfreich ist, einen Algorithmus für diese Art der Sache in der Entwicklung auf rudimentäre Warteschlangentheorie zu suchen. Siehe Wikipedia oder die Turing Omnibus, die sich auf das Thema, dessen Titel eine schöne, kurze Kapitel hat, ist „Simulation“.

Auch: in einigen Umständen nicht-Gaußschen Verteilungen, insbesondere die Poisson-Verteilung, gibt bessere, natürlichere Ergebnisse für diese Art der Sache. Der Umriss Algorithmus oben noch gilt die Hälfte der Mittel der Verwendung, was auch immer Verteilung scheint recht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top