我有以下代碼來生成大小為 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
)
}
uj5u.com熱心網友回復:
該函式必須應用于每個樣本,因此定義一個輔助函式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
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/348428.html
上一篇:在Java中創建一個通用函式
下一篇:InvalidOperation:[<class'decimal.ConversionSyntax'>]在Lambda函式python中
