数学
统计
正态分布
R(编程语言)

如何画出准确的正态分布?

正态分布的分布函数是什么,如何画出,用程序的请说出程序是如何画的?(不是概率密度函数与其图像)
关注者
7
被浏览
11,608

1 个回答

首先说明一点,就如我在

所有函数都有解析式吗? - 李昊鹏的回答

中回答的一样,正态分布的分布函数是没有解析式的,因此不可能通过解析式作出图像。下面以标准正态分布为例说明如何做出它的图像。

标准正态分布的分布函数是\Phi (x)=\int_{-\infty }^{x} \frac{1}{\sqrt{2\pi} } e^{-\frac{t^2}{2} }dt

它一个积分的形式,因此我们可以通过数值积分的方法得到它的近似图像。我们知道标准正态分布的密度函数距离0较远的地方取值很小,不妨近似认为当|t|>10时密度函数为0,则x<-10时近似有\Phi (x)=0x>10时近似有\Phi (x)=1.

于是可以这样作出\Phi (x)的图像:分别使x取值为[-10,10]的一些点,通过数值积分算出从-10开始积分的积分值,于是我们得到如下的若干组数据点(x_{1} ,y_{1}),(x_{2} ,y_{2}),...,(x_{n} ,y_{n}),其中x_{i} 为选取的节点,y_{i} 为对应的积分值。通过这些点可以进行曲线拟合,常用的方法有多项式插值、样条插值等。最后可以得出一条光滑的曲线作为\Phi (x)的近似图像。

上图

说明一下,我选的积分区间是[-10,10],节点是区间的20等点,最后的曲线用的是三次样条插值。

附上MATLAB程序:

clc
x=-10:1:10;
i=1;
y=ones(1,21);
syms t
while i<=21
 y(i)=int(1/(sqrt(2*pi))*exp(-t^2/2),-10,x(i));
 i=i+1;
end;
xx=-10:0.2:10;
yy=spline(x,y,xx);
plot(x,y,'.',xx,yy,'b');
发布于 2016-08-12 00:54