DistributionFitTest [] für benutzerdefinierte Verteilungen in Mathematica

8

Ich habe PDFs und CDFs für zwei benutzerdefinierte Verteilungen, ein Mittel zum Erzeugen von RandomVariates für jeden und einen Code zum Anpassen von Parametern an Daten. Etwas von diesem Code, den ich vorher gepostet habe:

Berechnung der Erwartung für eine benutzerdefinierte Verteilung in Mathematica

Einige davon folgen:

%Vor%

Ich kann mehr von dem Code posten, wenn jemand ihn sehen muss, aber ich denke, das oben Gesagte gibt einen guten Eindruck von der bisherigen Vorgehensweise.

Jetzt brauche ich eine Möglichkeit, DistributionFitTest [] mit diesen Distributionen in etwa so zu verwenden:

%Vor%

Ah, aber das geht nicht. Stattdessen erhalte ich eine Fehlermeldung, die wie folgt beginnt:

  

"Das Argument   dplDist [3.77,1.34, -2.65,0.4] sollte sein   eine gültige Distribution ... "

So scheint es, dass DistributionFitTest [] diese Verteilungen nicht als Verteilungen erkennt.

Ich sehe nicht, wie die Verwendung von TagSet in diesem Fall helfen würde, es sei denn, man kann TagSet verwenden, um DistributionFitTest [] zu geben, was es benötigt, um diese benutzerdefinierten Distributionen zu identifizieren.

Kann mir irgendjemand einen Rat geben, wie er das schaffen soll? Ich würde gerne DistributionFitTest [] mit benutzerdefinierten Distributionen wie dieser verwenden oder einige Tests durchführen, um die Anpassungsgüte zu bewerten.

Thx - Jagra

    
Jagra 15.06.2011, 17:19
quelle

1 Antwort

15

Da diese Frage viele Male auftaucht, denke ich, dass es höchste Zeit ist, einige Rezepte zu erstellen, wie man eine benutzerdefinierte Distribution für v8 richtig kocht.

Verwenden Sie TagSet , um für Ihre Distribution zu definieren:

  1. DistributionParameterQ , DistributionParameterAssumptions , DistributionDomain
  2. Definieren Sie PDF , CDF , SurvivalFunction , HazardFunction
  3. Definieren Sie den Zufallszahlen-Generierungscode, indem Sie Random'DistributionVector
  4. codieren

Dadurch wird alles außer der Parameterschätzung für Ihre Distribution funktionieren.

Ihr Fehler war, dass dplDist keine DistributionDomain -Definition hatte und beide nlDist und dplDist nicht hatten DistributionParameterQ und DistributionParameterAssumptions Definitionen.

Ich habe Ihren Definitionen Folgendes hinzugefügt:

%Vor%

Und jetzt hat es funktioniert:

%Vor%     
Sasha 15.06.2011, 18:19
quelle