【发布时间】:2017-09-29 22:37:54
【问题描述】:
从协方差矩阵 (3x3 COVAR) 和相应的平均值 (3x1 OMEGA) 开始,我可以生成可信区域(1-sigma 和 2-sigma)的等高线图。这样做,我也会产生负值(估计值),这是我需要避免的。
换句话说,我可以从上述多元分布中采样为
samples = mvnrnd(OMEGA,COVAR,10000);%% 会产生 10000x3 的数据集。
现在,我想从这个示例中删除包含负值的整行。我只需要特定行中的所有条目都是正数。我想到了两种摆脱这些负面价值观的方法: 1)简单地消除包含单个否定条目的行或 2) 将所有负值替换为 0.0 下面是我的代码...
这就是我正在尝试的方式......
samples = mvnrnd(OMEGA,COVAR,100000);
flag=1;
for iRow=1:length(samples)
a=samples(iRow,:);
% if (~any(a<0)&&flag==1)
% flag=0;
% data=a;
% elseif (~any(a<0)&&flag==0) %eliminating row
% data=[data;a];
% end
if flag==1
flag=0;a(a<0)=0;data=a; % replacing by 0.0
else
a(a<0)=0;data=[data;a];
end
end
执行这段代码后,我再次计算数据的均值和协方差,但只是发现它们有很大不同...
% 新均值和新协方差
OMEGA = mean(data);
COVAR = cov(data);
有人可以建议我一个更好的方法来完成上述操作吗?这个想法是通过去除负值(非物理)来减少协方差矩阵(误差)的大小。然后可以根据这些新值(均值和 cov mat)绘制等高线图,并仅限于第一象限(即仅参数的正值)。
提前谢谢你。
【问题讨论】:
-
我现在应该提到我正在寻找的精确...新的协方差矩阵或多元分布的体积(在这种情况下为 3-dim)是可以理解的减少了。分布仅限于 3 维空间的第一象限。我想确保这个新卷是 1.0。这样分布是标准化的,或者换句话说,多元是概率分布。一旦实现这一点,我想从这个分布中抽取样本,并做同样的计算协方差矩阵和平均值的练习,以得出等高线图。
-
您可以使用标准的标准化方法,即 (x - mean(x))/std(x)
标签: matlab