我通过以下步骤使用最大似然估计在R中运行模拟:
> X<-c(rep(0,14),rep(1,30),rep(2,36),rep(3,68),rep(4,43),rep(5,43),rep(6,30),rep(7,14),rep(8,10),rep(9,6),rep(10,4),rep(11,1),rep(12,1))
> hist(X,right=FALSE,prob=TRUE)
到目前为止这么好,我生成了数据,然后绘制了直方图;现在是MLE部分:
> negloglike<-function(lam){
+ n*lam-sum(X)*log(lam)+sum(log(factorial(X)))}
> out<-nlm(negloglike,p=c(0.5),hessian=TRUE)
之后我获得了以下数据:
$minimum
[1] 667.183
$estimate
[1] 3.893331
$gradient
[1] -2.575476e-05
$hessian
[,1]
[1,] 77.03948
$code
[1] 1
$iterations
[1] 10
对于我所读到的,估计值应该是我的函数达到最大值的lambda值,对吗?
问题是我想在直方图上绘制一条线,看看我的拟合数据有多好。我不知道我是否应该使用abline,curve或其他指令;怎么做? 感谢
答案 0 :(得分:2)
您可以随时执行以下操作:
hist(X, prob=TRUE)
lambdaEst <- 3.893331
y_seq <- 0:12
lines(y_seq, dpois(y_seq, lambdaEst), col=2, type="b")
正如本指出的那样,在这种情况下使用条形图可能更有意义:
plot(table(X)/length(X))
lines(y_seq, dpois(y_seq, lambdaEst), col=2, type="b")
另一个选择是使用barplot()
:
barplot(table(X)/length(X),space=0)
lines(y_seq+1/2, dpois(y_seq, lambdaEst), col=2, type="b")