【问题标题】:Sample mean and variance of a Weibull distribution sampleWeibull 分布样本的样本均值和方差
【发布时间】:2014-05-16 23:58:51
【问题描述】:

假设我有一个来自 Weibull 分布的随机样本 x,其形状参数 k=1,尺度参数 λ=2。
我应该如何计算样本的平均值?另外我可以做些什么来计算样本的方差?

我也非常感谢能够执行上述任务的任何有用的 Matlab 代码。

【问题讨论】:

  • 使用mean(sample(:))var(sample(:))。如果sample 已经是一个向量(一维数组),您可以删除(:)
  • 但是 mean 和 var 命令不应该只计算正态分布的均值和方差吗??
  • 不!他们很一般
  • 在这种情况下,当然,均值将除以 5,方差除以 25...但是您为什么要这样问?
  • @obelix 直接来自definition of variance

标签: matlab statistics distribution probability-theory weibull


【解决方案1】:

参考Weibull Distribution 的wiki 页面,可以直接计算这些分布。有关公式,请参见 wiki。

k = 1;          % shape parameter
lambda = 2;     % scale parameter

Wmeanh =@(k,lambda) lambda*gamma(1 + (1/k));    % Mean
Wvarh =@(k,lambda) (lambda^2)*(gamma(1+(2/k)) - (gamma(1+(1/k)))^2); % Variance

现在来测试这些匿名函数句柄对我们的参数...

>> Wmeanh(k,lambda)
ans =
     2
>> Wvarh(k,lambda)
ans =
     4

我们可以验证我们的公式是否正确,并表明我们的答案是一致的。

% Test against alternate method
pd = makedist('Weibull',lambda,k)
mean(pd)
var(pd)

下面我们从这个分布中生成具有不同样本大小的样本,并收集样本均值和样本方差。这演示了如何从样本中得到这个,并且我们之前的计算看起来是正确的。

N = [10 30 90 270 810 2430 7290]';
SampleMEAN = zeros(size(N));
SampleVAR = zeros(size(N));
for i = 1:length(N)
    ni = N(i);
    Xi = random(pd,ni,1);
    SampleMEAN(i) = mean(Xi);
    SampleVAR(i) = var(Xi);
end
T = table(N,SampleMEAN,SampleVAR)

【讨论】:

    【解决方案2】:

    随便用

    mean(sample(:))
    

    var(sample(:))
    

    其中sample 是一个数字数组。

    (:) 部分用于将数组sample 转换为向量。如果sample 已经是向量,则可以省略。

    请注意,这会计算您数据的 sample meansample variance(不是分布的真实均值和方差)。

    【讨论】:

      【解决方案3】:

      具有尺度参数 λ 和形状参数 k 的 Weibul 分布的随机数:

      Numbers = wblrnd(λ,k);
      

      计算平均值

      mean(Numbers(:));
      

      计算方差

      var(Numbers(:));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-14
        • 1970-01-01
        • 2021-07-01
        • 2013-12-20
        • 2012-11-28
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多