【发布时间】:2018-11-01 01:52:05
【问题描述】:
我正在尝试使用 nls 函数解决 R 中的两分量衰减模型,但遇到了错误。等式是:
其中t是时间,Ctot是C1+C2,p1和p2是Ctot的已知比例。
我的数据 (dd) 是:
> head(dd,n=15)
t Ctot
1 0.00 6.62
2 0.33 6.45
3 0.50 6.38
4 0.67 6.44
5 0.83 6.38
6 1.00 6.39
7 1.17 6.35
8 1.33 6.33
9 1.50 6.33
10 1.67 6.28
11 1.83 6.17
12 2.00 6.11
13 2.17 6.07
14 2.33 5.89
15 2.50 5.86
使用我尝试过的 nls:
p1 <- 0.3
p2 <- 0.7
z <- nls(Ctot~(p1*C1*(exp(-k1*t)))+(p2*C2*(exp(-k2*t))), data=dd, start=list(C1=6, C2=0.1, k1=0.01, k2=0.01))
但是我得到了:
z <- nls(Ctot~(p1*C1*(exp(-k1*t)))+(p2*C2*(exp(-k2*t))), data=dd, start=list(C1=6, C2=0.1, k1=0.01, k2=0.01))
Error in numericDeriv(form[[3L]], names(ind), env) :
Missing value or an infinity produced when evaluating the model
如果有人有建议,我将不胜感激!
【问题讨论】:
-
可能
k1和k2的最优值比较接近,所以只有一个term的模型会更好。 -
@G.Grothendieck 是的,但它是一个双分量衰减模型。
-
如果 k1 = k2 则不是。
-
似乎 p 和 C 可能无法单独估计。如果
Ctot == C1+C2,那么p1和p2不是必须为1或者是固定比例吗? -
我猜
Ctot==C1+C2仅适用于t==t0。否则C1和C2不能是常量,因为Ctot不会随着时间的推移而保持不变。