我正在尝试将青少年鹅的生长数据与Gompertz模型相匹配,但我想在y-intercept处修复它,
在这种情况下,t = 0
的体重为72.1。采用SSgompertz
中nls
中使用的参数化表格,
我通过设置x =将等式$ Asym *(e ^ { - b3 * b2 ^ x} $转换为$ \ frac {X_0} {exp(-b3)} *(e ^ { - b3 * b2 ^ x} $ 0,
等于y-intercept并求解Asym
,我因此在模型中用另一边的术语替换:$ \ frac {X_0} {exp(-b3)} $
问题是,使用这个改变的模型我不能再使用从SSgompertz获得的起始值了:
library(nlme)
fbmgrp <- groupedData(bm ~ age | dummy, data = bmdata) # I put the data at the bottom of my question
# Defining the Gompertz model with fixed y-intercept
gobm <- function(Age, b2, b3) ((72.1 / exp(-b2)) * (exp(-b2 * (b3^Age))))
gobm <- deriv(body(gobm)[[2]], namevec = c("Age", "b2", "b3"), function.arg = gobm)
fm1 <- nls(bm ~ SSgompertz(age, Asym, b2, b3), data = bmgrp)
# Using parameter estimates for b2 and b3 from SSgompertz in the customized Gompertz model leads to an error:
fm2 <- nls(bm ~ gobm(age, b2, b3), data = bmgrp, start = list(b2 = coef(fm1)[2], b3 = coef(fm1)[3]), na.action = na.exclude)
qr.default中的错误(.swts * attr(rhs,&#34; gradient&#34;)):NA / NaN / Inf in 外国函数调用(arg 1)
另外:警告信息:在log(b3)中:NaNs产生了
5:qr.default(.swts *&gt; attr(rhs,&#34; gradient&#34;)) 4:qr(.swts * attr(rhs,&#34; gradient&#34;))
3:分配(&#34; QR&#34;,qr(.swts * attr(rhs,&#34;渐变&#34;)),envir = thisEnv)
2 :( function(newPars){setPars(newPars)assign(&#34; resid&#34;,.swts *(lhs - assign(&#34; rhs&#34;,getRHS(),envir = thisEnv)), envir = thisEnv)assign(&#34; dev&#34;,sum(resid ^ 2),envir = thisEnv)assign(&#34; QR&#34;,qr(.swts * attr(rhs,&#34; gradient&#34;)),envir = thisEnv)return(QR $ rank&lt; min(dim(QR $ qr)))})(c(7.52734494474091,-0.123046281607752))
1:nls(bm~gobm(年龄,I,K),data = bmgrpd,start = list(I = coef(fm13a)[2], K = coef(fm13a)[3]),na.action = na.exclude)
对于具有固定y截距的Gompertz模型,是否有可能从SSgompertz的参数估计到适当的初始值?
?SSgompertz
表示拐点b2
与x = 0处的函数值有关。
在Ricklefs bookchapter'Avian postnatal development'(1983)中,他展示了Gompertz模型的不同参数化:
$ M(x)= M(∞)* e ^ { - [log M(∞) - log M(0)] * e ^( - K * x)} $
因此,渐近线M(∞)或Asym
和y-截距M(0)或X0
之间的差异表示拐点b2:
$ b2 = log(Asym) - log(X0)&lt; - &gt; X0 = Asym - e ^ {b2} $
我用fm1:
COEF(FM1) Asym b2 b3 1079.4598299 8.6815201 0.8710308 但是
coef(fm1)[1] - exp(coef(fm1)[2])
导致-4813.538
并不接近0附近的真y截距: SSgompertz(0,Asym = coef(fm1)1,b2 = coef(fm1)[2],b3 = coef(fm1)[3])
0.1831767
这里是SSgompertz参数的拟合图: Fit of Gompertz model to body mass measurements
所以如果有人可以帮我找到固定y截距的Gompertz模型的初始值,我将不胜感激!
以下是数据:
bmdata <- read.table(header = TRUE, stringsAsFactors = TRUE, text = "
pop year sex age bm dummy
RUS 2013 f 7 137 1
NL 2012 f 10 132 1
RUS 2013 f 10 225 1
RUS 2013 f 12 183 1
RUS 2013 f 19 362 1
RUS 2003 f 19 880 1
RUS 2005 f 19 750 1
RUS 2005 f 19 625 1
RUS 2004 f 20 670 1
RUS 2004 f 20 900 1
RUS 2004 f 20 740 1
NL 2012 f 21 260 1
RUS 2015 f 21 510 1
RUS 2014 f 22 660 1
RUS 2015 f 22 500 1
RUS 2003 f 22 776 1
RUS 2003 f 22 890 1
RUS 2003 f 22 1010 1
RUS 2004 f 22 612 1
RUS 2004 f 22 316 1
RUS 2004 f 22 622 1
RUS 2004 f 22 438 1
RUS 2005 f 22 684 1
RUS 2005 f 22 652 1
RUS 2014 f 23 695 1
RUS 2015 f 23 520 1
RUS 2015 f 23 450 1
RUS 2003 f 23 854 1
RUS 2003 f 23 897 1
RUS 2003 f 23 1180 1
RUS 2004 f 23 990 1
RUS 2004 f 23 1110 1
RUS 2004 f 23 1080 1
RUS 2004 f 23 500 1
RUS 2004 f 23 480 1
RUS 2005 f 23 820 1
NL 2012 f 24 190 1
RUS 2013 f 24 400 1
RUS 2014 f 24 740 1
RUS 2014 f 24 775 1
RUS 2014 f 24 840 1
RUS 2015 f 24 490 1
RUS 2004 f 24 870 1
RUS 2004 f 24 516 1
RUS 2004 f 24 672 1
RUS 2004 f 24 604 1
RUS 2005 f 24 820 1
RUS 2005 f 24 910 1
NL 2015 f 25 490 1
RUS 2013 f 25 620 1
RUS 2014 f 25 880 1
RUS 2014 f 25 860 1
RUS 2015 f 25 930 1
RUS 2003 f 25 980 1
RUS 2004 f 25 680 1
RUS 2004 f 25 1070 1
RUS 2004 f 25 940 1
RUS 2004 f 25 900 1
RUS 2004 f 25 910 1
RUS 2014 f 26 985 1
RUS 2014 f 26 882 1
RUS 2014 f 26 860 1
RUS 2014 f 26 945 1
NL 2004 f 26 480 1
RUS 2003 f 26 900 1
RUS 2004 f 26 720 1
RUS 2004 f 26 634 1
RUS 2014 f 27 800 1
RUS 2014 f 27 830 1
RUS 2014 f 27 940 1
RUS 2014 f 27 950 1
RUS 2014 f 27 980 1
RUS 2015 f 27 600 1
RUS 2003 f 27 1080 1
RUS 2003 f 27 762 1
RUS 2003 f 27 880 1
RUS 2003 f 27 1020 1
RUS 2003 f 27 950 1
RUS 2003 f 27 1050 1
RUS 2003 f 27 1140 1
RUS 2003 f 27 1080 1
RUS 2003 f 27 1060 1
RUS 2004 f 27 1300 1
RUS 2004 f 27 630 1
RUS 2005 f 27 990 1
NL 2012 f 28 237 1
RUS 2014 f 28 790 1
RUS 2014 f 28 1005 1
RUS 2014 f 28 855 1
RUS 2014 f 28 1005 1
RUS 2015 f 28 660 1
RUS 2003 f 28 966 1
RUS 2003 f 28 902 1
RUS 2003 f 28 740 1
RUS 2003 f 28 960 1
RUS 2003 f 28 1140 1
RUS 2004 f 28 744 1
RUS 2005 f 28 517 1
NL 2015 f 29 430 1
NL 2015 f 29 425 1
RUS 2014 f 29 1100 1
RUS 2014 f 29 1115 1
RUS 2014 f 29 1000 1
RUS 2014 f 29 1055 1
RUS 2014 f 29 1100 1
RUS 2014 f 29 1020 1
RUS 2014 f 29 1125 1
RUS 2014 f 29 1245 1
RUS 2014 f 29 985 1
RUS 2015 f 29 980 1
RUS 2004 f 29 612 1
RUS 2004 f 29 860 1
RUS 2005 f 29 510 1
RUS 2005 f 29 902 1
RUS 2005 f 29 910 1
RUS 2014 f 30 1000 1
RUS 2014 f 30 1000 1
RUS 2014 f 30 1100 1
RUS 2014 f 30 1200 1
RUS 2014 f 30 1030 1
RUS 2014 f 30 980 1
RUS 2014 f 30 1000 1
RUS 2014 f 30 890 1
RUS 2004 f 30 965 1
RUS 2004 f 30 720 1
RUS 2004 f 30 1090 1
RUS 2004 f 30 840 1
RUS 2005 f 30 1146 1
NL 2012 f 31 430 1
RUS 2014 f 31 1140 1
RUS 2014 f 31 1225 1
RUS 2015 f 31 1000 1
RUS 2015 f 31 1020 1
RUS 2015 f 31 1130 1
RUS 2015 f 31 730 1
RUS 2004 f 31 1024 1
RUS 2004 f 31 704 1
RUS 2005 f 31 910 1
RUS 2005 f 31 870 1
NL 2012 f 32 418 1
NL 2012 f 32 282 1
RUS 2014 f 32 1140 1
RUS 2014 f 32 1125 1
RUS 2014 f 32 1085 1
RUS 2015 f 32 1200 1
NL 2004 f 32 530 1
RUS 2003 f 32 1140 1
RUS 2004 f 32 640 1
RUS 2005 f 32 830 1
RUS 2005 f 32 1050 1
RUS 2005 f 32 1140 1
RUS 2005 f 32 1070 1
RUS 2005 f 32 1050 1
RUS 2005 f 32 930 1
RUS 2014 f 33 1090 1
RUS 2014 f 33 1310 1
RUS 2014 f 33 1105 1
RUS 2014 f 33 1060 1
RUS 2015 f 33 820 1
RUS 2015 f 33 750 1
RUS 2003 f 33 850 1
RUS 2004 f 33 476 1
RUS 2004 f 33 810 1
RUS 2004 f 33 1050 1
RUS 2004 f 33 935 1
NL 2015 f 34 560 1
NL 2012 f 34 438 1
NL 2012 f 34 440 1
RUS 2014 f 34 990 1
RUS 2014 f 34 1220 1
RUS 2014 f 34 1090 1
RUS 2014 f 34 1085 1
RUS 2015 f 34 820 1
RUS 2004 f 34 1042 1
RUS 2004 f 34 980 1
RUS 2004 f 34 930 1
RUS 2013 f 35 860 1
RUS 2014 f 35 1210 1
RUS 2014 f 35 1040 1
RUS 2014 f 35 1080 1
RUS 2014 f 35 1270 1
RUS 2004 f 35 1020 1
RUS 2005 f 35 1150 1
NL 2015 f 36 480 1
NL 2015 f 36 530 1
NL 2012 f 36 460 1
RUS 2015 f 36 720 1
RUS 2015 f 36 1060 1
RUS 2005 f 36 1000 1
RUS 2005 f 36 1170 1
RUS 2013 f 37 1030 1
RUS 2013 f 37 1050 1
RUS 2014 f 37 1095 1
RUS 2014 f 37 1025 1
RUS 2014 f 37 1250 1
RUS 2015 f 37 1060 1
RUS 2004 f 37 1120 1
RUS 2014 f 38 1140 1
RUS 2014 f 38 935 1
RUS 2014 f 38 1430 1
RUS 2014 f 38 1225 1
RUS 2014 f 38 1225 1
RUS 2014 f 38 1315 1
NL 2012 f 39 535 1
NL 2012 f 39 195 1
NL 2012 f 39 1090 1
RUS 2014 f 39 1325 1
RUS 2015 f 39 1110 1
RUS 2015 f 39 1030 1
RUS 2015 f 39 960 1
RUS 2015 f 39 980 1
RUS 2014 f 40 1230 1
RUS 2014 f 40 1300 1
RUS 2015 f 40 1040 1
RUS 2003 f 40 1180 1
NL 2012 f 41 500 1
RUS 2015 f 41 1190 1
NL 2004 f 41 1000 1
NL 2012 f 42 580 1
NL 2015 f 44 770 1
NL 2012 f 44 580 1
NL 2012 f 44 700 1
NL 2005 f 44 1050 1
NL 2012 f 45 680 1
NL 2004 f 47 1210 1
NL 2004 f 47 1250 1
NL 2012 f 48 480 1
NL 2012 f 49 605 1
NL 2012 f 49 407 1
NL 2012 f 50 1060 1
NL 2004 f 50 1320 1
NL 2004 f 50 940 1
NL 2012 f 51 1325 1
NL 2012 f 52 1220 1
NL 2012 f 53 880 1
NL 2012 f 53 880 1
NL 2012 f 53 1300 1
NL 2012 f 54 695 1
NL 2012 f 54 640 1
NL 2012 f 54 830 1
NL 2004 f 54 910 1
NL 2004 f 54 1110 1
NL 2012 f 56 540 1
NL 2012 f 56 1225 1
NL 2012 f 56 1280 1
NL 2015 f 57 1080 1
NL 2012 f 57 1180 1
NL 2015 f 58 980 1
NL 2015 f 58 1040 1
NL 2012 f 58 740 1
NL 2015 f 59 1040 1
NL 2015 f 59 1030 1
NL 2015 f 59 1140 1
NL 2012 f 59 1360 1
NL 2012 f 61 900 1")