2014-03-24 84 views
0

我有一个功能。从这我可以很容易地估计参数。多次优化功能R代码

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)。我想用循环来做这件事,我该怎么做?

+0

在整个代码块上使用'replicate',而不仅仅是优化部分。 –

回答

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

你可以试试:

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运行的结果。