欢迎光临散文网 会员登陆 & 注册

正态分布-北太天元学习28

2023-08-06 10:54 作者:卢朓  | 我要投稿

正态分布(又称为高斯分布)是最常见的连续分布之一。其概率密度函数由下式给出

     f(x) = 1/( sqrt(2*\pi) *\sigma) * exp( -(x-\mu)^2 / (2*\sigma^2) ),   

常数µ (我在上面的公式里写成了\mu) 和σ (我在上面的公式里写成了 \sigma)
是随机变量的平均值和标准偏差。我们使用 X~N(µ,σ)表示X是一个正态分布的随机变量,具有平均值(期望)µ和标准差σ。高斯密度函数的形状像一个钟(bell).


正态分布的密度函数f(x)的原函数没有解析表达式,因此
  P(X∈[a,b])= \int_{a}^{b} f(x) dx,
计算概率是相当麻烦的, 除了特殊的a,b值之外,一般不能解析求解。
过去,统计学家会将 X~N(µ,σ) 的正态分布转换到Z~N(0,1)分布。具体来说,就是
引入了随机变量
        Z=(X−µ)/σ
可以证明, 如果X~N(µ,σ),则Z~N(0,1)。从X到Z的转换过程称为标准化。
我们可以将Z视为X高于µ的标准偏差的数量。在科学计算软件还没有普及的年代,
统计学家使用Z表, 该表对一系列不同的a值给出了
    P(Z≤a) = \int_{-\infty}^{a} 1/\sqrt{2\pi} exp( -z^2 / 2 ) dz
的值

使用北太天元,我们可以绕过标准化的步骤,在北太天元安装目录下的examples目录下
有一个m函数, 名字叫 normcdf.m , 可以计算X~N(\mu,\sigma) 的累积分布函数
例如:
>> mu = 2 ;
>> sigma = 3 ;
>> normcdf(5,2,3)
ans =
  1x1 double
    0.8413

这就计算出了 X~N(2,3) 的概率P(X<= 5).

我们用北太天元的normcdf 函数计算不同正态分布的累积分布函数,展示如下

在北太天元中可以使用randn生成服从N(0,1)分布的随机数。
要从N(µ,σ)分布生成随机数,可以使用北太天元命令µ+randn*σ.

用到的北太天元的脚本如下,由于使用的normpdf 和 normcdf 都是在北太天元安装目录下

的examples目录的m函数,因此请把下面的脚本copy到北太天元安装目录下的examples/

然后在这个目录下运行下面的脚本
%北太天元 学习正态分布  gaussEx.m
close all
clear all

x = -5:.1:5;
pdf_标准正态分布 = normpdf(x) % 默认 mu = 0, sigma=1
pdf_正态分布1 = normpdf(x, 0, 3) % mu =0, sigma = 3
pdf_正态分布2 = normpdf(x, 0, 1/3) % mu =0, sigma = 1/3
pdf_正态分布3 = normpdf(x, -1, 1/3) % mu =0, sigma = 3

plot( x, pdf_标准正态分布, 'r-*', 'LineWidth',5);
hold on
 plot(x, pdf_正态分布1, 'b-*', 'LineWidth',5);
  plot(x, pdf_正态分布2, 'g-.', 'LineWidth',9);
  plot(x, pdf_正态分布3, 'k-*', 'LineWidth', 6);
  title("北太天元绘制多个正态分布的概率密度函数")
  xlabel("x");
  ylabel("概率密度函数f(x)")
  legend('标准正态分布N(0,1)', 'N(0,3)' ,'N(0,1/3)', 'N(-1,3)' )
  hold off
 
  figure(2)
  cdf_标准正态分布 = normcdf(x) % 默认 mu = 0, sigma = 1;
  cdf_正态分布1 = normcdf(x, 0, 3); % mu = 0, simga = 3;
  cdf_正态分布2 = normcdf(x, 0, 1/3); % mu = 0, simga = 1/3;
  cdf_正态分布3 = normcdf(x, -1, 1/3); % mu = -1, simga = 1/3;
  plot( x, cdf_标准正态分布, 'r-*', 'LineWidth',5);
hold on
 plot(x, cdf_正态分布1, 'b-*', 'LineWidth',5);
  plot(x, cdf_正态分布2, 'g-.', 'LineWidth',9);
  plot(x, cdf_正态分布3, 'k-*', 'LineWidth', 6);
    title("北太天元绘制多个正态分布的累积分布函数")
    xlabel("x");
  ylabel("累积分布函数F(x)")
   legend('标准正态分布N(0,1)', 'N(0,3)' ,'N(0,1/3)', 'N(-1,3)' )
hold off

figure(3)  
N = 1000;
x = randn(N,1);

sh = scatter(1:N, x,'filled')
set(sh, 'SizeData', 500)

hold on

sh2 = scatter(1:N, 3*randn(N,1)+5,'filled')
set(sh2, 'SizeData', 500)
 legend('N(0,1)', 'N(5,3)','FontSize',20)
title("北太天元产生的正态分布随机数")

hold off

正态分布-北太天元学习28的评论 (共 条)

分享到微博请遵守国家法律