计算函数输出的均值和方差

Calculate Mean and Variance of function output

我有以下输出 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)
  }

optimise return 是一个包含两个元素的命名列表,maximumobjectivedpois 的 mean/variance (lambda) 将是 maximum。有 fun return 只是 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