R 对数正态 极大似然估计MLE 统计模拟

0.摘要

生成服从对数正态的样本,写出关于参数的极大似然函数,对极大似然函数求最值,求得参数估计值。比较R的不同优化函数、不同样本量、不同估计次数的MSE和Bias。

1.产生100个随机样本

set.seed(100)
lnormdata1 <- rlnorm(100, 2, 3)

2.利用不同方法计算参数的极大似然估计

Step1: Set the initial value
theta0 <- c(1, 2)
data0 <- log(lnormdata1)
Step2: Give the likelihood function
NormHood <- function(data, params){
  like <- sum(log(dnorm(data, params[1], params[2])))
  return(-like)
}
Step3: MLE by 4 kinds of R functions
fit1 <- constrOptim(theta =theta0, data = data0, f = NormHood, grad = NULL, ui = diag(2), ci = c(0,1), outer.iterations = 1000)
fit2 <- nlminb(start = theta0, objective = NormHood, data = data0)
fit3 <- optim(par = theta0, fn = NormHood, data = data0)
fit4 <- nlm(NormHood, p = theta0, data = data0)
Step4: Report the results
result1 <- data.frame(constrOptim_result = fit1$par, nlminb_result = fit2$par, optim_result = fit3$par, nlm_result = fit4$estimate, row.names = c("μ", "σ"))
kable(result1)
constrOptim_result nlminb_result optim_result nlm_result
μ 2.008688 2.008739 2.008813 2.008739
σ 3.047036 3.046783 3.046608 3.046780

由上面的表格可以看出,constrOptim方法估计出的μ最接近真实值,optim方法估计出的σ最接近真实值.

3.不同方法、样本量、估计次数下比较Bias和MSE,并画出盒图。

1) 初始化结果输出
snum <- c(500, 1000, 2000)
etimes <- c(800, 1500, 3000)
result2 <- vector(mode = "list", length = length(etimes))
for (i in 1 : lengt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值