r - 非线性最小二乘法拟合 nls 非数字参数与二元运算符的问题

标签 r nls

我刚开始使用 R 并希望对公式 y=A(1-exp(-bL))+R 进行非线性最小二乘拟合 nls(...)。 我通过

定义我的函数 g
> g<-function(x,y,A,b,R) {
    y~A(1-exp(-bx))+R
    }

并希望执行 nls

>nls((y~g(x,y,A,b,R)),data=Data, start=list(A=-2,b=0,R=-5))

我以以下错误消息结束。

>Error in lhs - rhs : non-numeric argument to binary operator

我想这只是另一个初学者犯的一个愚蠢的基本错误,但如果有人能帮助我,我将非常高兴。

下一个问题是,我是否可以将拟合曲线应用到我的图中

>plot(x,y,main="VI.20.29")

感谢大家花时间阅读并希望回答我的问题!

详细信息: 我有一个包含 x 值(Light.intensity)和 y 值(例如 VI.20.29)的表格

> photo.data<-read.csv("C:/X/Y/Z.csv", header=T)
    > names(photo.data)
     [1] "Light.intensity" "SR.8.6"          "SR.8.7"         
     [4] "SR.8.18"         "SR.8.20"         "VI.20.1"        
     [7] "VI.20.5"         "VI.20.20"        "VI.20.29"       
    [10] "DP.19.1"         "DP.19.15"        "DP.19.33"       
    [13] "DP.19.99"       
    > x<-photo.data$Light.intensity
    > x
    [1]    0   50  100  200  400  700 1000 1500 2000
    > y<-photo.data$VI.20.29
    > y
    [1] -2.76 -2.26 -1.72 -1.09  0.18  0.66  1.47  1.48  1.63
    > plot(x,y,main="VI.20.29")
    > Data<-data.frame(x,y)
    > Data
         x     y
    1    0 -2.76
    2   50 -2.26
    3  100 -1.72
    4  200 -1.09
    5  400  0.18
    6  700  0.66
    7 1000  1.47
    8 1500  1.48
    9 2000  1.63
    > g<-function(x,y,A,b,R) {
    +   y~A(1-exp(-bx))+R
    +   }
    > nls((y~g(x,y,A,b,R)),data=Data, start=list(A=-2,b=0,R=-5))
    Error in lhs - rhs : non-numeric argument to binary operator

最佳答案

问题是您在函数内调用函数。你说的是 y~g(...),当 函数 g(...) 本身调用 y~(other variables) 。这在某种程度上是一种“重复计算”。

只是做:

nls(y~A*(1-exp(-b*x))+R, data=Data, start=list(A=-2,b=0,R=-5))

关于r - 非线性最小二乘法拟合 nls 非数字参数与二元运算符的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14505055/

相关文章:

r - ggplot中分类变量的排序

r - 具有多个项目的交叉表

用 R 转置的结果应用

r - 在 R 中拟合广义非线性模型

r - 初始参数估计时的 nls 奇异梯度矩阵

r - 使用 ggplot2 进行演示的主题

从字符串中删除特定模式

r - 使用 nls 函数错误拟合

r - 初始参数估计时 nls 奇异梯度矩阵的误差

r - nls 中的错误,步长因子降低到 minFactor 以下