0

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

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

4

3 回答 3

2

只需使用

mean(sample(:))

var(sample(:))

其中sample是一个数字数组。

(:)部分用于将数组sample转换为向量。你可以省略 ifsample已经是一个向量。

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

于 2014-04-04T15:36:19.930 回答
1

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

Numbers = wblrnd(λ,k);

计算平均值

mean(Numbers(:));

计算方差

var(Numbers(:));
于 2014-04-04T15:34:37.773 回答
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)
于 2018-11-13T19:35:57.660 回答