我正在使用SSasym()来生成几年不同数据的拟合。所有这些都是指数衰减的人口死亡率数据。如果我在用SSasym()制作的nls函数上使用预报(),用于生成这些值的方程的结构是什么?
一些示例数据:
df = data.frame(value = c(8.96, 6.32, 6.10, 5.85, 5.75, 5.41, 5.91, 5.83, 5.21, 4.84, 5.80, 5.72, 5.58, 5.30, 4.53),
x = c(5,6,6,7,7,8,9,10,11,12,13,14,15,16,17)
nlsfit = nls(value ~ SSasymp(x, Asym, R0, lrc), data = df)
plot(predict(nlsfit)~df$x, type ='l')
用于生成那行predict()的函数是什么?我通读了文档,没有发现任何东西,并且尝试用标准指数衰减方程式进行复制,但它们不匹配。任何帮助将不胜感激。
答案 0 :(得分:1)
这在?SSasymp
中有解释。表达式为Asym + (R0-Asym)*exp(-exp(lrc)*x)
。
df <- data.frame(
value = c(8.96, 6.32, 6.10, 5.85, 5.75, 5.41, 5.91, 5.83, 5.21, 4.84, 5.80, 5.72, 5.58, 5.30, 4.53),
x = c(5,6,6,7,7,8,9,10,11,12,13,14,15,16,17))
nlsfit <- nls(value ~ SSasymp(x, Asym, R0, lrc), data = df)
coefs <- coef(nlsfit)
Asym <- coefs["Asym"]
R0 <- coefs["R0"]
lrc <- coefs["lrc"]
Asym + (R0-Asym)*exp(-exp(lrc)*df$x)
# [1] 8.935511 6.300831 6.300831 5.641607 5.641607 5.476663 5.435392 5.425066
# [9] 5.422482 5.421836 5.421674 5.421634 5.421624 5.421621 5.421620
predict(nlsfit)
# [1] 8.935511 6.300831 6.300831 5.641607 5.641607 5.476663 5.435392 5.425066
# [9] 5.422482 5.421836 5.421674 5.421634 5.421624 5.421621 5.421620