Как решить фактор ошибки имеет плохой уровень в R - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть некоторые трудности с применением неоднородной G-функции к моему точечному образцу в R. Чтобы использовать GmultiInhom, я сначала попытался преобразовать свой точечный шаблон bci.tree8pppa в шаблон с несколькими типами:

bci.tree8multi = ppp(bci.tree8pppa$x, bci.tree8pppa$y, window=owin(c(0,1000), c(0,500)), marks = factor(bci.tree8pppa$marks[,3]))

Затем применил G-функцию следующим образом:

G = GmultiInhom(bci.tree8multi, marks(bci.tree8multi) == species1, marks(bci.tree8multi) == species2, lambdaI = lambda1points, lambdaJ = lambda2points, lambdamin = min(lambda2points), r = c(0,r1,r2,r3))

Но это приводит к ошибке: "Error in split.default(X, group) : factor has bad level"

Как я могу решить эту проблему? Заранее спасибо!

1 Ответ

0 голосов
/ 22 апреля 2020

Для удобства любых R программистов: я проследил сообщение об ошибке "factor has bad level" до C исходного кода для .Internal(split.default(x,f)) в базовой R системе. Это сообщение об ошибке может появляться только тогда, когда f является list, а не factor. Код преобразует f в коэффициент, используя функцию interaction, которая выполняет манипуляции со строками символов. Это преобразование может быть go неправильным в том смысле, что результирующий фактор имеет «плохие уровни»: целочисленное представление коэффициента включает значения, меньшие 1 или превышающие количество уровней фактора. Тогда возникает ошибка.

В исходном посте не было рабочего примера, поэтому трудно точно определить, как именно код в spatstat::GmultiInhom вызвал неверный тип данных для подачи в split.default. Однако это должно быть связано с неправильным использованием аргумента r. Код в spatstat будет ужесточен для обеспечения более строгих требований к формату r.

...