我如何拟合和预测我的数据,以及如何为这些数据添加 95% 的置信区间?

问题描述

我正在为如何拟合我的数据而苦苦挣扎。

如图所示,它不适合所有数据

Cdata %>% 
  ggplot(aes(x=Timepoint,y=CFU)) + 
    geom_point() + 
    geom_smooth(method = "nls",se = FALSE,formula = y ~ SSlogis(x,Asym,xmid,scal),color = "blue")

我还想知道在拟合后如何预测并为这些数据添加 95% 的置信区间。

你能帮我解决这个问题吗?

提前致谢!

解决方法

“如何找到更适合我的数据的曲线?”可能是一个非常广泛的问题,很大程度上取决于为什么拟合您的数据(预测?推理?估计某些参数以进行比较?)看起来有点不对称我最初尝试了 Gompertz 合身(SSgompertz,你有 SSlogis),但它没有多大帮助。然后我尝试了广义加性模型,这是一个将平滑曲线拟合到数据的通用框架。 GAM 的优点是 (1) 快速且易于拟合,不需要起始值; (2) 自动为ggplot提供置信区间; (3) 模型复杂度/曲线摆动可调。 GAM 的缺点:(1)可解释性较差; (2) 更难应用约束(特别是,很难指定曲线收敛到一个有限渐近值,即 t → 无穷大)。

这里有两条 GAM 曲线,一条明显过拟合(k 参数指定了曲线的最大复杂度)

ggplot(dd,aes(Timepoint,CFU)) + geom_point() +
    geom_smooth(method="gam",formula=y~s(x,k=6),colour="red") + 
    geom_smooth(method="gam",k=5),colour="blue")

enter image description here

您会注意到曲线不会收敛到水平渐近线,这可能是您的应用程序的问题。

为了获得预测值和标准误差,在 ggplot 之外工作通常更容易,例如

library(mgcv)
m1 <- gam(CFU~s(Timepoint,data=dd)
predict(m1,se.fit=TRUE)

我还尝试了具有不同 x 轴缩放比例 (SSgompertz,SSfpl) 的各种其他自启动曲线 (+ scale_x_log10(),+ scale_x_sqrt()) 但拟合要么失败要么没有没有表现出太大的改善。