nls 模型的 optim() 函数的参数 bootstrap 问题
Parameters bootstrap problem with optim() function for nls model
我想在我的 nls 模型中使用 optim(),但不起作用。在我的例子中:
首先我创建一个数据集
library(nls2)
#Data set
x <- c(1 ,10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
y <- c(0.033823, 0.014779, 0.004698, 0.001584, -0.002017, -0.003436,
-0.000006, -0.004626, -0.004626, -0.004626, -0.004626)
dat<-cbind(y,x)
其次,我做了一个简单的nls模型
#Create a nls model
fo3<- y ~ a4*exp(-x/a5)
fm3 <- nls2(fo3, alg = "brute-force",
start = data.frame(a4 = c(-10, 10), a5 = c(-10, 10)),
control = nls.control(maxiter = 1000))
summary(fm3)
现在尝试为 y ~ a4*exp(-x/a5)
模型创建一个 bootstrap 以研究模型系数:
# bootstrap parametric
# nls model with par
#y = a4 * exp(-x/a5)
fstar<- function(dat,a) {
y= a[1]*exp(-x/a[2])
}
## Simulation 999 times
Nsim=999
RES1=NULL
for(i in 1:Nsim)
{
oo2=optim(c(0.97, 0.32),fstar, method="Nelder-Mead",control=list(maxit=10000))
RES1<-rbind(oo2$par)
write.table(RES1, file ="boot.out.mod", row.names=F, col.names=F,append=T)
}
#
我的输出很差:
Error in fn(par, ...) : argument "a" is missing, with no default
有没有会员可以帮帮我?
谢谢!
如果将 sum() 放入函数中并将 (dat,a) 更改为 (a,x,y),就可以了!
# bootstrap parametric
# nls model with par
#y = a4 * exp(-x/a5)
fstar<- function(a,x,y) {
sum (y= a[1]*exp(-x/a[2]))
}
## Simulation 999 times
Nsim=999
RES1=NULL
for(i in 1:Nsim)
{
oo2=optim(c(0.97, 0.32),fstar, x=x, y=y, method="Nelder-Mead",control=list(maxit=10000))
RES1<-rbind(oo2$par)
write.table(RES1, file ="boot.out.mod", row.names=F, col.names=F,append=T)
}
#
我想在我的 nls 模型中使用 optim(),但不起作用。在我的例子中:
首先我创建一个数据集
library(nls2)
#Data set
x <- c(1 ,10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
y <- c(0.033823, 0.014779, 0.004698, 0.001584, -0.002017, -0.003436,
-0.000006, -0.004626, -0.004626, -0.004626, -0.004626)
dat<-cbind(y,x)
其次,我做了一个简单的nls模型
#Create a nls model
fo3<- y ~ a4*exp(-x/a5)
fm3 <- nls2(fo3, alg = "brute-force",
start = data.frame(a4 = c(-10, 10), a5 = c(-10, 10)),
control = nls.control(maxiter = 1000))
summary(fm3)
现在尝试为 y ~ a4*exp(-x/a5)
模型创建一个 bootstrap 以研究模型系数:
# bootstrap parametric
# nls model with par
#y = a4 * exp(-x/a5)
fstar<- function(dat,a) {
y= a[1]*exp(-x/a[2])
}
## Simulation 999 times
Nsim=999
RES1=NULL
for(i in 1:Nsim)
{
oo2=optim(c(0.97, 0.32),fstar, method="Nelder-Mead",control=list(maxit=10000))
RES1<-rbind(oo2$par)
write.table(RES1, file ="boot.out.mod", row.names=F, col.names=F,append=T)
}
#
我的输出很差:
Error in fn(par, ...) : argument "a" is missing, with no default
有没有会员可以帮帮我?
谢谢!
如果将 sum() 放入函数中并将 (dat,a) 更改为 (a,x,y),就可以了!
# bootstrap parametric
# nls model with par
#y = a4 * exp(-x/a5)
fstar<- function(a,x,y) {
sum (y= a[1]*exp(-x/a[2]))
}
## Simulation 999 times
Nsim=999
RES1=NULL
for(i in 1:Nsim)
{
oo2=optim(c(0.97, 0.32),fstar, x=x, y=y, method="Nelder-Mead",control=list(maxit=10000))
RES1<-rbind(oo2$par)
write.table(RES1, file ="boot.out.mod", row.names=F, col.names=F,append=T)
}
#