R代码优化了几次函数

时间:2014-03-24 12:34:08

标签: r mathematical-optimization

我有一个功能。由此我可以轻松估算参数。

sex <- c("F","M","F","M","F")
age <- rnorm(5,28,1.2) 
dat <- data.frame(sex,age)
myfun <- function(par, x1,x2){

    -sum(log(exp(par[1]*x1+par[2]*x2)))
}
myf <- optim(myfun, par=c(0.1,0.4), x1=dat$age,x2=as.numeric(dat$sex))$par

我想优化此功能10次。如果我使用replicate(10,myf),那么它会给出相同的值10次。但我想由于age <- rnorm(5,28,1.2),每次都会给出一些不同的参数估计值。我想用循环来做这个,我该怎么办?

2 个答案:

答案 0 :(得分:1)

我不确定你需要什么,但这对你有用吗?

myfun <- function(par, x1,x2){

  -sum(log(exp(par[1]*x1+par[2]*x2)))
}

sex <- c("F","M","F","M","F")

for (i in 1:10){
age <- rnorm(5,28,1.2) 
dat <- data.frame(sex,age)
print(optim(myfun, par=c(0.1,0.4), x1=dat$age,x2=as.numeric(dat$sex))$par)
}

答案 1 :(得分:1)

您可以尝试:

myf <- sapply(
  split(dat, 1:nrow(dat)),
  function(dat.row) optim(myfun, par=c(0.1,0.4), x1=dat.row$age,x2=as.numeric(dat.row$sex))$par
)

产地:

             1         2         3         4         5
[1,] 23.861664 24.517216 26.823635 24.913725 24.573490
[2,]  4.806402  4.911159  5.459353  4.943076  5.214703

每列都是optim的一次运行的结果。