统计信息中的SSasym()函数的结构

时间:2019-06-19 19:48:56

标签: r predict nls

我正在使用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()的函数是什么?我通读了文档,没有发现任何东西,并且尝试用标准指数衰减方程式进行复制,但它们不匹配。任何帮助将不胜感激。

1 个答案:

答案 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