所以我使用了rgl包并创建了我自己的似然函数来输出正态分布中样本的对数似然。我这样做只是为了学习如何自己编程,这样我就能更好地理解可能性的工作原理以及MLE的工作原理。无论如何,我注意到一些特别奇怪的东西,我想知道是否有人知道这里的答案。当我绘制图形时,它以折叠曲线形状出现,但我认为我期待更多的锥形形状。基本上,令人好奇的是为什么当情节在sigma ^ 2值达到峰值时(在此轴上,峰值两侧有一个良好的下降),mu值保持大致相同?就好像一旦sigma ^ 2参数达到最佳水平,mu值之间的似然差异非常小。例如,当我检查sigma最大点的可能性的方差(保持不变)时,它是11.5。相反,当我检查相同点的mu的方差时,方差是23402.由于我没有足够的声誉我还不能发布图像,我将发布生成图形的R代码
#Define LL function
LL <- function(X, theta)
{
mu <- theta[1]
sigma2 <- theta[2]
log.likelihood <- 0
n <- length(X)
for (i in 1:length(X))
{
log.likelihood <- log.likelihood - (((X[i]-mu)^2)/(2*sigma2)) -
log(sqrt(2*pi*sigma2))
}
return(log.likelihood)
}
#Parameters
Mu <- 100
Sigma2 <- 50
#Sample
N <- 100
set.seed(1)
IQs <- rnorm(N, mean=Mu, sd=sqrt(Sigma2))
#Possible values to test
x <- posMu <- seq(80, 120, length.out=200)
y <- posSig <- seq(20, 60, length.out=200)
#x1 <- sort(x, decreasing=T)
#Produce LLs for plotting
LLlist <- NULL
for (m in 1:length(posMu)){
LLs <- NULL
for(s in 1:length(posSig)){
posTheta <- cbind(posMu[m],posSig[s])
LLs <- c(LLs, LL(IQs,posTheta))
}
LLlist <- cbind(LLlist,LLs, deparse.level=0)
}
z <- LLlist
#Find the approximate MLE
mLL <- which(LLlist == max(LLlist), arr.ind=TRUE)
cbind(posMu[mLL[2]],posSig[mLL[1]],LLlist[mLL])
#Graph the LLs
library(rgl)
open3d()
plot3d(mean(x),mean(y),mean(z), xlab="Mu", ylab="Sigma2", zlab="log L", xlim=c(min(x),max(x)), ylim=c(min(y),max(y)), zlim=c(min(z),max(z)))
surface3d(x, y, z, color=rainbow(length(x)))
那么,我的代码是错的吗?或者LL曲线应该是什么样的?如果是这样,为什么sigma ^ 2似乎显示出清晰的曲线和高度,而mu几乎没有差异?提前谢谢!