假设我有一个形状参数k=1和尺度参数λ=2的威布尔分布的随机样本x。
我该如何计算样本的平均值?另外,我能做什么来计算样本的方差呢?
我也希望能执行上述任务的任何有用的Matlab代码。
发布于 2014-04-04 15:34:37
具有尺度参数λ和形状参数k的威布尔分布的随机数
Numbers = wblrnd(λ,k);计算平均值
mean(Numbers(:));计算方差
var(Numbers(:));发布于 2014-04-04 15:36:19
只管用
mean(sample(:))和
var(sample(:))其中sample是一个数字数组。
(:)部件用于将数组sample转换为向量。如果sample已经是一个向量,您可以省略它。
请注意,这将计算数据的http://en.wikipedia.org/wiki/Sample_mean_and_sample_covariance和http://en.wikipedia.org/wiki/Variance#Sample_variance (而不是分布的真正平均值和方差)。
发布于 2018-11-13 19:35:57
引用威布尔分布的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)https://stackoverflow.com/questions/22866730
复制相似问题