首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带optim()函数的nls模型的参数自举问题

带optim()函数的nls模型的参数自举问题
EN

Stack Overflow用户
提问于 2019-02-28 05:10:56
回答 1查看 258关注 0票数 0

我喜欢在我的nls模型中使用optim(),但不起作用。在我的示例中:

首先,我创建一个数据集

代码语言:javascript
复制
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模型

代码语言:javascript
复制
#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:

代码语言:javascript
复制
# 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)
}
#

我得到了一个糟糕的输出:

代码语言:javascript
复制
Error in fn(par, ...) : argument "a" is missing, with no default

有哪位议员可以帮我吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-05 08:40:00

如果在函数中放入sum(),并将(dat,a)改为(a,x,y),那么它是有效的!

代码语言:javascript
复制
# 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)
}
#
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54914546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档