结果并不令人惊讶 . 对于具有大峰度的分布,样本方差的预期方差大致为mu4 / N,其中mu4是分布的第4个时刻 . 对于对数正态,mu4指数地取决于参数sigma ^ 2,这意味着对于足够大的sigma值,样本方差将相对于真实方差在整个地方 . 这正是你所观察到的 . 在你的例子中,mu4 / N~(coeffOfVar ^ 8)/ N~50 ^ 8 / 1e6~4e7 .
用于推导样本变量的预期方差 . 见/SampleVarianceDistribution.html . 下面是一些代码,以更精确的方式说明这些想法 . 注意样本方差的方差和理论预期值的大值,即使coeffOfVar = 5 .
exp.var.of.samp.var
(n-1)*((n-1)*mu4-(n-3)*mu2^2)/n^3
}
mu2.lnorm
(exp(sigma^2)-1)*exp(2*mu+sigma^2)
}
mu4.lnorm
mu2.lnorm(mu,sigma)^2*(exp(4*sigma^2)+2*exp(3*sigma^2)+3*exp(2*sigma^2)-3)
}
exp.var.lnorm.var
exp.var.of.samp.var(n,mu2.lnorm(mu,sigma),mu4.lnorm(mu,sigma))
}
exp.var.norm.var
exp.var.of.samp.var(n,sigma^2,3*sigma^4)
}
coeffOfVar
mean
sigma
mu
n
m
## Get variance of sample variance for lognormal distribution:
var.trial
cat("samp. variance (mean of",m,"trials):",mean(var.trial),"\n")
cat("theor. variance:",mu2.lnorm(mu,sigma),"\n")
cat("variance of the sample var:",var(var.trial),"\n")
cat("expected variance of the sample var:",exp.var.lnorm.var(n,mu,sigma),"\n")
> samp. variance (mean of 10000 trials): 105.7192
> theor. variance: 100
> variance of the sample var: 350997.7
> expected variance of the sample var: 494053.2
## Do this with normal distribution:
var.trial
cat("samp. variance (mean of",m,"trials):",mean(var.trial),"\n")
cat("theor. variance:",sigma^2,"\n")
cat("variance of the sample var:",var(var.trial),"\n")
cat("expected variance of the sample var:",exp.var.norm.var(n,mu,sigma),"\n")
> samp. variance (mean of 10000 trials): 3.257944
> theor. variance: 3.258097
> variance of the sample var: 0.002166131
> expected variance of the sample var: 0.002122826
如果觉得《java 随机数 平均值_从平均值 变异系数生成对数正态分布随机数》对你有帮助,请点赞、收藏,并留下你的观点哦!