假设我有一个Weibull分布的随机样本x,形状参数为k = 1,比例参数λ= 2。 我该如何计算样本的平均值?我还能做些什么来计算样本的方差?
我还要感谢能够执行上述任务的任何有用的Matlab代码。
答案 0 :(得分:2)
只需使用
mean(sample(:))
和
var(sample(:))
其中sample
是一个数字数组。
(:)
部分用于将数组sample
转换为矢量。如果sample
已经是向量,则可以省略。
请注意,这会计算数据的sample mean和sample 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)