我装了一个三线模型
library(nlstools)
library(nlsMicrobio)
library(investr) # for plotFit function
trilinear
LOG10N ~ LOG10N0 - (t >= Sl) * (t <= (Sl + (LOG10N0 - LOG10Nres) *
log(10)/kmax)) * kmax * (t - Sl)/log(10) + (t >= Sl) * (t >
(Sl + (LOG10N0 - LOG10Nres) * log(10)/kmax)) * (LOG10Nres -
LOG10N0)
细菌存活数据
data(survivalcurve1)
survivalcurve1
t LOG10N
1 0.00 7.56
2 0.33 7.41
3 1.00 7.26
4 2.00 7.30
5 3.00 7.26
6 4.00 7.15
7 5.00 7.30
8 6.00 6.48
9 7.00 6.15
10 8.00 5.30
11 9.00 4.78
12 10.00 5.11
13 11.00 2.30
14 13.00 3.15
15 14.00 2.00
16 16.00 1.00
17 18.00 1.00
18 20.00 1.00
19 23.00 1.00
使用符合nls
的OLS:
nls = nls(trilinear, survivalcurve1,
list(Sl = 5, kmax = 1.5, LOG10N0 = 7, LOG10Nres = 1))
overview(nls)
Parameters:
Estimate Std. Error t value Pr(>|t|)
Sl 4.7064 0.5946 7.915 9.82e-07 ***
kmax 1.3223 0.1222 10.818 1.76e-08 ***
LOG10N0 7.3233 0.1884 38.875 < 2e-16 ***
LOG10Nres 1.0000 0.2307 4.334 0.00059 ***
t-based confidence interval:
2.5% 97.5%
Sl 3.4389618 5.973874
kmax 1.0617863 1.582868
LOG10N0 6.9218035 7.724863
LOG10Nres 0.5082284 1.491772
plotFit(nls, interval="confidence")
我想知道我是否也可以使用原始(非对数转换)单元格(在这种情况下为survivalcurve1$N = (10^survivalcurve1$LOG10N)
)的最大似然拟合该模型,同时考虑到错误结构会是大约泊松?这可能是使用bbmle
的{{1}}完成的,如果是这样,那么正确的语法是什么?
编辑:我试过
mle2
和
survivalcurve1$N = as.integer(10^survivalcurve1$LOG10N)
trilinearN=formula(N ~ dpois( 10^(LOG10N0 - (t >= Sl) * (t <= (Sl + (LOG10N0 - LOG10Nres) *
log(10)/kmax)) * kmax * (t - Sl)/log(10) + (t >= Sl) * (t > (Sl + (LOG10N0 - LOG10Nres) * log(10)/kmax)) * (LOG10Nres - LOG10N0))))
m1 = mle2(trilinearN, start=list(Sl = 5, kmax = 1.5, LOG10N0 = 7, LOG10Nres = 1), data=survivalcurve1)
给了我
coef(summary(m1))
无法将预测绘制成工作:
Estimate Std. Error z value Pr(z)
Sl 4.902048 1.669354e-04 2.936495e+04 0
kmax 1.475309 3.210865e-04 4.594739e+03 0
LOG10N0 7.344014 3.785883e-05 1.939842e+05 0
LOG10Nres -1.830498 1.343019e-10 -1.362972e+10 0
因为这给了我错误
df=data.frame(t=seq(0,max(survivalcurve1$t),length=100))
df$pred=predict(m1,newdata=df)
with(df,lines(t,pred,col=2))
有什么想法?另外,如果Poisson Error : object of type 'symbol' is not subsettable
Error in gfun(object, newdata = newdata, location = location, op = "predict") :
can only use predict() if formula specified
拟合比mle2
更合适,我该如何判断? (由于规模不同,无法比较AIC)
PS nls
模型也可以,如果更容易的话:
geeraerd