我有以下代碼輸出 1000 個 MLE,如何計算輸出的均值和方差并將其包含在函式中?我希望輸出是;f2d(5) = 平均值和方差值
f2d = function(n){
fun = function(y){
optimise(
function(theta){ sum(dpois(y, theta, log = TRUE)) },
interval = c(0,50),
maximum = TRUE
)
}
# apply the function to each poisson sample
x = replicate(1000, rpois(n, 10))
apply(x, 2, fun)
}
uj5u.com熱心網友回復:
optimise回傳一個包含兩個元素的命名串列,maximum和objective。平均/方差(拉姆達)的dpois將是maximum。有fun回報只是maximum:
f2d <- function(n){
fun = function(y){
optimise(
function(theta){ sum(dpois(y, theta, log = TRUE)) },
interval = c(0,50),
maximum = TRUE
)$maximum
}
# apply the function to each poisson sample
x = replicate(1000, rpois(n, 10))
apply(x, 2, fun)
}
順便說一句,由于 lambda 的 MLE 是觀測值的平均值,并且泊松隨機變數的總和也是泊松分布的,您可以替換f2d為
f2d <- function(n) rpois(1e3, 10*n)/n
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/348989.html
上一篇:使用while回圈計算R函式
