首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NLS在R中的应用

NLS在R中的应用
EN

Stack Overflow用户
提问于 2016-09-06 11:20:40
回答 1查看 464关注 0票数 1

我试图将一个非线性回归模型应用于R.

数据如下:

代码语言:javascript
运行
复制
data$WT
 [1] 107.194364  95.986477  87.511449  74.028678  67.733609
 [6]  52.117508  38.486519  24.197712  15.854248   8.641564
[11]   5.965327   2.871084

data$So
 [1] 2.0000000 1.0000000 0.5000000 0.2500000 0.2000000 0.1000000
 [7] 0.0500000 0.0250000 0.0125000 0.0062500 0.0031250 0.0015625

模式是:

代码语言:javascript
运行
复制
bindmod <- nls(WT ~
(Ase* ((Kd+So+0.03)- sqrt((Kd+So+0.03)^2 - 4*So*0.03)/2)/So)
, data = data, start = list(Kd = 0.03, Ase = 2000))

试图适应此错误时,会出现以下错误:

numericDeriv(form[3L],name(Ind),env)中的错误:在评估模型时所产生的缺失值或无穷大:警告消息: sqrt((Kd + So + 0.03) ^2-4* So *0.03):生成NaNs

然而,平方根中这个术语的值不应该是负值,所以我不明白它为什么会产生NaNs。这与评估过程有关吗?

任何帮助都将不胜感激,谢谢。

乔治

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-06 11:34:14

您没有指定下/上界,所以当kdso是负值时,sqrt会生成NaNs。尝试同时设置两个lower/upperbounds _and_ thealgorithm`:

代码语言:javascript
运行
复制
  nls(WT ~ (Ase* ((Kd+So+0.03) - sqrt((Kd+So+0.03)^2 - 4*So*0.03)   /   2) / So ),
      data = data,
      start = list(Kd = 0.03, Ase = 2000),
      lower = list(kd=0.01, Ase=  0.01 ),
      algorithm = "port")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39347817

复制
相关文章

相似问题

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