截断法线由下式给出:
dtnorm<- function(x, mean, sd, a, b) {
dnorm(x, mean, sd)/(pnorm(b, mean, sd)-pnorm(a, mean, sd))
}
ptnorm <- function(x, mean, sd, a, b) {
(pnorm(x,mean,sd) - pnorm(a,mean,sd)) /
(pnorm(b,mean,sd) - pnorm(a,mean,sd))
}
拟合由下式给出:
fitdist( data, tnorm, method="mle",
start=list(mean=mapply("[[", results[1], 1),
sd=mapply("[[", results[1], 2)),
fix.arg=list(a=minLoose,b=maxLoose))
其中 results[i] 是一个矩阵,其中 fitdist 的 mle 结果使用 normal 而不是 tnormal。
我得到以下 tnorm 的结果:
mean=-0.00844725266454969, sd=0.012540928272073
而规范:
mean=0.00748402597402597, sd=0.00614293813955003
数据均大于 0 且小于 0.04,因此为 tnorm 获得的 mle 似乎不正确....有什么建议吗?
谢谢!