Я не понимаю ошибку fitHMM() в границах параметров

Я получаю эту ошибку при использовании fitHMM() для данных о движении животных:

Error in n2w(Par0[i], p$bounds, NULL, NULL, nbStates, inputs$estAngleMean,  : 
  Check the parameter bounds for angle (the initial parameters should be strictly between the bounds of their parameter space).

Это мой код:

stateNames <- c("encamped", "exploratory")

dist = list(step = "gamma", angle = "vm")
Par0_m1=list(step=c(0.013,0.9216,0.01,1.11,0.01,0.004),
             angle=c(1,1))

m1 <-fitHMM(data=dataM, nbStates=2, 
            dist=dist, Par0=Par0_m1,
            estAngleMean = list(angle=FALSE),
            stateNames = stateNames)

m1 имеет вывод:

step parameters:
----------------
            encamped exploratory
mean     0.013173673 0.915614546
sd       0.009823547 1.115597292
zeromass 0.010918283 0.004483016

angle parameters:
-----------------
              encamped exploratory
mean                 0           0
concentration        0           0

а затем я пытаюсь использовать эти значения для соответствия второй, более сложной модели:

# Formula for transition probabilities
formula <- ~ Temp*cosinor(hour, period = 24)

# initial parameters obtained from m1
Par0_m2 <- getPar0(model=m1, formula=formula)

m2 <- fitHMM(data=dataM, nbStates=2,
             dist=dist, Par0=Par0_m2$Par,
             beta0=Par0_m2$beta, stateNames = stateNames,
             formula=formula)

Именно на этом этапе при попытке создать m2 возникает ошибка.

Я попытался настроить исходные значения angularCon0 и перезапустить обе модели - если angularCon0 = (0,0), то ошибка также возникает, когда я пытаюсь запустить m1, если angularCon0 = (0,1) снова возникает ошибка для m1, если angularcon0 =(1,1) тогда я смогу успешно запустить m1 (но все равно не смогу запустить m2). Я не понимаю, что там происходит, почему концентрация не может работать с 0 значениями? Более того, почему m2 не может работать, используя значения, которые успешно позволили запустить m1?;

Я также проверил Par0_m2$Par:

print(Par0_m2$Par
$step
     mean_1      mean_2        sd_1        sd_2  zeromass_1 
0.013173673 0.915614546 0.009823547 1.115597292 0.010918283 
 zeromass_2 
0.004483016 

$angle
concentration_1 concentration_2 
              0               0 

Я не понимаю, о чем говорит ошибка и как ее устранить.

Это хороший момент, если смешать структуры moveHMM и momentuHMM fitHMM – но даже с этой новой структурой – dist = list(step = "gamma", angular = "vm") Par0_m1=list(step=c(0.013,0.9216,0.01, 1.11,0.01,0.004), angular=c(1,1)) Я все равно получаю ошибку. Я продолжу просматривать ответы в этом сообщении на форуме, однако до сих пор я все еще в замешательстве.

Burton Guster 12.07.2024 09:44
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Параметр концентрации для распределения фон Мизеса должен быть строго положительным, поэтому начальные значения, передаваемые в fitHMM(), не могут быть равны нулю. Непонятно, почему обе концентрации углов поворота были оценены как нулевые в первой модели (m1), но getPar0() просто копирует эти значения и передает их fitHMM() для второй модели. Это вызывает вашу ошибку.

Одним из решений было бы вручную отредактировать Par0_m2$Par$angle, чтобы установить начальные значения, отличные от нуля, например:

Par0_m2$Par$angle <- c(0.1, 1)

Однако, вероятно, также было бы неплохо выяснить, почему концентрация оценивается как нулевая. Я предполагаю, что углы поворота в ваших данных имеют пик в точке «пи» (т. е. много разворотов в направлениях), но это невозможно правильно отразить, поскольку по умолчанию средний угол поворота фиксирован на нуле в momentuHMM. Вы можете изменить это в обеих моделях, используя опцию estAngleMean = list(angle=TRUE). Затем вам также нужно будет добавить два начальных значения среднего угла поворота в двух состояниях. Возможно, что-то вроде:

Par0_m1=list(step=c(0.013,0.9216,0.01,1.11,0.01,0.004),
             angle=c(pi, 0, 0.5, 0.5))

где первые две записи angle — средние значения, а последние две записи — параметры концентрации.

Я очень ценю ваш ответ, доктор Мишло. Действительно, когда я рисую частотное распределение моих углов поворота, пики приходятся на -3 и 3; с более низким пиком при 0. Могу ли я объяснить, как оценка среднего угла может помочь уловить концентрацию угла поворота? В любом случае ваш ответ оказался очень полезным (и таким быстрым!) Спасибо!

Burton Guster 12.07.2024 16:09

Если пик эмпирического распределения углов поворота близок к пи и если параметр среднего угла поворота фиксирован равным нулю, то концентрацию можно оценить как нулевую, поскольку это лучший способ уловить развороты. Но если среднее значение не фиксировано, оно, вероятно, будет оценено как нечто близкое к пи, а концентрация будет измерять, насколько пиковым является распределение вокруг этого среднего значения. В Википедии есть график, показывающий, как параметр концентрации влияет на форму.

Théo Michelot 13.07.2024 14:03

Другие вопросы по теме