Skip to content

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 linspace, plot, xlabel, ylabel
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)$')
# approximate using the numerical integration
print(np.trapezoid(y*x,x))
print(2.*b/3)
1.3333501679250523
1.3333333333333333
print(np.trapezoid(y*x**2,x))
print(b**2/18)
2.000050503775157
0.2222222222222222
import sympy
x_1, b_1, p_1, m = sympy.symbols('x,b,p,m')
p_1 = 2 * x_1 / b_1 ** 2
print(p_1)
2*x/b**2
sympy.integrate(p_1 * x_1, (x_1, 0, b_1))
||[ \frac{2 b}{3} ||]
sympy.integrate(p_1 * x_1 ** 2, (x_1, 0, b_1))
||[ \frac{b^{2}}{2} ||]
sympy.integrate(p_1, (x_1, 0, m))
||[ \frac{m^{2}}{b^{2}} ||]
sympy.solve(m ** 2 / b_1 ** 2 - 0.5, m)
  • 0: ||[ - 0.707106781186548 b ||]
  • 1: ||[ 0.707106781186548 b ||]