我有一个功能。由此我可以轻松估算参数。
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 :(得分: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
的一次运行的结果。