pars [,nm]出错:维数不正确

时间:2016-03-24 16:30:40

标签: r nlme

我是新编码以及在论坛上发帖但我会尽力解释问题并提供足够的背景知识,以便您能够帮助我完成它。我已经做了很多寻找类似错误的解决方案但是生成它的所有代码以及它背后的数据格式都非常不同。

我正在处理由各种增长类别组成的生物数据,但我感兴趣的只是长度(我的代码中的SCL)和年龄(我的代码中的年龄)。随着时间的推移,我对每个人都有很多长度和年龄估计值,我将线性nlme模型拟合到青少年年龄,并将Von Bert曲线拟合到成熟年龄。我的少年模型工作正常,我提取h(线的斜率)和t(x截距)。我现在需要使用这些参数以及T(成熟时的已知年龄)来适应成熟阶段。成熟的模型将估计K(这是我唯一未知的)。我已经为一个人(ID50)包含了我的一部分数据。这是仅在成熟年份的信息,其中h和t来自最右边的列中的青少年适合度。

我的数据子集:

这格式不是很好,但我不确定如何显示它

分组数据:SCL~年龄| ID

ID  SCL Age     Sex Location MeanSCL Growth Year Status   T     h       t
50 86.8 27.75 Female   VA    86.8    0.2    1994 Mature 27.75 1.807394 -19.83368
50 86.9 28.75 Female   VA    87.1    0.4    1995 Mature 27.75 1.807394 -19.83368
50 87.3 29.75 Female   VA    87.5    0.5    1996 Mature 27.75 1.807394 -19.83368
50 87.8 30.75 Female   VA     88     0.4    1997 Mature 27.75 1.807394 -19.83368
50 88.1 31.75 Female   VA    88.1      0    1998 Mature 27.75 1.807394 -19.83368
50 88.1 32.75 Female   VA    88.2      0    1999 Mature 27.75 1.807394 -19.83368
50 88.2 33.75 Female   VA    88.3    0.2    2000 Mature 27.75 1.807394 -19.83368
50 88.4 34.75 Female   VA    88.4    0.1    2001 Mature 27.75 1.807394 -19.83368
50 88.4 35.75 Female   VA    88.4      0    2002 Mature 27.75 1.807394 -19.83368
50 88.5 36.75 Female   VA    88.5      0    2003 Mature 27.75 1.807394 -19.83368

这是增长功能:

vbBiphasic = function(Age,h,T,t,K) {
                 y=(h/(exp(K)-1))*(1-exp(K*((T+log(1-(exp(K)-1)*(T-t))/K)-Age)))
             }

这是应该适合的原始增长模型:

ID50指的是我的子集化数据集,只有50个单独的

VB_mat <- nlme(SCL~vbBiphasic(Age,h,T,t,K),
               data = ID50,
               fixed = list(K~1),
               random = K~1,
               start = list(fixed=c(K~.01))
          )

但是此模型会产生错误:

  

pars [,nm]中的错误:维数不正确

这告诉我它正在尝试估计不同数量的参数(我认为)。最初我适合所有成熟的人(bur为了简化我现在正试图适应一个)。以下是我对模型代码的所有变体,所有这些变体都产生了同样的错误:

  • 输入整个人口的(年龄,h,T,t,K)的平均值 而不是变量。
  • 使用5个人的子集和两者(年龄,h,T,t,K)以及每个变量的那些个体的平均值。
  • 分别使用5个不同的个体(年龄,h,T,t,k)以及这些变量的实际值(全部运行) 单独地,即10个不同的代码串,以防万一 工作,而其他人没有......但没有人这样做。
  • 告诉模型估算所有参数,而不仅仅是K
  • 消除除K
  • 以外的所有参数
  • 将所有值转换为向量(这是一个具有类似错误的论坛所说的)

其中大部分是为了改变R认为需要估计的参数数量,但是没有一个对我有用。

1 个答案:

答案 0 :(得分:0)

我不是nlme的专家,在拟合模型时经常遇到类似的问题,特别是当你不能使用nlsList开始时。我的猜测是你的函数中有4个参数(h,T,t,k),但你只估计其中一个是固定效果和随机效应。我相信这会将其他参数约束为零,这实际上会将它们从模型中消除(但你仍然可以在模型中使用它们!)。通常,您将所有参数都包含在固定中,然后尝试确定其中有多少参数也要具有随机效果。所以我会在fixed参数和start参数中包含所有4个。由于您有4个参数,每个参数必须是固定的或随机的,或两者兼而有之 - 否则,它们如何在模型中?