R:定义函数的问题

时间:2017-05-10 12:31:51

标签: function nls chemistry

几个小时我一直在努力解决以下问题: 我试图获得一个适合我测量数据的功能。但是,我需要说明为什么我选择一个特定的功能。在仔细阅读了一些关于方解石成核和生长的文献后,我们认为描述碳酸钙成核时间的函数必须具有以下形式:

时间=(I ^ a)(pH ^ b)((化学计量(r_aq))^ c)*((ω-1)^ d)

其中,I-离子强度,ω=饱和度和a,b,c,d是几个参数。 (例如,d是晶体生长的类型)。

首先,我想通过假设恒定的pH,饱和度和离子强度来检查c参数值(我有这方面的实验数据)。最终我试图通过nls函数获得所有参数值,因此有人可以在几种地球化学条件下分辨成核时间范围。

但是,我有两个与此目标有关的问题:

1)该功能似乎无法正常工作。它给了我错误 递归默认参数引用/早期问题参数缺失,我无法修复(我认为它易于修复)

2)nls函数本身在初始参数估计时给出了关于奇异梯度矩阵的错误。

我试图谷歌我的错误,但不幸的是我无法自己修复它们。有关功能部分的代码如下

# function
I <- 0.20
pH <- 11
r_aq70_fit <- seq(0.01, 100, 0.01)
t70_fit <- seq(1, 10000, 1)
omega <- 70

a <- 1
b <- 1
d <-1

funct70 <- function(I=I, pH, r_aq70_fit, omega=omega, a, b, c, d) {
           (I^a)*(pH^b)*((r_aq70_fit)^c)*((omega-1)^d)
           }

fit70 <- nls(t70_fit ~ funct70(I, pH, r_aq70_fit, omega, a, b, c, d), 
         data = data.frame(r_aq70_fit, t70_fit), 
         start = list(a=a, b=b, c=0.5, d=d))

我测量的绘图数据: 测量1

(我不确定它是否可以打开)

0 个答案:

没有答案