创建一个函数(find.mle
在此示例中),它采用数据向量并根据它计算 MLE,然后使用apply
将其应用到以下列data
:
library("maxLik")
data <- replicate(20, rnorm(100))
find.mle = function(d) {
logLikFun <- function(param) {
mu <- param[1]
sigma <- param[2]
sum(dnorm(d, mean = mu, sd = sigma, log = TRUE))
}
maxLik(logLik = logLikFun, start = c(mu = 0, sigma = 1))$estimate
}
mles = apply(data, 2, find.mle)
这将为您提供一个包含您的估计的 2x20 矩阵:
> mles
[,1] [,2] [,3] [,4] [,5] [,6]
mu 0.03675611 0.1129927 -0.06499549 0.04651673 0.06593217 -0.08753828
sigma 0.93497523 0.9817961 0.84734600 0.93139761 1.01083924 1.04114752
[,7] [,8] [,9] [,10] [,11] [,12]
mu 0.1629807 0.01665411 0.2306688 -0.02147982 0.07723695 0.009476477
sigma 1.0428713 1.01658241 1.0073277 0.99781761 0.99327722 0.983356049
[,13] [,14] [,15] [,16] [,17] [,18]
mu 0.06524147 0.02442983 -0.1305258 -0.1050299 0.1449996 0.1172218
sigma 1.04004799 0.89963009 0.9979824 1.0227063 0.9319562 0.9916734
[,19] [,20]
mu -0.1288296 -0.05769467
sigma 0.9975368 0.89506586