如何在MLE之后绘制我的数据的拟合程度?

时间:2015-02-21 20:19:11

标签: r

我通过以下步骤使用最大似然估计在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或其他指令;怎么做? 感谢

1 个答案:

答案 0 :(得分:2)

您可以随时执行以下操作:

hist(X, prob=TRUE) 
lambdaEst <- 3.893331
y_seq <- 0:12
lines(y_seq, dpois(y_seq, lambdaEst), col=2, type="b")

enter image description here

正如本指出的那样,在这种情况下使用条形图可能更有意义:

plot(table(X)/length(X))
lines(y_seq, dpois(y_seq, lambdaEst), col=2, type="b")

enter image description here 另一个选择是使用barplot()

barplot(table(X)/length(X),space=0)
lines(y_seq+1/2, dpois(y_seq, lambdaEst), col=2, type="b")

enter image description here