在年龄数据中拟合长度的异常曲线

问题描述

我为过于简化的数据表示歉意,但我总是因为包含太多而受到责骂。完整数据在这里... https://1drv.ms/x/s!AgJEX3KZYGJspmBjAKUrup5UU3Gl?e=dKNuYs 我正在尝试拟合一条曲线并得到一个方程,我可以用它来根据其他数据集中的鱼的长度来预测年龄。我尝试过线性模型、自然样条、von bertalanfy、gompertz、logistic 等,但并没有真正很好地捕获数据。

structure(list(Age = c(0,1,2,3,4,5,6,7,8,9,14,16),FL = c(96.1891891891892,201.026845637584,243.981818181818,274.594594594595,303.291666666667,337.677419354839,378.347826086957,410.4,475,415,708,754)),row.names = c(NA,-12L),class = c("tbl_df","tbl","data.frame"))

完整的数据集看起来像这样...

enter image description here

如您所见,线性模型并不是很好。到目前为止,自然样条是最好的,但我不知道如何获得预测年龄的方程。我可以使用

查看模型摘要
lm = lm(FL ~ ns(Age,4),data=wi.age.length) 
res = resid(lm)
summary(lm)

但我不知道如何从这个输出中建立方程。谢谢

解决方法

例如,如果您想预测 Age bei FL = 200,您可以使用 predict()

lm = lm(FL ~ ns(Age,4),data=wi.age.length) 
res = resid(lm)
summary(lm)

# to predict Age 
predict(lm,FL = 200)