Generieren Sie Zufallsvariablen aus einer Wahrscheinlichkeitsverteilung

Pleastry

Ich habe einige Variablen aus meinem Python-Datensatz extrahiert und möchte aus den vorhandenen Distributionen einen größeren Datensatz generieren. Das Problem ist, dass ich versuche, dem neuen Datensatz eine gewisse Variabilität zu verleihen, während das ähnliche Verhalten beibehalten wird. Dies ist ein Beispiel für meine extrahierten Daten, die aus 400 Beobachtungen bestehen:

Value    Observation Count     Ratio of Entries
1        352                    0.88
2        28                     0.07
3        8                      0.02
4        4                      0.01
7        4                      0.01
13       4                      0.01

Jetzt versuche ich, diese Informationen zu verwenden, um einen ähnlichen Datensatz mit 2.000 Beobachtungen zu generieren. Ich kenne die numpy.random.choiceund die random.choiceFunktionen, möchte aber nicht genau die gleichen Verteilungen verwenden. Stattdessen möchte ich Zufallsvariablen (die Wertespalte) basierend auf der Verteilung generieren, jedoch mit größerer Variabilität. Ein Beispiel dafür, wie mein größerer Datensatz aussehen soll:

Value         Observation Count        Ratio of Entries
1             1763                     0.8815
2             151                      0.0755
3             32                       0.0160
4             19                       0.0095
5             10                       0.0050
6             8                        0.0040
7             2                        0.0010
8             4                        0.0020
9             2                        0.0010
10            3                        0.0015
11            1                        0.0005
12            1                        0.0005
13            1                        0.0005
14            2                        0.0010
15            1                        0.0005

Die neue Verteilung könnte also geschätzt werden, wenn ich meine Originaldaten mit einer exponentiellen Abklingfunktion versehen würde. Ich bin jedoch nicht an kontinuierlichen Variablen interessiert. Wie komme ich darum herum und gibt es eine bestimmte oder mathematische Methode, die für das, was ich versuche, relevant ist?

Verrückter Physiker

Es hört sich so an, als ob Sie Daten basierend auf dem in der zweiten Tabelle beschriebenen PDF generieren möchten. Das PDF ist so etwas wie

0 for x <= B
A*exp(-A*(x-B)) for x > B

ADefiniert die Breite Ihrer Verteilung, die immer normalisiert wird, um eine Fläche von 1 zu haben. Dies Bist der horizontale Versatz, der in Ihrem Fall Null ist. Sie können es zu einer Ganzzahlverteilung machen, indem Sie mit binning ceil.

Die CDF eines normalisierten abklingenden Exponentials ist 1 - exp(-A*(x-B)). Im Allgemeinen besteht eine einfache Möglichkeit, eine benutzerdefinierte Verteilung zu erstellen, darin, einheitliche Zahlen zu generieren und diese über die CDF zuzuordnen.

Glücklicherweise müssen Sie das nicht tun, da scipy.stats.exponbereits die Implementierung bereitgestellt wird, nach der Sie suchen. Alles, was Sie tun müssen, ist an die Daten in Ihrer letzten Spalte anzupassen, um sie zu erhalten A( Bist eindeutig Null). Sie können dies leicht mit tun curve_fit. Beachten Sie, dass die AKarten 1.0/scalein der PDF-Sprache angezeigt werden.

Hier ist ein Beispielcode. Ich habe hier eine zusätzliche Komplexitätsebene hinzugefügt, indem ich das Integral der Zielfunktion von n-1bis nfür ganzzahlige Eingaben berechnet habe , wobei die Gruppierung für Sie bei der Anpassung berücksichtigt wurde.

import numpy as np
from scipy.optimize import curve_fit
from scipy.stats import expon

def model(x, a):
    return np.exp(-a * (x - 1)) - exp(-a * x)
    #Alternnative:
    # return -np.diff(np.exp(-a * np.concatenate(([x[0] - 1], x))))

x = np.arange(1, 16)
p = np.array([0.8815, 0.0755, ..., 0.0010, 0.0005])
a = curve_fit(model, x, p, 0.01)
samples = np.ceil(expon.rvs(scale=1/a, size=2000)).astype(int)
samples[samples == 0] = 1
data = np.bincount(samples)[1:]

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Generieren Sie Zufallsvariablen aus einer Verteilungsfunktion mithilfe der inversen Stichprobe

MATLAB: Generieren Sie zwei unabhängige Zufallsvariablen aus verschiedenen Verteilungen

Extrahieren Sie Werte aus einer Menge gemäß einer bestimmten Wahrscheinlichkeitsverteilung

Generieren Sie eine Wahrscheinlichkeitsverteilung oder ein Glättungsdiagramm aus Punkten, die Wahrscheinlichkeiten enthalten

Generieren einer Zufallsvariablen in Golang mit math / rand

Wählen Sie zufällig Zahlen in einem Bereich aus einer bestimmten Wahrscheinlichkeitsverteilung aus

So wählen Sie eine Zufallsvariable aus einer Wahrscheinlichkeitsverteilung unterschiedlicher Größe

Auswahl einer Zufallsvariablen aus einem Array

Suchen Sie mit SymPy eine Transformation zu einer Zufallsvariablen X aus Uniform (0, 1)

Berechnen Sie Zufallsvariablen aus gruppierten Datenrahmen

So generieren Sie eine zufällige Wahrscheinlichkeitsverteilung julia

Generieren Sie eine Adjazenzmatrix aus einer Karte

So generieren Sie unabhängige, identisch verteilte (iid) Zufallsvariablen in Python

Zufallsvariablen generieren und speichern

Generieren unabhängiger Zufallsvariablen

Generieren Sie eine eindeutige Wortliste aus einer Wortliste einer Liste

So stellen Sie sicher, dass der ausgewählte Optionswert mit dem aus einer Gleichung mit Zufallsvariablen generierten Wert übereinstimmt

Wie simuliert man aus einer (willkürlichen) kontinuierlichen Wahrscheinlichkeitsverteilung?

Abtastung aus einer gegebenen Wahrscheinlichkeitsverteilung unter Verwendung von R.

Machen Sie eine Wahrscheinlichkeitsverteilung aus zwei Verteilungen in Julia

Erstellen Sie einen Vektor von Daten, die einer Wahrscheinlichkeitsverteilung folgen

Generieren Sie rekursiv Kompositionen aus einer geordneten Liste

So generieren Sie mehrere Steuerelemente aus einer Steuervariablen

So generieren Sie XML aus einer Datentabelle in c#

Generieren Sie einen gestalteten PDF-Bericht aus einer Webanwendung

Generieren Sie eine gestaltete Komponente aus einer serialisierten Zeichenfolge

So generieren Sie eine MSI aus einer Windows-Anwendung

Generieren Sie eine visuelle Darstellung aus einer Tabelle mit Beziehungsgewicht

Generieren Sie eine Sammlung von Daten aus einer Objektsammlung

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  3. 3

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  4. 4

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  7. 7

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  8. 8

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  9. 9

    Eclipse Oxygen - Projekte verschwinden

  10. 10

    Wie wählt man Unterschiede mit drei Tabellen aus?

  11. 11

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  12. 12

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  13. 13

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  14. 14

    Wie kann ich den Kaskadenmodus global einstellen?

  15. 15

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  16. 16

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  17. 17

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  18. 18

    Was ist schneller: SUM über NULL oder über 0?

  19. 19

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  20. 20

    Kann ich ein Tkinter-Canvas erstellen, das mehrere Zeilen in einem Text-Widget umfasst?

  21. 21

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

heißlabel

Archiv