假设我有一个来自 Weibull 分布的随机样本 x,其形状参数 k=1,尺度参数 λ=2。
我应该如何计算样本的平均值?另外我能做些什么来计算样本的方差?
我还将感谢任何能够执行上述任务的有用的 Matlab 代码。
假设我有一个来自 Weibull 分布的随机样本 x,其形状参数 k=1,尺度参数 λ=2。
我应该如何计算样本的平均值?另外我能做些什么来计算样本的方差?
我还将感谢任何能够执行上述任务的有用的 Matlab 代码。
具有尺度参数 λ 和形状参数 k 的 Weibul 分布的随机数:
Numbers = wblrnd(λ,k);
计算平均值
mean(Numbers(:));
计算方差
var(Numbers(:));
参考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)