生成大小为 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
我有以下代码来生成大小为 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