2
$\begingroup$

I would like to calculate the distribution function from the characteristic function. There is a formula given as

$$F_X(x)=\frac{1}{2}+\frac{1}{2\pi}\int_{0}^\infty \frac{e^{i w x}\phi(-w)-e^{-i w x}\phi(w)}{i w}\mbox{d}w$$ Actually, I want to evaluate $F_X(x)$ at some real number $b<0$. I wrote some codes in Mathematica with unfortunately no success. The codes give some results but they seem to be incorrect.

Here are my codes:

opts = {Method -> {Automatic, "SymbolicProcessing" -> None}, AccuracyGoal -> 8} b = -2; f1[x_] := PDF[NormalDistribution[2, 2], x] ff1[\[Omega]_] := InverseFourierTransform[f1[x], x, \[Omega]] qn1 =1/2 + 1/(2*Pi) NIntegrate[(Exp[I \[Omega] b]*ff1[-\[Omega]] -Exp[-I \[Omega] b]*ff1[\[Omega]])/(I \[Omega]), {\[Omega], 0,Infinity}, Evaluate@opts] NIntegrate[f1[x], {x, -Infinity, b}] 

What I expect is $qn1$ to be equal to the last line of my code. But it just $0$. I cannot see the problem. Perhaps someone can?

Thanks in advance

$\endgroup$

2 Answers 2

6
$\begingroup$

This is already bult into Mathematica

$Assumptions = {s > 0}; dist = NormalDistribution[m, s]; pdf[x_] = PDF[dist, x]; cf[w_] = CharacteristicFunction[dist, w]; pdf[x] == InverseFourierTransform[cf[w], w, x, FourierParameters -> {1, 1}] // Simplify 

True

cf[w] == FourierTransform[pdf[x], x, w, FourierParameters -> {1, 1}] == Expectation[Exp[I w x], x \[Distributed] dist] // Simplify 

True

EDITED:

(cdf[x_] = Integrate[pdf[t], {t, -Infinity, x}]) == CDF[dist, x] // Simplify 

True

For a specific example of deriving the PDF from the characteristic function

dist = NormalDistribution[2, 2]; cf[w_] = CharacteristicFunction[dist, w]; (pdf[x_] = InverseFourierTransform[cf[w], w, x, FourierParameters -> {1, 1}]) == PDF[dist, x] // Simplify 

True

(cdf[x_] = Integrate[pdf[t], {t, -Infinity, x}]) == CDF[dist, x] // FullSimplify 

True

pdf /@ Range[-4., 8., 2.] 

{0.00221592, 0.0269955, 0.120985, 0.199471, 0.120985, 0.0269955, 0.00221592}

Plot[pdf[x], {x, -4, 8}] 

enter image description here

cdf /@ Range[-4., 8., 2.] 

{0.0013499, 0.0227501, 0.158655, 0.5, 0.841345, 0.97725, 0.99865}

Plot[cdf[x], {x, -4, 8}] 

enter image description here

$\endgroup$
3
  • $\begingroup$ It seems I get $1/2$ for all $x$ not only for $x=-2$. I tried to draw $F_X$ for the given formula and mathematica gave me a constant line on $y=0.5$. $\endgroup$ Commented Jun 21, 2014 at 21:52
  • $\begingroup$ Specific example added above to demonstrate clearly that this works. $\endgroup$ Commented Jun 22, 2014 at 5:25
  • $\begingroup$ Thank you. The problem was about the Fourier parameters, which should have been chosen as $(1,1)$. $\endgroup$ Commented Jun 22, 2014 at 11:11
4
$\begingroup$
Clear["Global`*"] b = -2; f1[x_] := Evaluate@PDF[NormalDistribution[2, 2], x]; ff1[\[Omega]_] := Evaluate@InverseFourierTransform[f1[x], x, \[Omega]]; f1[x] ff1[x] (Exp[I \[Omega] b]*ff1[-\[Omega]] - Exp[-I \[Omega] b]*ff1[\[Omega]])/(I \[Omega]) // Simplify 

enter image description here

$\endgroup$
1
  • $\begingroup$ Thank you very much for the answer. I used "Evaluate@" so that I can draw a figure out of this formulation. $\endgroup$ Commented Jun 22, 2014 at 11:11

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.