现代科学运算-matlab语言与应用
东北大学 http://www.icourses.cn/home/ (薛定宇)
《高等应用数学问题的MATLAB求解(第四版)》
代码可在matlab r2016b 运行。
09 概率论与数理统计问题的计算机求解
09.01 常用概率分布
概率与概率密度函数
什么是概率?
随机事件发生的可能性
如果随机变量
ξ
ξ
落入任意(a, b)区间的概率
F(a≤ξ≤b)=∫bap(x)dx
F
(
a
≤
ξ
≤
b
)
=
∫
a
b
p
(
x
)
d
x
则称
p(x)
p
(
x
)
为概率密度函数, 满足
p(x)≥0,∫∞−∞p(x)dx=1
p
(
x
)
≥
0
,
∫
−
∞
∞
p
(
x
)
d
x
=
1
概率分布函数
由概率密度可以定义概率分布函数
F(x)=∫x−∞p(t)dt
F
(
x
)
=
∫
−
∞
x
p
(
t
)
d
t
物理意义:
概率分布函数F(x)−随机变量ξ满足ξ≤x发生的概率
概
率
分
布
函
数
F
(
x
)
−
随
机
变
量
ξ
满
足
ξ
≤
x
发
生
的
概
率
分布函数性质:
函数F(x)单调非减函数
0≤F(x)≤1,F(−∞)=0,F(∞)=1
0
≤
F
(
x
)
≤
1
,
F
(
−
∞
)
=
0
,
F
(
∞
)
=
1
常见分布的概率密度函数与分布函数
Possion分布
征态分布
F分布
T分布
χ2
χ
2
分布
Gamma分布
Rayleigh分布
后缀: pdf, cdf, inv, rnd, stat, fit
例如:batapdf(), gamcdf(), raylrnd()
pdf(‘beta’, …), cdf(‘gam’, …), random(‘rayl’, …)
inv->icdf, rnd->random, fit->fittest
关键词betaevgamlognncfnormt分布名称Beta分布极值分布Gamma分布对数征态分布非零F分布征态分布T分布有关参数a,bμ,σa,λμ,σk,δμ,σk关键词binoexpgeomvnnctpoissunif分布名称二项式分布指数分布几何分布多变量征态分布非零T分布Poisson分布均匀分布有关参数n,pλpμ,σk,δλa,b关键词chi2fhygenbinncx2ray1wbl分布名称χ2分布F分布超几何分布负二项式分布非零χ2分布Rayleigh分布Webull分布有关参数kp,qm,p,nv1,v2,δk,δba,b
关
键
词
分
布
名
称
有
关
参
数
关
键
词
分
布
名
称
有
关
参
数
关
键
词
分
布
名
称
有
关
参
数
b
e
t
a
B
e
t
a
分
布
a
,
b
b
i
n
o
二
项
式
分
布
n
,
p
c
h
i
2
χ
2
分
布
k
e
v
极
值
分
布
μ
,
σ
e
x
p
指
数
分
布
λ
f
F
分
布
p
,
q
g
a
m
G
a
m
m
a
分
布
a
,
λ
g
e
o
几
何
分
布
p
h
y
g
e
超
几
何
分
布
m
,
p
,
n
l
o
g
n
对
数
征
态
分
布
μ
,
σ
m
v
n
多
变
量
征
态
分
布
μ
,
σ
n
b
i
n
负
二
项
式
分
布
v
1
,
v
2
,
δ
n
c
f
非
零
F
分
布
k
,
δ
n
c
t
非
零
T
分
布
k
,
δ
n
c
x
2
非
零
χ
2
分
布
k
,
δ
n
o
r
m
征
态
分
布
μ
,
σ
p
o
i
s
s
P
o
i
s
s
o
n
分
布
λ
r
a
y
1
R
a
y
l
e
i
g
h
分
布
b
t
T
分
布
k
u
n
i
f
均
匀
分
布
a
,
b
w
b
l
W
e
b
u
l
l
分
布
a
,
b
Poisson分布
Poisson分布的概率密度为:
p(x)=λxx!e−λx,x=0,1,2,3,⋯
p
(
x
)
=
λ
x
x
!
e
−
λ
x
,
x
=
0
,
1
,
2
,
3
,
⋯
其中,
λ
λ
为正整数
Poisson分布的概率密度函数:
y = poisspdf(x,
λ
λ
), y = pdf(‘poiss’, x,
λ
λ
)
F = poisscdf(x,
λ
λ
), F = cdf(‘poiss’, x,
λ
λ
)
x = poissinv(F,
λ
λ
), x = icdf(‘poiss’, F,
λ
λ
)
例9-1 Poisson分布
Poisson分布的概率密度函数与分布函数曲线
Poisson分布的参数
λ=1,2,5,10
λ
=
1
,
2
,
5
,
10
x = [0:15]';
y1 = [];
y2 = [];
lam1 = [1, 2, 5, 10];
for i = 1:length(lam1)
y1 = [y1, poisspdf(x, lam1(i))];
y2 = [y2, poisscdf(x, lam1(i))];
end;
stem(x, y1);
line(x, y1);
figure;
stem(x, y2);
line(x, y2);
也可以使用pdf()、cdf()、icdf()
征态分布
征态分布的概率密度函数为:
p(x)=12π−−√σe−(x−μ)22σ2
p
(
x
)
=
1
2
π
σ
e
−
(
x
−
μ
)
2
2
σ
2
其中,
μ和σ2
μ
和
σ
2
分别为征态分布的均值和方差
征态分布的概率密度函数调用格式:
y=normpdf(x,μ,σ)y=pdf(′norm′,x,μ,σ)
y
=
n
o
r
m
p
d
f
(
x
,
μ
,
σ
)
y
=
p
d
f
(
′
n
o
r
m
′
,
x
,
μ
,
σ
)
F=normcdf(x,μ,σ)F=cdf(′norm′,x,μ,σ)
F
=
n
o
r
m
c
d
f
(
x
,
μ
,
σ
)
F
=
c
d
f
(
′
n
o
r
m
′
,
x
,
μ
,
σ
)
x=norminv(F,μ,σ)x=icdf(′norm′,F,μ,σ)
x
=
n
o
r
m
i
n
v
(
F
,
μ
,
σ
)
x
=
i
c
d
f
(
′
n
o
r
m
′
,
F
,
μ
,
σ
)
例9-2 征态分布
征态分布的概率密度函数与分布函数曲线
(μ,σ2)参数选择为(−1,1),(0,0.1),(0,1),(0,10),(1,1)
(
μ
,
σ
2
)
参
数
选
择
为
(
−
1
,
1
)
,
(
0
,
0.1
)
,
(
0
,
1
)
,
(
0
,
10
)
,
(
1
,
1
)
x = [-5: 0.02: 5]';
y1 = [];
y2 = [];
mu1 = [-1, 0, 0, 0, 1];
sig = sqrt([1, 0.1, 1, 10, 1]);
for i = 1: length(mu1)
y1 = [y1, normpdf(x, mu1(i), sig(i))];
y2 = [y2, normcdf(x, mu1(i), sig(i))];
end;
plot(x, y1);
figure;
plot(x, y2);
Rayleigh分布
Rayleigh分布的概率密度为:
p(x)=⎧⎩⎨xb2e−x22b2x≥00x<0
p
(
x
)
=
{
x
b
2
e
−
x
2
2
b
2
x
≥
0
0
x
<
0
该函数是b的函数
y = raylpdf(x, k), y = pdf(‘rayl’, x, k)
F = raylcdf(x, k), F = cdf(‘rayl’, x, k)
x = raylinv(F, k), x = icdf(‘rayl’, F, k)
例9-7 Rayleigh分布
Rayleigh分布的概率密度函数与分布函数曲线
参数b = 0.5, 1, 3, 5
x = [-eps: -0.02: -0.05, 0: 0.02: 5];
y2 = [];
x = sort(x');
b1 = [.5, 1, 3, 5];
y1 = [];
for i = 1: length(b1)
y1 = [y1, raylpdf(x, b1(i))];
y2 = [y2, raylcdf(x, b1(i))];
end;
plot(x, y1);
figure;
plot(x, y2);
随机数与伪随机数生成
为随机数–数学方式生成的,rand(), randn()
生成不同种类分布的随机数的函数调用格式
生成n x m 的 gamma 分布的伪随机数矩阵
A= gamrnd(a,
λ
λ
, n, m)
A = random(‘gam’, a,
λ
λ
, n, m)
生成
χ2
χ
2
分布的伪随机数矩阵
A = chi2rnd(k, n, m)
A = random(‘chi2’, k, n, m)
09.02 概率计算
离散数据的直方图与饼图表示
一组离散的检测数据
x1,x2,⋯,xn
x
1
,
x
2
,
⋯
,
x
n
数据区间(a, b), m等分,
b1=a,bm+1=b
b
1
=
a
,
b
m
+
1
=
b
每个子区间(bi,bi+1)落入数据的个数为fi,频度fi/n
每
个
子
区
间
(
b
i
,
b
i
+
1
)
落
入
数
据
的
个
数
为
f
i
,
频
度
f
i
/
n
matlab求解:
k = hist(x, b);
f = k/n;
p = f/(
b2−b1
b
2
−
b
1
)
直方图: bar(b, f);
饼图:pie(f)
例9-10 Rayleigh分布的直方图
生成30000个伪随机数,满足 Rayleight 分布
参数 b = 1
b = 1;
p = raylrnd(1, 30000, 1);
x = 0: .1: 4;
x1 = x+ 0.05;
yy = hist(p, x1);
yy = yy/(30000*0.1);
bar(x1, yy),
y = raylpdf(x, 1);
line(x, y);
figure;
pie(yy)
例9-11 离散数据的概率表示
随机测得200只荧光灯流明数据,文件c9dlamp.dat,绘图
% A = load('c9dlamp.dat');
A = load('E:\\Work\\201806\\math_4th\\c9dlamp.dat');
bins = [500: 100: 1500] + 50;
f = hist(A, bins)/length(A);
bar(bins, f)
figure;
pie(f)
连续概率问题求解
三个求取概率的公式:
ξ≤x
ξ
≤
x
的概率:
P[ξ≤x]=F(x)
P
[
ξ
≤
x
]
=
F
(
x
)
x1≤ξ≤2
x
1
≤
ξ
≤
2
的概率:
P[x1≤ξ≤x2]=F(x2)−F(x1)
P
[
x
1
≤
ξ
≤
x
2
]
=
F
(
x
2
)
−
F
(
x
1
)
ξ≥x
ξ
≥
x
的概率:
P[ξ≥x]=1−F(x)
P
[
ξ
≥
x
]
=
1
−
F
(
x
)
例9-12 Rayleigh分布概率计算
已知随机变量x为Rayleigh分布,且b = 1
求出随机变量x值落入区间[0.2, 2]及区间[1,
∞
∞
)的概率
% 落入区间[0.2, 2] P = F(2) - F(0.2)
b = 1;
p1 = raylcdf(0.2, b);
p2 = raylcdf(2, b);
P1 = p2 - p1
落入区间[1, ∞ ∞ )
p1 = raylcdf(1, b);
P2 = 1 - p1
例9-13 联合概率计算
二维随机变量(
ξ,η
ξ
,
η
)的联合概率密度为:
p(x,y)={x2+xy3,0≤x≤1,0≤y≤20,others
p
(
x
,
y
)
=
{
x
2
+
x
y
3
,
0
≤
x
≤
1
,
0
≤
y
≤
2
0
,
o
t
h
e
r
s
求出
P(ξ<1/2,η<1/2)P=∫a−∞∫b−∞p(x,y)dydx
P
(
ξ
<
1
/
2
,
η
<
1
/
2
)
P
=
∫
−
∞
a
∫
−
∞
b
p
(
x
,
y
)
d
y
d
x
syms x y;
f = x^2 + x*y/3;
P = int(int(f, x, 0, 1/2), y, 0, 1/2)
例9-14 概率计算
假设某两地A、B间有6个交通岗
在各个交通岗遇到红灯的概率均相同,为p=1/3
中途遇到红灯次数满足二项式分布B(6, p)
试求出从A出发到达B至少遇到一次红灯的概率
x = 0: 6;
y = binopdf(x, 6, 1/3);
P = 1 - y(1) % or P = sum(y(2:end))
p0 = 0.05: 0.05: 0.95;
y = [];
for p = p0
y = [y 1-binopdf(0, 6, p)];
end;
plot(p0, y, 1/3, P, 'o');
例9-15 利用Monte Carlo 方法计算
π
π
试用 Monte Carlo 方法近似求出
π
π
的值
π≈4N1/N
π
≈
4
N
1
/
N
数学求解公式:
N1/N≈π/4
N
1
/
N
≈
π
/
4
N = 100000;
x = rand(1, N);
y = rand(1, N);
i = (x.^2 + y.^2) <= 1;
N1 = sum(i);
p = N1/N*4
例9-16 定积分近似
试用 Monte Carlo 法计算积分
∫31[1+e−0.2xsin(x+0.5)]dx
∫
1
3
[
1
+
e
−
0.2
x
sin
(
x
+
0.5
)
]
d
x
假设
f(t)≥0
f
(
t
)
≥
0
N1N≈1M(b−a)∫baf(x)dx
N
1
N
≈
1
M
(
b
−
a
)
∫
a
b
f
(
x
)
d
x
∫baf(x)dx≈M(b−a)N1N
∫
a
b
f
(
x
)
d
x
≈
M
(
b
−
a
)
N
1
N
计算公式:
∫baf(x)dx≈M(b−a)N1N
∫
a
b
f
(
x
)
d
x
≈
M
(
b
−
a
)
N
1
N
f = @(x)1 + exp(-0.2*x).*sin(x+0.5);
a = 1;
b = 3;
M = 2;
N = 1000000;
x = a+(b-a)*rand(N, 1);
y = M*rand(N, 1);
i = y <= f(x);
N1 = sum(i);
p = M*N1*(b-a)/N,
% 解析解
syms x;
I = vpa(int(1 + exp(-0.2*x)*sin(x+0.5), x, a, b))
例9-17 Brown运动仿真
单个粒子的Brown运动仿真
粒子位置的递推公式
xi+1=xi+σΔxi,yi+1=yi+σΔyi
x
i
+
1
=
x
i
+
σ
Δ
x
i
,
y
i
+
1
=
y
i
+
σ
Δ
y
i
运动步距满足标准征态分布
选择比例因子 \sigma = 1
n = 1000;
x = zeros(2, n);
y = zeros(2, n);
s = 1;
r1 = randn(2, n);
for i = 2:n
x(1, i) = x(1, i-1) + s*r1(1, i);
y(1, i) = y(1, i-1) +s*r1(2, i);
end;
plot(x(1, :), y(1, :), '-o')
09.03 统计量计算与分析
随机变量的均值与方差
连续随机变量x的概率密度为p(x)
数学期望E[x]:
E[x]=∫∞−∞xp(x)dx
E
[
x
]
=
∫
−
∞
∞
x
p
(
x
)
d
x
数学方差D[x] :
D[x]=∫∞−∞(x−E[x])2p(x)dx
D
[
x
]
=
∫
−
∞
∞
(
x
−
E
[
x
]
)
2
p
(
x
)
d
x
例9-18 统计量计算
用积分方法求Gamma分布(a > 0,
λ
λ
> 0)的均值与方差
Gamma分布的概率密度
p(x)=⎧⎩⎨⎪⎪λaxa−1Γ(a)e−λx,x≥00,x<0
p
(
x
)
=
{
λ
a
x
a
−
1
Γ
(
a
)
e
−
λ
x
,
x
≥
0
0
,
x
<
0
syms x;
syms a lam positive;
p = lam^a*x^(a-1)/gamma(a)*exp(-lam*x);
m = int(x*p, x, 0, inf);
s = simplify(int((x-1/lam*a)^2*p, x, 0, inf));
p, m, s
% s需要在早期版本计算,matlab2008a
结果: m=aλ,s=aλ2 m = a λ , s = a λ 2
统计量数值计算
在实际中测出一组样本数据
x=[x1,x2,x3,⋯,xn]T
x
=
[
x
1
,
x
2
,
x
3
,
⋯
,
x
n
]
T
它们的均值和方差分别为 – 样本均值方差
x¯=1n∑i=1nxi,s^2x=1n∑i=1n(xi−x¯)2
x
¯
=
1
n
∑
i
=
1
n
x
i
,
s
^
x
2
=
1
n
∑
i
=
1
n
(
x
i
−
x
¯
)
2
m = mean(x)
s2 = var(x)
无偏方差:
s2x=1n−1∑i=1n(xi−x¯)2
s
x
2
=
1
n
−
1
∑
i
=
1
n
(
x
i
−
x
¯
)
2
s = std(x)
称
sx≥0
s
x
≥
0
为 “标准差”
例9-22 伪随机数的统计量
生成一组30000个征态分布随机数
均值为 0.5, 标准差为1.5
分析数据实际的均值,方差和标准差
减小随机变量个数有何影响
p = normrnd(0.5, 1.5, 30000, 1);
mean(p), var(p), std(p)
使用300个随机数:
p = normrnd(0.5, 1.5, 300, 1);
mean(p), var(p), std(p)
随机变量的矩
假设x为连续随机变量, 且p(x)为其概率密度函数
该变量的r阶原点矩
vr=∫∞−∞xrp(x)dx
v
r
=
∫
−
∞
∞
x
r
p
(
x
)
d
x
r阶中心矩
μr=∫∞−∞(x−μ)rp(x)dx
μ
r
=
∫
−
∞
∞
(
x
−
μ
)
r
p
(
x
)
d
x
可见,
v1=E[x],μ2=D[x]
v
1
=
E
[
x
]
,
μ
2
=
D
[
x
]
例9-21 Gamma分布的矩量计算
考虑Gamma分布(a > 0, \lambda > 0)的原点矩和中心矩
syms x;
syms a lam positive;
p = lam^a*x^(a-1)/gamma(a)*exp(-lam*x);
for n=1:5
m = int(x^n*p, x, 0, inf)
end;
原点矩通项表达式: vk=1λk∏i=0k−1(a+i) v k = 1 λ k ∏ i = 0 k − 1 ( a + i )
% 直接求出任意阶次的原点矩
syms k;
m = simplify(int((x)^k*p, x, 0, inf))
% 计算中心矩,要用早期版本
for n = 1:7
s = simplify(int((x-1/lam*a)^n*p, x, 0, inf)),
end;
中心矩没有显而易见的通项公式
矩的数值计算
给定的随机数为一些样本点
x1,x2,⋯,xn
x
1
,
x
2
,
⋯
,
x
n
该随机变量的r阶原点矩
Ar=1n∑i=1nxri
A
r
=
1
n
∑
i
=
1
n
x
i
r
matlab:
Ar
A
r
= sum(x.^r)/length(x)
该随机变量的r阶中心矩
Br=1n∑i=1n(xi−x¯)r
B
r
=
1
n
∑
i
=
1
n
(
x
i
−
x
¯
)
r
matlab:
Br
B
r
= moment(x, r)
例9-22 矩量的数值计算
给定一组30000个征态分布随机数
均值为 0.5, 标准差为 1.5, 试求出随机数的各阶矩
A = [];
B = [];
n = 1: 5;
p = normrnd(0.5, 1.5, 30000, 1);
for r = n
A = [A, sum(p.^r)/length(p)];
B = [B, moment(p, r)];
end;
A, B
syms x;
A1 = [];
B1 = [];
a = -inf;
b = inf;
p = 1/(sqrt(2*sym(pi))*3/2)*exp(-(x-1/2)^2/(2*(3/2)^2));
for i = 1:5
A1 = [A1, int(x^i*p, x, a, b)];
B1 = [B1, int((x-1/2)^i*p, x, a, b)];
end;
A1, B1
09.04 协方差计算
多变量随机数的协方差分析
随机数
(x1,y1),(x2,y2),(x3,y3),⋯,(xn,yn)
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
(
x
3
,
y
3
)
,
⋯
,
(
x
n
,
y
n
)
为二维随机变量对(x,y)的样本
二维样本的协方差
sxy=1n−1∑i=1n(xi−x¯)(yi−y¯)
s
x
y
=
1
n
−
1
∑
i
=
1
n
(
x
i
−
x
¯
)
(
y
i
−
y
¯
)
二维样本的相关系数
η=sxysxsy
η
=
s
x
y
s
x
s
y
协方差矩阵计算
协方差矩阵
C=[cxxcyxcxycyy]
C
=
[
c
x
x
c
x
y
c
y
x
c
y
y
]
其中,
cxx=σ2x,cxy=cyx=sxy,cyy=σ2y
c
x
x
=
σ
x
2
,
c
x
y
=
c
y
x
=
s
x
y
,
c
y
y
=
σ
y
2
计算协方差矩阵的函数调用格式
C = cov(X)
其中,X的各列均表示不同的随机变量的样本值
例9-23 征态分布的协方差矩阵
使用matlab产生4各满足标准征态分布的随机变量
并求出其协方差矩阵
四列信号相互独立
p = randn(30000, 4);
R = cov(p)
多变量正态分布的联合概率密度及分布函数
给定n组正态分布随机变量
ξ1,ξ2,⋯,ξn
ξ
1
,
ξ
2
,
⋯
,
ξ
n
, 它们的均值分别为
μ1,μ2,μ3,⋯,μn
μ
1
,
μ
2
,
μ
3
,
⋯
,
μ
n
, 可以构成一个均值向量
μ
μ
, 这些变量的协方差矩阵为
Σ2
Σ
2
, 这些随机变量的联合概率密度为:
p(x1,x2,⋯,xn)=12π−−√Σ−1e−12xTΣ−2x
p
(
x
1
,
x
2
,
⋯
,
x
n
)
=
1
2
π
Σ
−
1
e
−
1
2
x
T
Σ
−
2
x
其中,
x=[x1,x2,⋯,xn]T,μ=[μ1,μ2,⋯,μn]T
x
=
[
x
1
,
x
2
,
⋯
,
x
n
]
T
,
μ
=
[
μ
1
,
μ
2
,
⋯
,
μ
n
]
T
求随机变量的联合概率密度的函数调用格式
p = mvnpdf(X,
μ,Σ2
μ
,
Σ
2
)
p = pdf(‘mvn’, X,
μ,Σ2
μ
,
Σ
2
)
其中, X 为n列矩阵
每一列表示一个随机变量
例9-24 协方差矩阵与随机数分布
给定
μ=[−1,2]T,Σ2=[1,1;1,3]
μ
=
[
−
1
,
2
]
T
,
Σ
2
=
[
1
,
1
;
1
,
3
]
, 联合概率密度函数
mu1 = [-1, 2];
Sigma2 = [1 1; 1 3];
[X, Y] = meshgrid(-3:0.1:1, -2:0.1:4);
xy = [X(:), Y(:)];
p = mvnpdf(xy, mu1, Sigma2);
P = reshape(p, size(X));
surf(X, Y, P)
若协方差矩阵为对角线矩阵,新概率密度函数
Sigma2 = diag(diag(Sigma2));
p = mvnpdf(xy, mu1, Sigma2);
P = reshape(p, size(X));
surf(X, Y, P)
多变量正态分布随机数生成
产生多变量正态分布随机数的函数调用格式
R = mvnrnd(
μ,Σ2
μ
,
Σ
2
, m)
R = random(‘mvn’,
μ,Σ2
μ
,
Σ
2
, m)
该函数可以生成m组满足多变量正态分布的随机变量,返回的R为m x n 矩阵,每一列表示一个随机变量
例9-24 协方差矩阵与随机数分布
给定
μ=[−1,2]T,Σ2=[1,1;1,3]
μ
=
[
−
1
,
2
]
T
,
Σ
2
=
[
1
,
1
;
1
,
3
]
,
二维正态分布的伪随机数的分布情况
mu1 = [-1, 2];
Sigma2 = [1 1; 1 3];
R1 = mvnrnd(mu1, Sigma2, 2000);
plot(R1(:, 1), R1(:, 2), 'o');
figure;
Sigma2 = diag(diag(Sigma2));
R2 = mvnrnd(mu1, Sigma2, 2000);
plot(R2(:, 1), R2(:, 2), 'o');
09.05 离群值检测
离群值、四分位数与盒子图
均值的意义与局限性
例:姚明给一群小朋友讲NBA经历
均值(平均身高)没有意义
中位数(median, 仲数)的定义
x1≤x2≤⋯≤xn
x
1
≤
x
2
≤
⋯
≤
x
n
n为奇数:
x(n+1)/2
x
(
n
+
1
)
/
2
n为偶数:
(xn/2−1+xn/2+1)/2
(
x
n
/
2
−
1
+
x
n
/
2
+
1
)
/
2
matlab求解: median(x)
离群值(outliers):
由中位数将向量x分成两部分
这两部分的中位数称为四分位数(quantile)
第一分位数:
q1
q
1
第二分位数:
q2
q
2
, 中位数(仲数)
第三分位数:
q3
q
3
四分位数向量: q = [
q1,q2,q3
q
1
,
q
2
,
q
3
]
matlab求解: q = quantile(x, 3)
四分位距(interquartile range, IQR)的定义
第3四分位数与第1四分位数的差: IQR =
q3−q1
q
3
−
q
1
离群值:
正常值的区间:
(q1−1.5IQR,q3+1.5IQR)
(
q
1
−
1.5
I
Q
R
,
q
3
+
1.5
I
Q
R
)
正常值区间之外的都是离群值
盒子图绘制:boxplot(x)
上边界与下边界:
(q1−1.5IQR,q3+1.5IQR)
(
q
1
−
1.5
I
Q
R
,
q
3
+
1.5
I
Q
R
)
例9-26 盒子图绘制
一组数据,存于c9dlamp.dat文件
四分位数求值及盒子图绘制
% A = load('c9dlamp.dat');
A = load('E:\\Work\\201806\\math_4th\\c9dlamp.dat');
q = quantile(A, 3)
boxplot(A)
sort(A')
离群值检测
单变量数据
Rutgers大学 Niccolo Battistini编写的 outliers()函数
[
v1,v2
v
1
,
v
2
] = outliers(v, opts,
α
α
)
选项’grubbs’, quartile’
显著性水平:
α
α
function [Y out]=outliers(X,method,alpha)
% Reports vector of observations Y which are not outliers and vector of
% observations out which are outliers according to either Grubbs' test or
% the Quartile method applied to initial vector of observations X
%
% USAGE: [Y out]=outliers(X,method,alpha)
%
% INPUT:
% X Nx1 vector of observations
% method string (either 'grubbs' or 'quartile')
% alpha significance level of Grubbs' test (alpha in [0,1]) or
% range looseness parameter of Quartile method
%
% OUTPUT:
% Y (N-k)x1 vector of observations in X which are not outliers
% out kx1 vector of observations in X which are outliers
% Author: Niccolo Battistini (Rutgers University)
if nargin~=3;
error('Wrong # of arguments')
end
switch method
% Grubbs' test
case 'grubbs'
z=1;
test=false;
while test==false;
N=length(X);
Xmean=repmat(mean(X),N,1); % N by 1 vector of mean of X
Xstd=std(X); % standard deviation of X
tcv=tinv((1-alpha)/(2*N),N-2); % t-stat critical value
Gcv=((N-1)/sqrt(N))*sqrt(tcv^2/(N-2+tcv^2)); % G-stat CV
[maxdev ind]=max(abs(X-Xmean));
G=maxdev/Xstd; % G-stat
if G>Gcv;
out(z,1)=X(ind);
X=X([1:N]~=ind);
z=z+1;
test=false;
else
test=true;
end
end
if z==1;
out=[];
end
Y=X;
% Quartile method
case 'quartile'
Q1=prctile(X,25);
Q3=prctile(X,76);
rangedown=Q1-alpha*(Q3-Q1);
rangeup=Q3+alpha*(Q3-Q1);
Y=X(X>rangedown & X<rangeup);
out=X(X<=rangedown | X>=rangeup);
end
end
多变量数据
Antonio Trujillo-Ortiz编写的函数 moutlier1()
moutlier1(X,
α
α
)
function x = ACR(p,n,alpha);
if nargin < 3,
alpha = 0.05; %(default)
end;
if (alpha <= 0 | alpha >= 1)
fprintf('Warning: significance level must be between 0 and 1\n');
return;
end;
if nargin < 2,
error('Requires at least two input arguments.');
return;
end;
a = alpha;
Fc = finv(1-a/n,p,n-p-1); %F distribution critical value with p and n-p-1 degrees of freedom using the Bonferroni correction.
ACR = (p*(n-1)^2*Fc)/(n*(n-p-1)+(n*p*Fc)); % = ((-1*((1/(1+(Fc*p/(n-p-1))))-1))*((n-1)^2))/n;
x = ACR;
return,
function moutlier1(X,alpha)
if nargin < 2,
alpha = 0.05; %(default)
end
if nargin < 1,
error('Requires at least one input arguments.');
end
mX = mean(X); %Means vector from data matrix X.
[n,p] = size(X);
difT = [];
for j = 1:p;
eval(['difT=[difT,(X(:,j)-mean(X(:,j)))];']); %squared Mahalanobis distances.
end
S = cov(X);
D2T = difT*inv(S)*difT';
[D2,cc] = sort(diag(D2T)); %Ascending squared Mahalanobis distances.
D2C = ACR(p,n,alpha);
idx = find(D2 >= D2C);
o = cc(idx);
io = D2(idx);
if isempty(o);
disp(' ')
fprintf('With a given significance level of: %.2f\n', alpha);
disp('Non observation(s) resulting as multivariate outlier(s).');
else
disp(' ')
disp('Table of observation(s) resulting as multivariate outlier(s).')
fprintf('----------------------------------------------\n');
disp(' D2');
disp('Observation observed');
fprintf('----------------------------------------------\n');
fprintf(' %6.0f %10.4f\n',[o,io].');
fprintf('----------------------------------------------\n');
fprintf('With a given significance level of: %.2f\n', alpha);
fprintf('Critical value for the maximum squared Mahalanobis distance: %.4f\n', D2C);
disp('D2 = squared Mahalanobis distance.');
end
return,
例9-27 单变量离群值
数据表格,存于c9dlamp.dat文件
离群值检测
% A = load('c9dlamp.dat');
A = load('E:\\Work\\201806\\math_4th\\c9dlamp.dat');
[v1 v2] = outliers(A, 'grubbs', 0.05) % 95%的显著性水平
例9-28 多变量离群值检测
NBA球队数据
% 数据读入
X = [447, 149, 22.8; 401, 160, 13.5; 356, 119, 49; 338, 117, -17.7; 328, 109, 2;
290, 97, 25.6; 284, 102, 23.5; 283, 105, 18.5; 282, 109, 21.5; 280, 94, 10.1;
278, 82, 15.2; 275, 102, -16.8; 274, 98, 28.5; 272, 97, -85.1; 258, 72, 3.8;
249, 96, 10.6; 244, 94, -1.6; 239, 85, 13.8; 236, 91, 7.9; 230, 85, 6.9;
227, 63, -19.7; 218, 75, 7.9; 216, 80, 21.9; 208, 72, 15.9; 202, 78, -8.4;
199, 80, 13.1; 196, 70, 2.4; 188, 70, 7.8; 174, 70, -15.1];
% 离群值检测
moutlier1(X, 0.05)
检测结果图形表示
由检测结果可知,第14队数据是离群值
% 三维散点图显示
plot3(X(:, 1), X(:, 2), X(:, 3), 'o');
% x-z平面图
figure;
plot(X(:, 1), X(:, 3), 'o');
% y-z 平面图
figure;
plot(X(:, 2), X(:, 3), 'o');
09.06 参数估计与区间估计
参数估计与区间估计
求取参数与区间估计的函数调用格式
[
μ,σ2,Δμ,Δσ2
μ
,
σ
2
,
Δ
μ
,
Δ
σ
2
] = normfit(x,
Pci
P
c
i
)
[
μ,σ2,Δμ,Δsigma2
μ
,
σ
2
,
Δ
μ
,
Δ
s
i
g
m
a
2
] = fittest(‘norm’, x,
Pci
P
c
i
)
其中,
x=[x1,x2,⋯,xn]T
x
=
[
x
1
,
x
2
,
⋯
,
x
n
]
T
是实测一组数据
μ是该分布的均值,σ2是该分布的方差
μ
是
该
分
布
的
均
值
,
σ
2
是
该
分
布
的
方
差
Δμ及Δσ2是置信区间
Δ
μ
及
Δ
σ
2
是
置
信
区
间
Pci为用户指定的置信度
P
c
i
为
用
户
指
定
的
置
信
度
给定分布的均值与方差计算
函数norminv()可用于求出相关值,这样就可以得出所需的参数
Gamma分布的参数(
a,λ
a
,
λ
): gamfit()
Rayleigh分布的参数估计函数为: raylfit()
均与分布的参数估计函数为: unifit()
Poisson分布的参数估计函数为: poissfit()
可以调用 fittest 函数
例9-29 Gamma分布的参数估计
试用 gamrnd() 函数生成一组 a = 1.5,
λ
λ
= 3 的伪随机数
用参数估计的方法以不同的置信度进行估计
选择置信度为 90%, 92%, 95%, 98%
置信度,估计值,估计区间
p = gamrnd(1.5, 3, 30000, 1);
Pv = [0.9, 0.92, 0.95, 0.98];
A = [];
for i = 1: length(Pv)
[a, b] = gamfit(p, Pv(i));
A = [A; Pv(i), a(1), b(:,1)', a(2), b(:, 2)'];
end;
A
多元线性回归与区间估计
输出信号y
n路输入信号:
x1,x2,⋯,xn
x
1
,
x
2
,
⋯
,
x
n
线性组合
y=a1x2+a2x2+a3x3+⋯+anxn
y
=
a
1
x
2
+
a
2
x
2
+
a
3
x
3
+
⋯
+
a
n
x
n
其中,
a1,a2,⋯,an
a
1
,
a
2
,
⋯
,
a
n
为待定系数
线性回归
求解线性代数方程
得到的实测数据满足的关系式
实测数据
y1=x11a1+x12a2+⋯+x1nan+ε1
y
1
=
x
11
a
1
+
x
12
a
2
+
⋯
+
x
1
n
a
n
+
ε
1
y2=x21a2+x22a2+⋯+x2nan+ε2
y
2
=
x
21
a
2
+
x
22
a
2
+
⋯
+
x
2
n
a
n
+
ε
2
⋮
⋮
ym=xm1a1+xm2a2+⋯+xmnan+εm
y
m
=
x
m
1
a
1
+
x
m
2
a
2
+
⋯
+
x
m
n
a
n
+
ε
m
观测数据组与未知待定参数个数不同
尽量使得总体误差最小
参数估计的最小二乘求解
目标函数选择为使得残差的平方和最小:
J=minaεTε
J
=
min
a
ε
T
ε
系数向量a为
a^=(XTX)−1XTy
a
^
=
(
X
T
X
)
−
1
X
T
y
求最小二乘解的函数调用格式
a=X ya=inv(X′∗X)∗X′∗y
a
=
X
y
a
=
i
n
v
(
X
′
∗
X
)
∗
X
′
∗
y
求解函数, 1-a为用户指定的置信度
[
a^,aci
a
^
,
a
c
i
] = regress(y, X, a)
例9-30 参数估计与区间估计
给定线性回归方程如下,生成120组随机输入值
xi
x
i
计算输出向量y,估计出系数
ai
a
i
y=x1−1.232x2+2.23x3+2x4+4x5+3.792x6
y
=
x
1
−
1.232
x
2
+
2.23
x
3
+
2
x
4
+
4
x
5
+
3.792
x
6
用最小二乘计算公式
a = [1, -1.232, 2.23, 2, 4, 3.792]';
X = randn(120, 6);
y = X*a;
a1 = inv(X'*X)*X'*y
% 计算出98%的置信度区间
[a, aint] = regress(y, X, 0.02)
混叠噪声的信号参数估计
给输出样本叠加N(0, 0.5)区间的正态分布噪声
再绘制参数估计的置信区间
yhat = y + sqrt(0.5)*randn(120, 1);
[a, aint] = regress(yhat, X, 0.02)
errorbar(1:6, a, aint(:,1)-a, aint(:,2)-a)
将噪声方差设为0.1
yhat = y + sqrt(0.1)*randn(120, 1);
[a, aint] = regress(yhat, X, 0.02)
errorbar(1:6, a, aint(:, 1)-a, aint(:, 2)-a)
非线性函数的最小二乘参数估计与区间估计
假设数据
xi,yi,i=1,2,⋯,N
x
i
,
y
i
,
i
=
1
,
2
,
⋯
,
N
满足原型函数
y^(x)=f(a,x)
y
^
(
x
)
=
f
(
a
,
x
)
原函数严格写成
y^(x)=f(a,x)+ε
y
^
(
x
)
=
f
(
a
,
x
)
+
ε
引入目标函数:
I=mina∑i=1N[yi−y^(xi)]2=mina∑i=1N[yi−f(a,xi)]2
I
=
min
a
∑
i
=
1
N
[
y
i
−
y
^
(
x
i
)
]
2
=
min
a
∑
i
=
1
N
[
y
i
−
f
(
a
,
x
i
)
]
2
参数估计的函数调用格式
最小二乘拟合: [a, r, J] = nlinfit(x, y, fun, a0)
由置信度为95%的置信区间 : c = nlparci(a, r, J)
与函数lsqcurvefit()的功能相似
例9-31 参数与区间估计
原型函数
y(x)=a1e−a2x+a3e−a4xsin(a5x)
y
(
x
)
=
a
1
e
−
a
2
x
+
a
3
e
−
a
4
x
sin
(
a
5
x
)
95%置信度的置信区间
叠加均匀分布的噪声信号再进行参数与区间估计
f = @(a, x)a(1)*exp(-a(2)*x) + ...
a(3)*exp(-a(4)*x).*sin(a(5)*x);
x = 0: 0.1: 10;
y = f([0.12, 0.213, 0.54, 0.17, 1.23], x);
[a, r, j] = nlinfit(x, y, f, [1;1;1;1;1]);
a
ci = nlparci(a, r, j)
叠加噪声后估计
样本点数据
yi
y
i
叠加上[0, 0.02] 区间均匀分布的噪声信号
y = f([0.12, 0.213, 0.54, 0.17, 1.23], x) ...
+ 0.02*rand(size(x));
[a, r, j] = nlinfit(x, y, f, [1;1;1;1;1]),
ci = nlparci(a, r, j)
errorbar(1:5, a, ci(:, 1)-a, ci(:, 2)-a)
09.07 统计假设检验
统计假设检验的概念及步骤
为什么要假设检验?
生产一批灯泡,标明寿命,怎么标?
产品设计指标(预期寿命)
随机选n个产品,测出相关的参数
检验是否合格
假设检验的一般步骤
先假设总体具有某种统计特征
然后再检验这个假设是否可信
这种方法称为“统计假设检验方法”
统计假设检验在统计学中是有重要地位的
假设检验的步骤
做出假设–产品合格:
H0:μ=μ0
H
0
:
μ
=
μ
0
随机选择n个产品,测出均值
x¯
x
¯
与标准差s
构造统计量
μ=n−−√(x¯−μ0)/s
μ
=
n
(
x
¯
−
μ
0
)
/
s
, 满足N(0, 1)分布
求出逆概率分布
∫Kα/2Kα/212π−−√ex2/2dx<1−α
∫
K
α
/
2
K
α
/
2
1
2
π
e
x
2
/
2
d
x
<
1
−
α
Kα/2
K
α
/
2
= norminv(1 -
α
α
/2, 0, 1)
Kα/2
K
α
/
2
= icdf(‘norm’, 1 -
α/2
α
/
2
, 0, 1)
做出结论:若|
μ
μ
| <
Kα/2
K
α
/
2
, 不能拒绝假设
例9-34 工艺变化的强度检验
已知某产品的平均强度
μ0=9.94kg
μ
0
=
9.94
k
g
现改变工艺,在新产品中随机抽取200件
平均强度为:
x¯=9.73kg
x
¯
=
9.73
k
g
标准差为:
s=1.62kg
s
=
1.62
k
g
问改变工艺对产品强度有无显著影响
引入两个命题:
{H0:μ=μ0nosignificantchangeH1:rejectH0
{
H
0
:
μ
=
μ
0
n
o
s
i
g
n
i
f
i
c
a
n
t
c
h
a
n
g
e
H
1
:
r
e
j
e
c
t
H
0
选取统计量
μ=n−−√(x¯−μ0)s
μ
=
n
(
x
¯
−
μ
0
)
s
∫Kα/2Kα/212π−−√ex2/2dx<1−α|μ|<Kα/2
∫
K
α
/
2
K
α
/
2
1
2
π
e
x
2
/
2
d
x
<
1
−
α
|
μ
|
<
K
α
/
2
该统计量满足标准正态分布N(0, 1)
n = 200;
mu0 = 9.94;
xbar = 9.73;
s = 1.62;
u = sqrt(n)*(mu0 - xbar)/s
alpha = 0.02;
K = norminv(1 - alpha/2, 0, 1),
H = abs(u) < K
两组数据是否有明显差异
有两组数据,第一组随机选
n1
n
1
个样本,第二组
n2
n
2
个样本
假设检验的步骤
做出假设(没有差异) –
H0:μ1=μ2
H
0
:
μ
1
=
μ
2
构造T分布统计量
t=x¯1−x¯2s21/n1+s22/n2−−−−−−−−−−−√
t
=
x
¯
1
−
x
¯
2
s
1
2
/
n
1
+
s
2
2
/
n
2
k = min(
n1−1,n2−1
n
1
−
1
,
n
2
−
1
)
T0=tinv(α/2,k),orT0=icdf(′t′,α/2,k)
T
0
=
t
i
n
v
(
α
/
2
,
k
)
,
o
r
T
0
=
i
c
d
f
(
′
t
′
,
α
/
2
,
k
)
若|t| < |
T0
T
0
|, 不能拒绝
例9-35 失眠药物的药效评价
失眠病患者,随机分成两组, 各10人
不同组使用不同药物,测延长睡眠小时数
AB1.90.70.8−1.61.1−0.20.1−1.2−0.1−0.14.43.45.53.71.60.84.603.42
A
1.9
0.8
1.1
0.1
−
0.1
4.4
5.5
1.6
4.6
3.4
B
0.7
−
1.6
−
0.2
−
1.2
−
0.1
3.4
3.7
0.8
0
2
两种药物是否有显著差异?
x = [1.9, 0.8, 1.1, 0.1, -0.1, 4.4, 5.5, 1.6, 4.6, 3.4];
y = [0.7, -1.6, -0.2, -1.2, -0.1, 3.4, 3.7, 0.8, 0, 2];
n1 = length(x);
n2 = length(y);
k = min(n1-1, n2-1);
t = (mean(x) - mean(y)) ...
/sqrt(std(x)^2/n1 + std(y)^2/n2)
a = 0.05;
T0 = tinv(a/2, k),
H = abs(t) < abs(T0)
% 图解分析
boxplot([x.', y.'])
正态分布的均值假设检验
已知一组数据
该数据复合正态分布,且已知其标准差为
σ
σ
假设其均值为
μ
μ
如何检验?
H0:μ=μ0
H
0
:
μ
=
μ
0
[H, s,
μci
μ
c
i
] = ztest(X,
μ0,σ,α
μ
0
,
σ
,
α
)
如果未知数据的标准差,如何检验?
[H, s,
μci
μ
c
i
] = ttest(X,
μ0,α
μ
0
,
α
)
例9-36 正态分布的均值假设检验
生成一组400个正态分布随机数
均值为1,标准差为2
由数据检验以下若标准差
σ
σ
-2,数据的均值是否为1
r = normrnd(1, 2, 400, 1);
[H, p, ci] = ztest(r, 1, 2, 0.02)
% 如果未知标准差,检验均值是否为1
[H, p, ci] = ttest(r, 1, 0.02)
正态性假设检验
测得一组数据,检验其是否满足正态分布
Jarque-Bera假设检验
[H, s] = jbtest(X,
α
α
)
Lilliefors假设检验
[H, s] = lillietest(X,
α
α
)
如果满足正态分布,则找出均值与方差
[
μ,σ,μci,σci
μ
,
σ
,
μ
c
i
,
σ
c
i
] = normfit(X,
α
α
)
图形验证: normplot(X)
例9-37 判定分布是否为正态分布
前面给出的表格,文件 c9dlumen.dat
正态性判定,并得出正态分布参数
% X = load('c9dlumen.dat');
X = load('E:\\Work\\201806\\math_4th\\c9dlumen.dat');
[H, p] = jbtest(X, 0.05)
[mu1, sig1, mu_ci, sig_ci] = normfit(X, 0.05)
normplot(X)
例9-38 非正态分布的检验结果
生成一组400个Rayleigh分布数据
正态性检验结果
X = raylrnd(1.5, 400, 1);
[H, p, c, d] = jbtest(X, 0.05)
% 图形验证
normplot(X)
任意分布的Kolmogorov-Smirnov检验
Kolmogorov-Smirnov检验是检验任意已知分布函数的一种有效的假设检验算法
函数调用格式: [H, s] = kstest(X, cdffun,
α
α
)
其中,cdffun为两列均值, 第一列为自变量,第二列应该为要检验的分布函数在自变量处的值
某些分布的图形验证: probplot()
例9-40 Rayleigh分布的检验
生成一组Rayleigh分布数据
对生成的随机数进行假设检验,是否满足分布
生成Rayleigh分布的数据
r = raylrnd(1.5, 400, 1);
b = raylfit(r)
% 假设检验
s = sort(r);
[H, p] = kstest(s, [s raylcdf(s, b)], 0.05)
% 图形验证
probplot('rayleigh', r)
09.08 方差分析
方差分析
方差分析(analyysis of variance, ANOVA)是应该遗传学家,统计学家 Ronald Fischer 提出的一种分析方法
方差分析技术是假设检验的拓展
H0:μ1=μ2=⋯=μN
H
0
:
μ
1
=
μ
2
=
⋯
=
μ
N
单因子方差分析
双因子方差分析
多因子方差分析
单因子方差分析
单因子方差分析就是指对一些观察来说,只有一个外界因素可能对观测的现象产生影响
求解单因子方差分析的函数调用格式:
[p, tab, stats] = anova1(X)
其中,X为需要分析的数据
若 p <
α
α
, 则拒绝假设
H0:μ1=μ2=⋯=μN
H
0
:
μ
1
=
μ
2
=
⋯
=
μ
N
单因子方差分析表
ANOVA表
sourcegroupserrortotalsumofsquaresSSA=∑iniy¯2i,:−Ny¯2:,:SSE=∑i∑ky2i,k−∑iniy¯2i,:SST=∑i∑ky2i,k−Ny¯2:,:DOFI−1N−IN−1meansquaresMSSA=SSAI−1MSSE=SSEN−IFMSSAMSSEprobabilitypp=P(FI−1,N−I>c)
s
o
u
r
c
e
s
u
m
o
f
s
q
u
a
r
e
s
D
O
F
m
e
a
n
s
q
u
a
r
e
s
F
p
r
o
b
a
b
i
l
i
t
y
p
g
r
o
u
p
s
S
S
A
=
∑
i
n
i
y
¯
i
,
:
2
−
N
y
¯
:
,
:
2
I
−
1
M
S
S
A
=
S
S
A
I
−
1
M
S
S
A
M
S
S
E
p
=
P
(
F
I
−
1
,
N
−
I
>
c
)
e
r
r
o
r
S
S
E
=
∑
i
∑
k
y
i
,
k
2
−
∑
i
n
i
y
¯
i
,
:
2
N
−
I
M
S
S
E
=
S
S
E
N
−
I
t
o
t
a
l
S
S
T
=
∑
i
∑
k
y
i
,
k
2
−
N
y
¯
:
,
:
2
N
−
1
p的值是不是很小
盒子图的观察
例9-42 单元素方差分析
有5种药物比较疗效
将30个病人随机地分成5组
每组使用同一种药物,并记录病人治疗时间
评价疗效–5种药物疗效是否有显著不同?
A = [5, 4, 6,7,9; 8, 6, 4, 4, 3; ...
7,6,4, 6, 5; 7, 3, 5, 6, 7; ...
10, 5, 4, 3, 7; 8, 6, 3, 5, 6];
mean(A),
[p, tbl, stats] = anova1(A)
盒子图的直接观察
双因子方差分析
如果有两种因子可能影响到某现象的统计规律,则应该引入双因子方差分析的概念
观测量y可以表示为一个三维数组
yi,j,k
y
i
,
j
,
k
, 表示第1个因子取第i个水平,第二个因子取第j个水平时,组内第k个对象的观测指标
三个假设:
αi为第一因子单独作用对现象没有影响
α
i
为
第
一
因
子
单
独
作
用
对
现
象
没
有
影
响
H1:α1=α2=⋯=αI
H
1
:
α
1
=
α
2
=
⋯
=
α
I
βj为第二因子单独作用对现象没有影响
β
j
为
第
二
因
子
单
独
作
用
对
现
象
没
有
影
响
H2:β1=β2=⋯=βJ
H
2
:
β
1
=
β
2
=
⋯
=
β
J
γk为两个因子同时作用效应
γ
k
为
两
个
因
子
同
时
作
用
效
应
H3:γ1=γ2=⋯=γIJ
H
3
:
γ
1
=
γ
2
=
⋯
=
γ
I
J
三个概率的定义及意义
若pA<c1则拒绝假设H1
若
p
A
<
c
1
则
拒
绝
假
设
H
1
pA=P(F[I−1,IJ(K−1)]>c1)
p
A
=
P
(
F
[
I
−
1
,
I
J
(
K
−
1
)
]
>
c
1
)
若pB<c2,则拒绝假设H2
若
p
B
<
c
2
,
则
拒
绝
假
设
H
2
pB=P(F[J−1,IJ(K−1)]>c2)
p
B
=
P
(
F
[
J
−
1
,
I
J
(
K
−
1
)
]
>
c
2
)
若pAB<c3,则拒绝假设H3
若
p
A
B
<
c
3
,
则
拒
绝
假
设
H
3
pAB=P(F[(I−1)(J−1),IJ(K−1)]>c3)
p
A
B
=
P
(
F
[
(
I
−
1
)
(
J
−
1
)
,
I
J
(
K
−
1
)
]
>
c
3
)
双因子方差分析:[p, tab, stats] = anova2(X)
双因子方差表
sourcefactorAfactorBinterationerrorstotoalsquareofsumsSSA=JK∑iy¯2i,:,:−IJKy¯2:,:,:SSB=IK∑iy¯2:,j,:−IJKy¯2:,:,:SSAB=K∑ijy¯2i,j,:−JK∑iy¯2i,:,:+IJKy¯2:,:,:SSE=∑ijky2i,j,k−K∑i∑jy¯2i,j,:SST=∑ijky2i,j,k−IJKy¯2:,:,:DOFI−1J−1(I−1)(J−1)IJ(K−1)IJK−1meansquarederrorMSSA=SSAI−1MSSB=SSBJ−1MSSAB=SSAB(I−1)(J−1)MSSE=SSEIJ(K−1)FMSSAMSSEMSSBMSSEMSSABMSSEppApBpAB
s
o
u
r
c
e
s
q
u
a
r
e
o
f
s
u
m
s
D
O
F
m
e
a
n
s
q
u
a
r
e
d
e
r
r
o
r
F
p
f
a
c
t
o
r
A
S
S
A
=
J
K
∑
i
y
¯
i
,
:
,
:
2
−
I
J
K
y
¯
:
,
:
,
:
2
I
−
1
M
S
S
A
=
S
S
A
I
−
1
M
S
S
A
M
S
S
E
p
A
f
a
c
t
o
r
B
S
S
B
=
I
K
∑
i
y
¯
:
,
j
,
:
2
−
I
J
K
y
¯
:
,
:
,
:
2
J
−
1
M
S
S
B
=
S
S
B
J
−
1
M
S
S
B
M
S
S
E
p
B
i
n
t
e
r
a
t
i
o
n
S
S
A
B
=
K
∑
i
j
y
¯
i
,
j
,
:
2
−
J
K
∑
i
y
¯
i
,
:
,
:
2
+
I
J
K
y
¯
:
,
:
,
:
2
(
I
−
1
)
(
J
−
1
)
M
S
S
A
B
=
S
S
A
B
(
I
−
1
)
(
J
−
1
)
M
S
S
A
B
M
S
S
E
p
A
B
e
r
r
o
r
s
S
S
E
=
∑
i
j
k
y
i
,
j
,
k
2
−
K
∑
i
∑
j
y
¯
i
,
j
,
:
2
I
J
(
K
−
1
)
M
S
S
E
=
S
S
E
I
J
(
K
−
1
)
t
o
t
o
a
l
S
S
T
=
∑
i
j
k
y
i
,
j
,
k
2
−
I
J
K
y
¯
:
,
:
,
:
2
I
J
K
−
1
例9-43 树的生长地、树种的影响
比较3种松树在4个不同地区的生长情况有无差别
在每个地区对每种松树随机地选择5株
测量它们的胸径
B = [23, 15, 26, 13, 21, 25, 20, 21, 16, 18, 21, 17, 16, 24, 27, 14, 17, 19, 20, 24;
28, 22, 25, 19, 26, 30, 26, 26, 20, 28, 19, 24, 19, 25, 29, 17, 21, 18, 26, 23;
18, 10, 12, 22, 13, 15, 21, 22, 14, 12, 23, 25, 19, 13, 22, 16, 12, 23, 22, 19];
anova2(B', 5);
[p a b] = anova2(B', 5);
% 均值计算
C = [];
for i = 1: 3
for j = 1: 4
C(i, j) = mean(B(i, [1:5] + (j-1)*5));
end;
end;
C = [C; mean(C)];
C = [C mean(C')']
多因子方差分析
manoval()函数进行多因子方差分析
09.09 主成分分析
主成分分析
假设某一事件发生可能受
x1,x2,⋯,xN
x
1
,
x
2
,
⋯
,
x
N
因素影响,识别出到底哪些因素起主要作用,哪些可以忽略
而实测数据共有M组
这样可以假设这些数据由一个
N×M
N
×
M
矩阵X表示
记该矩阵的每一列的均值为
x¯i,i=1,2,⋯,N
x
¯
i
,
i
=
1
,
2
,
⋯
,
N
mean(X)
由X建立起协方差矩阵R
rij=∑k=1M(xki−x¯i)(kkj−x¯j)−−−−−−−−−−−−−−−−−−√∑k=1M(xki−x¯i)2∑k=1M(xkj−x¯j)2−−−−−−−−−−−−−−−−−−−−−−√
r
i
j
=
∑
k
=
1
M
(
x
k
i
−
x
¯
i
)
(
k
k
j
−
x
¯
j
)
∑
k
=
1
M
(
x
k
i
−
x
¯
i
)
2
∑
k
=
1
M
(
x
k
j
−
x
¯
j
)
2
R = corr(X -mean(X))
由R矩阵可以分别得出
特征向量
ei
e
i
对应的排序特征值
λi,λ1≥λ2≥⋯≥λN≥0
λ
i
,
λ
1
≥
λ
2
≥
⋯
≥
λ
N
≥
0
特征向量矩阵的每一列进行相应的归一化
∥ei∥=1或∑j=1Ne2ij=1
‖
e
i
‖
=
1
或
∑
j
=
1
N
e
i
j
2
=
1
[e, d] = eig(R); d = diag(d);
d = d(end: -1: 1); e = fliplr(e);
找出哪些因素贡献大
计算主成分贡献率和累计贡献率
主成分贡献率:
γi=γi∑k=1Nλk
γ
i
=
γ
i
∑
k
=
1
N
λ
k
累计贡献率:
δi=∑k=1iλk∑k=1Nλk
δ
i
=
∑
k
=
1
i
λ
k
∑
k
=
1
N
λ
k
若前n个特征值的累计贡献率大于 85% ~ 95%
可以认为这n个因素是原问题的主成分
d/sum(d)
构造变换矩阵
建立新变量坐标 Z = XL,即
⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪z1=l11x1+l21x2+⋯+lN1xNz2=l12x1+l22x2+⋯+lN2xN⋮zN=l1Nx1+l2Nx2+⋯+lNNxN
{
z
1
=
l
11
x
1
+
l
21
x
2
+
⋯
+
l
N
1
x
N
z
2
=
l
12
x
1
+
l
22
x
2
+
⋯
+
l
N
2
x
N
⋮
z
N
=
l
1
N
x
1
+
l
2
N
x
2
+
⋯
+
l
N
N
x
N
其中变换矩阵第i列的系数
lji
l
j
i
可以计算
lji=λi−−√eji
l
j
i
=
λ
i
e
j
i
D = [d’; d’; \cdots; d’];
L = real(sqrt(D)).*e, Z = X*L
降维矩阵的构造
若前n个成分做主成分,则矩阵L的m列以后各值应该趋于0,上式化为
⎧⎩⎨⎪⎪z1=l11x1+l21x2+⋯+lN1xN⋯zn=l1nx1+l2nx2+⋯+lNnxN
{
z
1
=
l
11
x
1
+
l
21
x
2
+
⋯
+
l
N
1
x
N
⋯
z
n
=
l
1
n
x
1
+
l
2
n
x
2
+
⋯
+
l
N
n
x
N
即,在适当的线性变换下,原来的N维问题就可以简化成n维问题
例9-44 主成分分析的降维处理
假设某三维曲线上的样本点由下列函数直接生成
x=tcos2t,y=tsin2t,z=0.2x+0.6y
x
=
t
cos
2
t
,
y
=
t
sin
2
t
,
z
=
0.2
x
+
0.6
y
试用主成分分析的方法对其降维处理
t = [0: 0.1: 3*pi]';
x = t.*cos(2*t);
y = t.*sin(2*t);
z = 0.2*x + 0.6*y;
X = [x y z];
R = corr(X);
[e, d] = eig(R),
d = diag(d),
plot3(x, y, z)
% 降维处理
d = d(end:-1:1);
e = fliplr(e);
D = [d'; d'; d'];
L = real(sqrt(D)).*e,
Z = X*L;
% 降维效果
plot(Z(:, 1), Z(:,2))
降维矩阵与坐标变换(Z =XL)
L=⎡⎣⎢0.1840.96530.9975−0.98290.261−0.0713000⎤⎦⎥⇒{z1=0.1840x+0.9653y+0.9975zz2=−0.9829x+0.2610y−0.0713z
L
=
[
0.184
−
0.9829
0
0.9653
0.261
0
0.9975
−
0.0713
0
]
⇒
{
z
1
=
0.1840
x
+
0.9653
y
+
0.9975
z
z
2
=
−
0.9829
x
+
0.2610
y
−
0.0713
z