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