【问题标题】:How to remove negative estimates from the data using MATLAB如何使用 MATLAB 从数据中删除负估计
【发布时间】: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


【解决方案1】:

更改后的数据集的均值和方差将与原始数据不同,因为您要删除最初属于分布的值。假设你有一个数字序列,如 -4、-5、2、8、9,平均值为 2。现在如果你完全删除负数部分,平均值将变为 19/3,如果你替换负值零,平均值将变为 19/5。这也是你的情况。

但是,您可以通过将负值设为 0 来消除负值的第二种方法,从而最大限度地减少值之间的差异。您的代码在这两种情况下都能正常工作。但是,您可能希望使用下面的代码,因为它会更快、更优化:

方法 1(完全删除负数行)

%Turns out there is a 1 line solution to this as well
data = samples(~any(samples < 0, 2), :);

%Define an anonymous function that finds out which rows have a negative values
%fn = @(x) any(samples(x, :) < 0);
%Now run this function over all the rows of the samples
%neg_rows = arrayfun(fn, 1:size(samples, 1));
%Change the dataset to remove the negative rows
%data = samples(~neg_rows, :);

方法2(将所有负值设为0)

data = samples; % Copies all the samples to data
data(data < 0) = 0; % Makes all the negative values in data 0

现在您可以比较新数据集的均值和协方差,看看哪种方法会产生最佳结果。

【讨论】:

  • 尊敬的 ammportal,感谢您为我编写了最佳代码。你能帮我把减少的音量正常化吗?
猜你喜欢
  • 1970-01-01
  • 2015-03-05
  • 2017-08-06
  • 2012-01-28
  • 1970-01-01
  • 2021-12-27
  • 2016-01-18
  • 1970-01-01
  • 2012-08-02
相关资源
最近更新 更多