2
$\begingroup$

I have a derived distribution which I want to play with, which is of the form $$\frac{1}{\sigma^{2}}2^{-2+\frac{x}{10}} 5^{-1+\frac{x}{10}} e^{-\frac{1}{\sigma^{2}} 2^{-1+\frac{x}{10}} 5^{\frac{x}{10}}}\ln(10)$$ This is a $x \rightarrow 10^{x/20}$ transformation of the Rayleigh distribution, derrived by: $$R(x, \sigma) = \frac{x}{\sigma^{2}} e^{-x^{2}/(2\sigma)^{2}}$$ and consider $X = 20 \log_{10}(x)$, so $x = 10^{X/20}$. Then $$R_X(X, \sigma) = \frac{10^{X/20}}{\sigma^{2}} e^{-(10^{X/20})^{2}/(2\sigma)^{2}} \frac{d}{dX}10^{X/20}$$ Plugging into mathematica 10^(x/20)/\[Sigma]^2 Exp[-(10^(x/20))^2/ (2 \[Sigma]^2)]D[10^(x/20),x] gives the top expression.

The function appears well behaved for values I am interested in, here I choose \[Sigma] = 0.00005 which when plotted gives

Plot[(2^(-2 + x/10) 5^(-1 + x/10)E^(-((2^(-1 + x/10) 5^(x/10))/\[Sigma]^2))Log[10])/\[Sigma]^2, {x, -180, -50}, PlotRange -> All]

I want to use this function as a PDF so I can do some analysis I have tried

CustomDistribution[\[Sigma]_] := ProbabilityDistribution[Evaluate[10^(x/20)/\[Sigma]^2 Exp[-(10^(x/20))^2/ (2 \[Sigma]^2)]D[10^(x/20),x]],{x, -Infinity, Infinity}]

Which returns

Function[\[FormalX], (
 2^(-2 + \[FormalX]/10) 5^(-1 + \[FormalX]/10)
   E^(-((2^(-1 + \[FormalX]/10) 5^(\[FormalX]/10))/\[Sigma]^2))
   Log[10])/\[Sigma]^2]

But if I now try and plot this, with the same value for $\sigma$, as

Plot[PDF[CustomDistribution[\[Sigma]]][x],{x, -60, -160}]

I just get a flat line. Am I defining my PDF incorrectly? Is it possible to make a user defined PDF

$\endgroup$
5
  • $\begingroup$ Did you actually run the plot I submitted? What you say is demonstrably not true. $\endgroup$
    – user27119
    Commented Aug 10, 2019 at 16:26
  • $\begingroup$ Plot[(2^(-2 + x/10) 5^(-1 + x/10)E^(-((2^(-1 + x/10) 5^(x/10))/\[Sigma]^2))Log[10])/\[Sigma]^2, {x, -180, -50}, PlotRange -> All] It is defined. Just run it. I will add some text how I derived the expression. $\endgroup$
    – user27119
    Commented Aug 10, 2019 at 16:34
  • $\begingroup$ @wolfies See above. I genuinely don't understand why you say the expression is not valid for $x<0$. You can even demonstrate the transformation validity by simulation. Generate some Rayleigh distributed data transform with $20\log_{10}x$ and then you will see exactly the distribution outlined in the top equation. $\endgroup$
    – user27119
    Commented Aug 10, 2019 at 16:48
  • $\begingroup$ Using $Y$ for the transformed variable (rather than X and x) would avoid notation ambiguities. $\endgroup$
    – wolfies
    Commented Aug 10, 2019 at 16:59
  • $\begingroup$ Granted, the notation was ambiguous. But perhaps next time actually check code before making an assertion. $\endgroup$
    – user27119
    Commented Aug 10, 2019 at 17:11

1 Answer 1

5
$\begingroup$
Clear["Global`*"]

When defining a custom distribution, the constraints on the parameters should be included as Assumptions and the Evaluate should evaluate the entire expression rather than just the argument to ProbabilityDistribution

CustomDistribution[σ_] := 
 Evaluate@ProbabilityDistribution[
   10^(x/20)/σ^2 Exp[-(10^(x/20))^2/(2 σ^2)] D[10^(x/20), 
     x], {x, -Infinity, Infinity}, Assumptions -> σ > 0]

The constraints are then available with DistributionParameterAssumptions.

assume = DistributionParameterAssumptions[
  CustomDistribution[σ]]

(* σ > 0 *)

Verifying that the total probability for the distribution is valid

Assuming[assume,
 Integrate[PDF[CustomDistribution[σ], x],
  {x, -Infinity, Infinity}]]

(* 1 *)

The Mean is

μ[σ_] = Mean[CustomDistribution[σ]]

(* -((10 (EulerGamma + Log[1/(2 σ^2)]))/Log[10]) *)

μ[0.00005]

(* -85.5171 *)

With[{σ = 0.00005},
 Plot[PDF[CustomDistribution[σ], x],
  {x, -120, -60},
  PlotRange -> All]]

enter image description here

EDIT: It is more straightforward to let Mathematica do all of the work by using TransformedDistribution.

dist[σ_] = TransformedDistribution[20 Log10[x],
   x \[Distributed] RayleighDistribution[σ]];

PDF[dist[σ], x]

(* (2^(-2 + x/10) 5^(-1 + x/10) E^(-((2^(-1 + x/10) 5^(x/10))/σ^2))
  Log[10])/σ^2 *)

The constraint on the parameter is then inherited from RayleighDistribution

DistributionParameterAssumptions[dist[σ]]

(* σ > 0 *)
$\endgroup$
3
  • $\begingroup$ Wonderful as always. Thanks Bob. $\endgroup$
    – user27119
    Commented Aug 10, 2019 at 19:21
  • $\begingroup$ You can replace f[x_]:=Evaluate[...] with f[x_]=…, which seems a bit more direct in my opinion $\endgroup$
    – Lukas Lang
    Commented Aug 12, 2019 at 13:42
  • $\begingroup$ @LukasLang - I agree; however, I was trying to point out that the problem was improper placement of the Evaluate $\endgroup$
    – Bob Hanlon
    Commented Aug 12, 2019 at 13:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.