【问题标题】:Normal distribution with the minimum values in MatlabMatlab中具有最小值的正态分布
【发布时间】:2017-06-28 00:38:30
【问题描述】:

我尝试通过 normrnd 函数生成 1000 个正态分布的随机值。

 A = normrnd(4,1,[1000 1]);

我想将最小值设置为 2。但是,该函数只能定义均值和标准差。如何设置最小值为 2 ?

【问题讨论】:

  • 你不能。这将不再是一个正态分布
  • @LuisMendo 如果他将min(A(:))+2 添加到A?它们在技术上不是高斯分布的吗?刚刚抵消?诚实的问题。
  • @AnderBiguri 不,它不会是高斯分布。例如,在高斯分布中,获得 any 值的概率非零,无论多么小。此过程不再是这种情况,因为低于 2 的值的概率严格为 0。您可以将 constant 偏移添加到高斯,它仍然是高斯;但一般情况下,您不能添加取决于生成值的偏移量,因为这会改变分布
  • 您可能想要查找伽马分布。它可能更符合您的目的。
  • 亲爱的,如果我在这种情况下设置了 min=2 和 max=6。那会是正态分布吗?请告诉我如何设置该条件。

标签: matlab normal-distribution


【解决方案1】:

你不能。高斯或正态分布的数字呈钟形曲线,尾部趋于无穷大。您可以做的是通过消除超出截止值的每个数字来“审查”它们。

【讨论】:

  • 审查使分布成为非高斯分布
【解决方案2】:

由于您选择 mean = 4 和 sigma = 1,您最终将有大约 95% 的 A 元素落在范围 [2,6] 内。值小于 2 的元素数量约为 2.5%。如果您认为这个数字很小,您可以将这些元素包装到最小值。例如:

 A = normrnd(4,1,[1000 1]);

A(A < 2) = A(A<2) + 2 - min(A(A<2))

当然,它在技术上不是高斯分布。但是,如果您可以完全控制均值和 sigma,则可以通过向 A 添加偏移量来获得“更像高斯”的分布:

A = A + 2 - min(A) 

【讨论】:

  • 谢谢。在这种情况下,它不是正态分布。我正在考虑设置 min=2 和 max = 6 。在这种情况下,这将是正态分布吗?如果方便,请告诉我如何设置该条件?
  • 严格正态分布有min = -Infmax = +Inf。如果设置min=2 和/或max=6,则不再是正态分布,但足够接近满足您的大部分应用程序。
【解决方案3】:

注意:这假设您可以任意设置标准偏差,但情况可能并非如此

正如其他人所说,您不能为真正的高斯指定下限。但是,您可以生成一个高斯并估计 1-p 百分比值高于,然后忽略 p 百分比值(这将超出您的截止值)。

例如,在下面的代码中,我正在生成一个高斯分布,其中 95% 的数据点高于 2。然后我将删除所有低于 2 的点,因为我知道将删除 5% 的数据。

这是一个解决方案,因为设置为 p 接近于零,您获得遵循高斯曲线且完全高于您的截止值的未经审查样本数据的机会达到 100%(实际上它定义为p/n 的比率,但如果 n 是固定的,则为 true)。

n = 1000;    % number of samples
cutoff = 2;  % Cutoff point for min-value
mu = 4;      % Mean
p = .05;     % Percentile you would like to cutoff

z = -sqrt(2) * erfcinv(p*2);  % compute z score
sigma = (cutoff - mu)/z;      % compute standard deviation

A = normrnd(mu,sigma,[n 1]);

我建议删除低于临界值的值,而不是将它们重新归因于分布的下限,但这取决于你。

A(A<cutoff) = []; % removes all values of A less than cutoff

如果你想要对称(你应该这样做以防止样本歪斜),那么以下应该可以工作。

A(A>(2*mu-cutoff)) = []; 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    相关资源
    最近更新 更多