**我希望直接从我们的增长模型中推导出个人增长率,**类似于此OP和此OP。
我正在处理一个数据集,其中包含一个种群中大约2000个个体的age
和体重(wt
)测量值。每个个体都由一个唯一的id
数字表示。
here是一个数据示例。
id age wt
1615 6 15
3468 32 61
1615 27 50
1615 60 145
6071 109 209
6071 125 207
10645 56 170
10645 118 200
我已经开发了一个非线性增长曲线来模拟这个数据集的增长(在人口水平上)。
wt~ A*atan(k*age - t0) + m
该模型预测给定age
的权重(wt
),并具有可修改的参数A
、t0
和m
。我使用nlme
回归拟合在总体水平上将该模型拟合到数据集,其中我将单个id
指定为随机效应,并使用pdDiag
将每个参数指定为不相关。(注:当考虑个体水平时,需要丢弃随机效应。)
代码如下所示:
nlme.k = nlme(wt~ A*atan(k*age - t0) + m,
data = df,
fixed = A+k+t0+m~1,
random = list(id = pdDiag(A+t0+k+m~1)), #cannot include when looking at the individual level
start = c(A = 99.31,k = 0.02667, t0 = 1.249, m = 103.8), #these values are what we are using at the population level # might need to be changed for individual models
na.action = na.omit,
control = nlmeControl(maxIter = 200, pnlsMaxIter = 10, msMaxIter = 100))
我有我们的人口水平增长模型(nlme.k
),但我想用它来推导/提取每个增长常数的 * 个体 * 值。
**如何使用我的人口水平增长模型(nlme.k
)为每个id
提取单独的增长常数?**请注意,我不需要它是使用nlme
的解决方案,这只是我用于人口增长模型的模型。
如有任何建议,我们将不胜感激!
2条答案
按热度按时间iezvtpos1#
我认为这是不可能的,因为随机效应是如何设计的。根据this post,效应大小(您的增长常数)是使用 * 部分合并 * 估计的。这涉及使用来自其他组的数据点。因此,您无法估计每组的效应量(你的个体id)。严格地说(见here),随机效应根本不是模型的一部分,而更多的是误差的一部分。
但是,您可以同时估计所有组的R2。如果您希望在个体水平上进行估计(例如,id 1的参数估计),则只需对该特定个体的所有数据点运行相同的模型。这将为您给予n个模型,其中n个参数集对应n个个体。
jfewjypa2#
我们最终使用了几个循环来完成这一任务。
请注意,如果有人想要后台脚本,我们的答案是建立在OP中发布的模型之上的。
现在-这是应该给予我们如何做到这一点的一个大致的想法。
输出如下: