偏态分布的计算
标准偏态分布为\(SN(0,1,\lambda)\),\(\lambda\)是偏态参数,对于服从偏态分布\(SN(\mu,\sigma,\lambda)\)的随机变量\(Y\)。其概率密度函数为
\(f_Y(y)=\frac{2}{\sigma}\phi (\frac{x-\mu}{\sigma })\Phi (\lambda \frac{x-\mu}{\sigma})\)
对于预测出的参数
\(\mu=4.393637\)
\(\sigma ^2=0.9362382\)
\(\lambda=0.00554496\)
我们对解题次数所占百分比可以认为是对应的概率密度函数在区间\((-\infty,1.5],(1.5,2.5],(2.5,3.5],(3.5,4.5],(4.5,5.5],(5.5,6.5],(6.5,+\infty)\)上的积分,例如在\((-\infty,1.5]\)上的积分如下
\(\int\limits_{-\infty}^{1.5} \frac{2}{\sigma}\phi (\frac{x-\mu}{\sigma })\Phi (\lambda \frac{x-\mu}{\sigma})dx
=\int\limits_{-\infty}^{1.5}\frac{2}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma ^2}}
\int\limits_{-\infty}^{\lambda\frac{x-\mu}{\sigma}}\frac{1}{\sqrt{2\pi }}e^{-\frac{t^2}{2} }dtdx\)
这个积分没有一个显式的解析解,需要使用数值积分的方法进行计算,比如 Simpson's Rule、Trapezoidal Rule 等等。
我们将积分区间分割成一系列小区间,并在每个小区间内使用数值积分方法计算被积函数的值。我们使用 Python 编写代码来实现数值积分。
得出各区间对应的百分比为
\((-\infty,1.5]:0.1\%,(1.5,2.5]:2.4\%,(2.5,3.5]:15.2\%,(3.5,4.5]:36.5\%,(4.5,5.5]:33.1\%,(5.5,6.5]:11.2\%,(6.5,+\infty):1.5\%\)
计算的python代码如下:
import numpy as np
from scipy.integrate import quad
def f(t):
return 1/np.sqrt(2*np.pi)*np.exp(-t**2/2)
def g(x):
return quad(lambda t: f(t), -np.inf, 0.00554496*(x-4.393637)/np.sqrt(0.9362382))[0]
def h(x):
return 2/np.sqrt(2*0.9362382*np.pi)*np.exp(-(x-4.393637)**2/(2*0.9362382))*g(x)
result = quad(h, -np.inf, 1.5)[0]
print(f"-np.inf, 1.5 The numerical value of the integral is: {result:.3f}")
result = quad(h, 1.5, 2.5)[0]
print(f"1.5, 2.5 The numerical value of the integral is: {result:.3f}")
result = quad(h, 2.5, 3.5)[0]
print(f"2.5, 3.5 The numerical value of the integral is: {result:.3f}")
result = quad(h, 3.5, 4.5)[0]
print(f"3.5, 4.5 The numerical value of the integral is: {result:.3f}")
result = quad(h, 4.5, 5.5)[0]
print(f"4.5, 5.5 The numerical value of the integral is: {result:.3f}")
result = quad(h, 5.5, 6.5)[0]
print(f"5.5, 6.5 The numerical value of the integral is: {result:.3f}")
result = quad(h, 6.5, np.inf)[0]
print(f"6.5 np.inf The numerical value of the integral is: {result:.3f}")