2016-03-24 2 views
1

Я новичок в кодировании, а также размещении на форуме, но я сделаю все возможное, чтобы объяснить проблему и дать достаточно опыта, чтобы вы могли помочь мне работать через это. Я много искал решения для подобных ошибок, но весь код, который его производит, и формат данных позади него сильно отличаются.Ошибка в парах [, нм]: неправильное количество измерений

Я работаю с биологическими данными, которые состоят из различных категорий роста, но все, что меня интересует, это длина (SCL в моем коде) и возраст (возраст в моем коде). У меня много измерений длины и возраста для каждого человека во времени, и я подхожу к линейной модели nlme для несовершеннолетних возрастов и кривой фон Берт в зрелые века. Моя ювенильная модель работает очень хорошо, и я выделил 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 относится к моему subsetted набор данных только с индивидуальным 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)) 
     ) 

Однако эта модель дает ошибку:

Error in pars[, nm] : incorrect number of dimensions

Который говорит мне, что он пытается оценить другое количество параметров, чем у меня (я думаю). Первоначально я устраивал его для всех зрелых людей (для упрощения я теперь стараюсь соответствовать одному). Вот все мои вариации в коде модели, все они получают ту же ошибку:

  • Ввод усредненные значения (возраст, H, T, T, K) всего населения вместо переменных.
  • с использованием подмножества из 5 человек и обоих (Age, h, T, t, K), а также усредненные значения для этих лиц для каждой переменной.
  • с использованием 5 разных индивидуумов отдельно с обоими (Age, h, T, t, k), а также их фактическими значениями для этих переменных (все запустили отдельно, т.е. 10 различных строк кода на случай, если некоторые работали, а другие didn 't ... но никто не сделал).
  • Рассказывая модель для оценки всех параметров, а не только K
  • устраняющих всех параметров, кроме K
  • Переходя все значения в векторы (это то, что один форум с подобной ошибкой сказал сделать)

Наиболее из них были направлены на то, чтобы изменить количество параметров, которые R считали необходимыми для оценки, однако ни один из них не работал для меня.

ответ

0

Я не эксперт по nlme и часто имею схожие проблемы при подгонке моделей, особенно если вы не можете использовать nlsList для начала работы. Я предполагаю, что у вас есть 4 параметра в вашей функции (h, T, t, k), но вы оцениваете только один из них как фиксированный эффект, так и случайный эффект. Я верю, что это ограничивает остальные параметры равными нулю, что фактически устранит их из модели (но вы все еще имеете их в модели!). Обычно вы включаете все параметры как фиксированные, а затем пытаетесь решить, сколько из них вы также хотите иметь случайный эффект. Поэтому я бы включил все 4 в фиксированный аргумент и аргумент start. Поскольку у вас есть 4 параметра, каждый из них должен быть либо фиксированным, либо случайным, либо и то, и другое - в противном случае, как они могут быть в модели?

+0

Извините, похоже, я неправильно понял вашу функцию. Теперь я вижу, что h, T и t являются наблюдаемыми значениями, а не параметрами модели, которые должны быть оценены.start = list (fixed = c (K ~ .01) – rabil

+0

start = list (fixed = c (K ~ .01) – rabil

+0

start = list (fixed = c (K ~ .01) – rabil

Смежные вопросы