gpt4 book ai didi

r - 如何在 R 中编写最大似然例程?

转载 作者:行者123 更新时间:2023-12-01 11:00:28 24 4
gpt4 key购买 nike

我想对我创建的数据样本运行一些最大似然代码。这是我目前所拥有的:

library("maxLik") 
data <- replicate(20, rnorm(100))
logLikFun <- function(param) {
mu <- param[1]
sigma <- param[2]
sum(dnorm(data, mean = mu, sd = sigma, log = TRUE))
}
mle <- maxLik(logLik = logLikFun, start = c(mu = 0, sigma = 1))
summary(mle)

我在提取 20 个样本的每个样本的均值和标准差时遇到了一些问题,我修改了应用函数以尝试适应这个问题,但还没有任何效果。有任何想法吗?

最佳答案

创建一个函数(在本例中为 find.mle)获取数据向量并基于它计算 MLE,然后使用 apply 将其应用到数据的列:

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

关于r - 如何在 R 中编写最大似然例程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11418534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com