威布尔分布样本的样本均值和方差

时间:2014-04-04 15:18:56

标签: matlab statistics distribution probability-theory weibull

假设我有一个Weibull分布的随机样本x,形状参数为k = 1,比例参数λ= 2。 我该如何计算样本的平均值?我还能做些什么来计算样本的方差?

我还要感谢能够执行上述任务的任何有用的Matlab代码。

3 个答案:

答案 0 :(得分:2)

只需使用

mean(sample(:))

var(sample(:))

其中sample是一个数字数组。

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

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

答案 1 :(得分:1)

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

Numbers = wblrnd(λ,k);

计算平均值

mean(Numbers(:));

计算方差

var(Numbers(:));

答案 2 :(得分:0)

参考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)