dmst <- function(x, mu=0, sigma=1, v, alpha, log=FALSE)
{
t <- (x-mu)/sigma
logf <- log(gamma((v+1)/2)) - log(gamma(v/2)) - 1/2*log(v*pi) -log(sigma) - (v+1)/2*log(1+t^2/v)
F <- pt(t,v)
logg <- log(alpha) + logf - 2*log(F+alpha-alpha*F)
if(log) logg else exp(logg)
}
##这是一个密度函数------------------------------------------
rmst <- function(n, mu=0, sigma=1, v, alpha)
{
u <- runif(n, 0, 1)
t <- alpha * u /( alpha*u-u+1)
x <- qt(t, v)
x <- mu + sigma*x
x
}
### 产生某分布的随机数----------------------------
library(stats)
n <- 1
set.seed(0)
x <- rmst(n, mu=0, sigma=1, v=3, alpha=0.1)
ll <- function( dp)
{
ll <- sum( dmst(x, dp[1], dp[2], dp[3], dp[4], log=TRUE))
-ll
}
p.start = c(0,1,3,1)
nlminb(p.start, ll)
## 相对产生的随机数进行极大似然估计得到分布的参数估计,但总会出现警告,是nlminb使用有错误吗?
##还是其他什么问题?
##求帮助,先谢过


雷达卡







京公网安备 11010802022788号







