簡體   English   中英

生成大小為 n 的樣本並在 R 中應用函數?

[英]Generate samples of size n and apply function in R?

我有以下代碼來生成大小為 n 的樣本,然后想對樣本執行優化功能。 我應該從優化函數中得到 1000 個結果,但只得到 1 個? 有沒有辦法跨'x'的行執行優化功能

f2d <- function(n){
  x <- replicate(1000, rpois(n, 10))
  optimise(
    f = function(theta){ sum(dpois(x, theta, log = TRUE)) }, 
    interval = c(0,50), 
    maximum = TRUE
  )
}

該函數必須應用於每個樣本,因此定義一個輔助函數fun以應用於每一列。 然后,在apply循環中調用該函數。

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)
}

set.seed(2021)
res <- f2d(10)
res <- do.call(rbind, res)

head(res)
#     maximum  objective
#[1,] 9.499999 -26.3231 
#[2,] 11.8     -25.62272
#[3,] 9.799998 -31.49774
#[4,] 10.4     -25.40647
#[5,] 10.4     -31.57375
#[6,] 9.899997 -27.67275

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM