Verteilungsanpassung

  • Ich möchte basierend auf diesen Anforderungen eine Verteilung (beliebig) anpassen:

    1. Erzeugt Ganzzahlwerte ( bevorzugt, aber nicht erforderlich)
    2. Mittelwert = 100
    3. Std = 114
    4. Quantile (25%, 50%, 75 %) = (6,39,200)
    5. Min = 0; Max = ~ 300 (aber $ \ infty $ ist akzeptabel);

    Poisson erfüllt die Kriterien 1,2 und fast 3, aber bei weitem nicht 4. Lognormal ... vielleicht

    EXTRA-Info: Wert 0 wird in 8% der Zeit und 300 in 18% produziert.

    Kann man so etwas tun? Oder benötigen wir weitere Informationen?

    24 January 2012
    HCAI
2 answers
  • Hier ist eine Funktion, die Ihnen den Einstieg erleichtert.

     function y = weirdrand()
    
    r = rand;
    if r < 0.08
        y = 0;
    elseif r < 0.25
        y = randsample(1:6, 1);
    elseif r < 0.5
        y = randsample(7:39, 1);
    elseif r < 0.75
        y = randsample(40:200, 1);
    elseif r < 0.82
        y = randsample(201:299, 1);
    else
        y = 300;
    end
    
    end
     

    Dies befolgt die Regeln 1, 4 5 und die zusätzliche Info. randsample (aus der Stats-Toolbox) gibt eine seiner Eingaben mit gleicher Wahrscheinlichkeit zurück.

    Die Vektorisierung bleibt dem Leser als Übung vorbehalten. In der Zwischenzeit

     y = arrayfun(@(x) weirdrand(), 1:1e4)
    mean(y) %typically around 107
    std(y)  %typically around 115
     
    24 January 2012
    Richie Cotton
  • (das ist eigentlich das gleiche wie Xi'ans Kommentar, aber ich habe auf math.stackexchange.com unabhängig von ihm geantwortet.)

    Es ist sicherlich möglich, aber Sie haben mehr Unbekannte (301) als Einschränkungen (9), was bedeutet, dass Sie viel Freiheit haben. Eine Möglichkeit, diese Freiheit einzuschränken, besteht darin, das Prinzip der maximalen Entropie zu verwenden. Es wird Ihnen die wahrscheinlichste Verteilung unter den Einschränkungen geben.

    Sie maximieren $ - \ sum_i p_i \ ln p_i $ unter den von Ihnen gegebenen Einschränkungen und wo der $ p_i steht $ sind die Wahrscheinlichkeiten aller diskreten Ereignisse $ i = 0, \ ldots, 300 $. Am besten tun Sie das numerisch.

    10 February 2012
    Raskolnikov