Statistical parameters using probability density function#

Given probability density function, \(p(x)\)#

\( p = 2x/b^2\), \(0 < x < b\)

The mean value of \(x\) is estimated analytically:#

\(\overline{x} = \int\limits_0^b x\, p(x)\, dx = \int\limits_0^b 2x^2/b^2 = \left. 2x^3/3b^2\right|_0^b =2b^3/3b^2 = 2b/3\)

the median#

median: \( \int\limits_0^m p(x)\,dx = 1/2 = \int\limits_0^m 2x/b^2\,dx = \left. x^2/b^2 \right|_0^m = m^2/b^2 = 1/2\), \(m = b/\sqrt(2)\)

the second moment#

second moment: \(x^{(2)} = \int\limits_0^b x^2\, p(x)\, dx = \int\limits_0^b 2x^3/b^2 = \left. x^4/2b^2\right|_0^b =b^4/2b^2 = b^2/2\)

the variance is the second moment less the squared mean value#

\(var(x) = x^{(2)} - \overline{x}^2 = b^2/2 - 4b^2/9 = b^2/18\)

from pylab import *
import numpy as np
def p(x,b):
    return 2*x/(b**2)
b = 2
x = linspace(0,b,200)
y = p(x,b) 
plot(x,y)
xlabel('$x$')
ylabel('$p(x)$')
Text(0, 0.5, '$p(x)$')
../_images/e634bdc00b19923960174221378262e3381c1c197178a3cc9ae1661825bb52d3.png
# approximate using the numerical integration
print(trapz(y*x,x))
print(2.*b/3)
1.3333501679250523
1.3333333333333333
/tmp/ipykernel_484838/4270257086.py:2: DeprecationWarning: `trapz` is deprecated. Use `trapezoid` instead, or one of the numerical integration functions in `scipy.integrate`.
  print(trapz(y*x,x))
print(trapz(y*x**2,x))
print(b**2/18)
2.000050503775157
0.2222222222222222
/tmp/ipykernel_484838/337797482.py:1: DeprecationWarning: `trapz` is deprecated. Use `trapezoid` instead, or one of the numerical integration functions in `scipy.integrate`.
  print(trapz(y*x**2,x))
import sympy
sympy.var('x,b,p,m')
p = 2*x/b**2
print (p)
2*x/b**2
sympy.integrate(p*x,(x,0,b))
\[\displaystyle \frac{2 b}{3}\]
sympy.integrate(p*x**2,(x,0,b))
\[\displaystyle \frac{b^{2}}{2}\]
sympy.integrate(p,(x,0,m))
\[\displaystyle \frac{m^{2}}{b^{2}}\]
sympy.solve(m**2/b**2 - 0.5,m)
[-0.707106781186548*b, 0.707106781186548*b]