统计信号处理基础 习题解答10-11

题目

我们希望根据一个人的身高来估计他的体重。为了判断其可行性,对N=100个人取数据,产生有序的数据对(h,w),其中h代表身高,w代表体重。得到的数据如图10.9(a)所示的。解释你如何利用MMSE估计量根据一个人的身高来猜测他的体重。对于这些数据的建模有些什么样的假设?接下来,对很遥远的行星上的人进行同样的实验,得到的数据如图10.9(b)所示。现在体重的MMSE 估计量将是什么?


解答 

MMSE估计量的本质是利用了两个随机变量之间的相关性。

问题是书本上关于二维高斯分布的恒定概率密度的等值线是椭圆没有解释。

下面分两种方法给出解释:

方法一:多维高斯分布概率密度推导

D维高斯分布的一般形式:

其中,是D*1维列向量:

上述随机变量的方差定义为:,即:

是D*D维协方差矩阵,定义为:

其中,每个元素为:

特别的,当时:

如果我们定义相关系数:

显然,根据定义,我们可以得到:

那么可以得到:

也就是可以表示为:

配合性质,我们可以发现是对称矩阵,即.

 特别的,当D=2时,我们可以得到

此时,直接令,因此,根据行列式计算,得到此时:

同时,2*2方阵逆矩阵性质

(参考线性代数考研笔记(二)_2x2矩阵的逆矩阵口诀-CSDN博客

因子,最终:

上述公式取不同的恒定数值,就可以得到概率密度的等值线,例如:

也就是:

显然,上式是椭圆的一般方程。

下面进行典型图形的画图验证:

1. 独立,且标准正态分布:

此时通过matlab作图,可以得到独立分布下的概率密度等值线,此时是正的标准圆。

 

 

2. 独立,中心平移:

此时可以发现,仅仅是中心发生了平移,但是还是标准正圆。

 

3. 独立,中心不平移,标准差不相等:,

 此时标准圆已经变化成为椭圆,但还是正的椭圆

 

4. 非独立,中心不平移,标准差相等:

此时,也变为了椭圆,且椭圆发生了旋转。

通过上述直观分析,我们可以发现:

为等值线的值。当两个随机变量不相关,且标准差相等时,等值线应该是圆。

当两个随机变量不相关,但标准差不相等,等值线是椭圆,且椭圆没有发生旋转。

当两个随机变量相关,那么等值线是椭圆,且椭圆发生了旋转。

最后,我们将上述等值线,运用到概率密度上,也就是令:

其中,,我们分别作出的等值线,都是椭圆。

 

方法二:马氏距离法

马氏距离可以参考:

马氏距离详解(数学原理、适用场景、应用示例代码)-CSDN博客

B站白板推导系列笔记——高斯分布——等概率线椭圆_椭圆高斯分布-CSDN博客

马氏距离为:

由谱分析可以得到可以分解成:

其中特征值对应的对角矩阵,因此进一步:

特别的,当D=2时,我们可以得到

那么

如果定义:

根据向量维度和乘法,可以得到都是标量,因此:

更为一般的,可以得到:

上述关于的椭圆方程,经过三步操作:

:中心化(centralize)

:旋转(rotate)

:缩放(scale)

最终变成标准圆。

 

最后,回到题目,显然,(a)图关于地球上人的数据来说,随机变量w和h是相关的,因此,可以用公式(10.20)进行估计,即:

观察上述估计量的形式,本质上是概率域的最小二乘形式。

(b)图关于遥远星球上人的数据来说,不管的取值,的取值分布没有影响,因此大致可以判断w和h是不相关的,也就是:,因此此时:

也就是此时MMSE没办法通过两个随机变量的相关性,更加有效的估计

Matlab作图代码

clc, clear, close all;
syms x1 x2
delta1=1;
delta2=1;
u1=0;
u2=0;
ru=0.5;

circle=1/(1-ru^2)*(((x1-u1)/delta1)^2-ru*((x1-u1)/delta1)*((x2-u2)/delta2)+((x2-u2)/delta2)^2);

figure(1)
fimplicit(circle==1,'Linewidth', 2)
legend('show','Location','best')


figure(2)
delta1=1;
delta2=2;
u1=1;
u2=1;
ru=0.5;
circle=1/(1-ru^2)*(((x1-u1)/delta1)^2-ru*((x1-u1)/delta1)*((x2-u2)/delta2)+((x2-u2)/delta2)^2);
fimplicit(1/(2*pi*delta1*delta2*sqrt(1-ru^2))*exp(-0.5*circle)==0.01,'Linewidth', 2)
hold on
fimplicit(1/(2*pi*delta1*delta2*sqrt(1-ru^2))*exp(-0.5*circle)==0.03, '--or')
fimplicit(1/(2*pi*delta1*delta2*sqrt(1-ru^2))*exp(-0.5*circle)==0.05, '-.*c')
hold off

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-06-18 12:44:01       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-18 12:44:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-18 12:44:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-18 12:44:01       20 阅读

热门阅读

  1. 使用微信小程序制作画布

    2024-06-18 12:44:01       5 阅读
  2. 比较两个对象相同对象不同值

    2024-06-18 12:44:01       6 阅读
  3. “==“和 equals 方法究竟有什么区别?

    2024-06-18 12:44:01       8 阅读
  4. 【斗地主game】

    2024-06-18 12:44:01       9 阅读
  5. Ant-Design-Vue动态表头并填充数据

    2024-06-18 12:44:01       10 阅读
  6. 【React】如何理解 React 的 Fiber?

    2024-06-18 12:44:01       9 阅读
  7. Android XML 布局基础(八)帧布局 - GridLayout

    2024-06-18 12:44:01       8 阅读
  8. AndroidStudio|本地生成APK|build.gradle.kts配置

    2024-06-18 12:44:01       6 阅读
  9. NLP学习与踩坑记录(持续更新版)

    2024-06-18 12:44:01       8 阅读