【问题标题】:Matlab create array random samples Gaussian distributionMatlab创建数组随机样本高斯分布
【发布时间】:2015-02-13 23:41:19
【问题描述】:

我想从高斯分布中创建一组随机样本。

平均值为0,方差为1。

如果我抽取足够多的样本,我认为我的样本最大值可以是 0+1=1。 但是,我发现我得到的值类似于 4.2891 ...

我的代码:

x = 0+sqrt(1)*randn(100000,1);
mean(x)
var(x)
max(x)

这会给我一个像 0 的平均值,一个 0.9937 的变量,但我的最大值是 4.2891?

谁能帮我看看为什么会这样?

【问题讨论】:

  • 方差为 1 并不意味着最大值为 1。高斯分布在两个方向上展开为无穷大,因此理论上可以从中得出任何实数。
  • 最大值可以更大。看看min(x)。几乎是-max(x)。方差并不意味着上/下界。所以“0 + 1 = 1”在这种情况下没有任何意义。
  • 好吧,我不知道。感谢您的评论!
  • 我怀疑您可能在概率密度函数中混淆了 x 和 y - 这里 x 与 y 不同(参见 en.wikipedia.org/wiki/Normal_distribution)。
  • 这个问题似乎与正态分布的数学/统计有关,因此与 StackOverflow 无关。

标签: matlab random probability sample random-sample


【解决方案1】:

这将使用高斯正态分布产生N 随机数。

N = 100;
mu = 0;
sigma = 1;
Xs = normrnd(mu, sigma, N);

编辑: 我刚刚意识到你的代码实际上和我写的一样。 正如其他人已经指出的那样:方差不是样本可以偏离均值的最大距离! (这只是这些距离的平方的平均值)

【讨论】:

    【解决方案2】:

    正如其他人所提到的,x 在高斯分布中可以采用的可能值没有限制。但是,x 离均值越远,被抽中的可能性就越小。

    为了让您直观了解方差的实际含义(对于任何分布,而不仅仅是高斯情况),您可以查看68-95-99.7 rule。规则说:

    • 大约 68% 的人口将在平均值的 sigma 的一倍以内
    • 大约 95% 的人口将在两个 sigma 的平均值范围内
    • 大约 99.7% 的人口将在平均值的三个 sigma 范围内

    这里sigma = sqrt(var)是分布的标准差。

    因此,虽然理论上可以从高斯分布中抽取任何 x,但实际上对于 100000 的总体而言,不太可能抽取超过 5 或 6 个标准差的任何值。

    【讨论】:

      猜你喜欢
      • 2012-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-09
      • 2012-03-14
      • 1970-01-01
      相关资源
      最近更新 更多