Как запустить vegan::varpart без этой ошибки сообщения NA/NaN/Inf в вызове внешней функции (arg 1)?

В настоящее время я пытаюсь запустить функцию varpart для некоторых своих данных, но каждый раз получаю следующую ошибку: «Ошибка в qr.default(X, tol = 1e-06): NA/NaN/Inf в вызове внешней функции (arg 1)"

Короче говоря, весь мой набор данных содержит информацию о рыболовных снастях, уровнях давления и различных сессиях во времени. У меня нет проблем с запуском функции varpart для всех моих данных, но если я создаю новый объект только с данными, касающимися конкретной передачи и/или определенного давления, он больше не работает....

Я проверил пропущенные значения, но не смог найти...

Вот пример моей проблемы:

library(vegan)
#> Le chargement a nécessité le package : permute
#> Le chargement a nécessité le package : lattice
#> This is vegan 2.5-5
A<-runif(45,min=0,max=0.75)
B<-runif(45,min=0,max=0.75)
C<-runif(45,min=0,max=0.75)
SP<-data.frame(cbind(A,B,C))
Session<-as.factor(rep(c("S1","S2","S3","S4","S5"),each=9))
LONG<-rep(c(48.32287917),each=45)
data<-data.frame(cbind(Session,LONG))
data$Session<-as.factor(data$Session)
varpart<-varpart(SP,~ Session,~ LONG, data=data)
#> Error in qr.default(X, tol = 1e-06) : 
  NA/NaN/Inf in foreign function call (arg 1)

Кто-нибудь из вас уже сталкивался с такой проблемой раньше или знает, как ее исправить? Благодарю вас!


person Ena    schedule 22.08.2019    source источник


Ответы (1)


varpart выполняет разбиение варианта, и для этого ему нужны как минимум две переменные, для которых разбивается вариант. У вас был только один (Session) — второй, который вы указали (LONG), был постоянным и, следовательно, объяснял отсутствие вариации и не считался переменной. Мы не проверяем неизменяющиеся «переменные», и вы получаете запутанное сообщение об ошибке. Однако, если вы создаете свою модель вручную с бессмысленными (постоянными) «переменными», вы должны ожидать странных сообщений об ошибках. Мы могли бы добавить проверку констант, но как-то это странно.

person Jari Oksanen    schedule 24.08.2019
comment
Яри, большое спасибо за помощь! Теперь, когда вы упомянули об этом, это звучит немного очевидно... Я не привык использовать varpart, поэтому меня смутило это сообщение об ошибке. Если это не слишком сложно, знаете ли вы, есть ли альтернативный способ выполнить разбиение вариаций на одну переменную? - person Ena; 26.08.2019
comment
Вы можете выполнить вариативное разбиение для одной переменной, но вы не можете осмысленно выполнить дисперсионное разбиение для постоянной переменной: постоянная переменная ничего не объясняет. Это то же самое, что и среднее значение, относительно которого первоначально рассчитывалась вариация. Таким образом, его компонент будет равен 0. - person Jari Oksanen; 26.08.2019
comment
Хорошо, я думаю, я понимаю, что вы говорите. И я также думаю, что перепутал раздел вариации и раздел вариации в своем предыдущем комментарии. Спасибо за ваше время и объяснения! - person Ena; 26.08.2019