我有一个格式如下的串行数据:
time milk Animal_ID
30 25.6 1
31 27.2 1
32 24.4 1
33 17.4 1
34 33.6 1
35 25.4 1
33 29.4 2
34 25.4 2
35 24.7 2
36 27.4 2
37 22.4 2
80 24.6 3
81 24.5 3
82 23.5 3
83 25.5 3
84 24.4 3
85 23.4 3
. . .
Run Code Online (Sandbox Code Playgroud)
一般来说,300只动物在短时间内的不同时间点有牛奶记录.但是,如果我们将他们的数据加在一起并且不关心不同的animal_ID,我们会在这样的牛奶〜时间之间产生一条曲线,如下图所示:
此外,在上图中,我们有1例动物的数据,它们很短且变化很大.我的目的是平滑每个动物数据,但如果模型允许从整个数据中学习一般模式,那么它就会被包括在内.我使用了以下格式的不同平滑模型(ns,bs,smooth.spline)但它只是不起作用:
mod <- lme(milk ~ bs(time, df=3), data=dat, random = ~1|Animal_ID)
Run Code Online (Sandbox Code Playgroud)
我希望如果有人已经处理过这个问题会给我一个建议.谢谢完整的数据集可以从这里访问:https: //www.dropbox.com/s/z9b5teh3su87uu7/dat.txt?dl=0