若知道概率密度函数(pdf),f(x)
如果已知累积分布函数(cdf), F(x)
均值 (μ) = ∫[x * F'(x)] dx
方差 (σ^2) = ∫[(x - μ)^2 * F'(x)] dx
其中,F'(x) 是 F(x) 的导数。
import sympy as sp
import scipy.integrate as spi
# 定义变量 x
x = sp.Symbol('x')
# 定义累积分布函数
def cdf(x):
return (1 / 10) * x - 4.8
# 求导
cdf_diff = cdf(x).diff(x)
# 积分上下限
dowm_limit=48
up_limit=58
# 把Symbol类型 转换为可计算的lambda函数(function类型)
x_lambda = sp.lambdify(x, x*cdf_diff)
# 计算均值
mean, error = spi.quad(lambda x: x_lambda(x), dowm_limit, up_limit)
print("均值为:", mean)
m_lambda = sp.lambdify(x, ((x - mean) ** 2)*cdf_diff)
# 计算方差
variance, error = spi.quad(lambda x: m_lambda(x), dowm_limit, up_limit)
print("方差为:", variance)