R: Ошибка множественной регрессии (при необходимости отсутствует true/false)
Мой R sessionInfo() неудачных запусков:
R version 3.1.2 (2014-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils
[5] datasets methods base
other attached packages:
[1] caper_0.5.2 mvtnorm_1.0-2 MASS_7.3-35
[4] gsubfn_0.6-6 proto_0.3-10 picante_1.6-2
[7] nlme_3.1-118 vegan_2.2-1 lattice_0.20-29
[10] permute_0.8-3 ape_3.2
loaded via a namespace (and not attached):
[1] cluster_1.15.3 grid_3.1.2 Matrix_1.1-4
[4] mgcv_1.8-3 parallel_3.1.2 tcltk_3.1.2
[7] tools_3.1.2
Я работаю над выделением, какие переменные вызывают конкретный сбой при взаимодействии. (Обновление: конкретного предиктора не существует, это просто количество предикторов, превышающих пороговое значение, определяемое числом видов)
У меня есть ошибка, которая, по-видимому, является внутренней для пакета "caper" в R. Точная ошибка:
Error in if (any(stRes > robust)) { : missing value where TRUE/FALSE needed
Where the error occurs on this line of code:
crunchMod <- crunch(f, data = contrasts)
С помощью dataSet1.txt
ниже с 7 предикторами, я считаю, что регрессия отлично работает с )
, )^2
а также )^3
, С помощью dataSet2.txt
ниже с 12 предикторами, я считаю, что работает только ")" и оба )^2
а также )^3
выдать ошибку выше. Вот минимальный код, необходимый для воспроизведения моей ошибки:
library(caper)
library(ape)
setwd("Your_Directory")
caperDS <- read.table("dataSet1.txt", header = TRUE) #Also include "dataSet2.txt"
myTrees = read.nexus("Tree1.tre") #Also include "Tree2.tre"
contrasts <- comparative.data(myTrees, caperDS, Species)
f <- as.formula(paste(paste(names(caperDS)[2],"~"), paste(paste("(",paste(names(caperDS)[3:ncol(caperDS)], collapse="+"))),")^3")) #Vary this between ")", ")^2" and ")^3"
crunchMod <- crunch(f, data = contrasts)
print(summary(crunchMod))
Из-за занимаемого места я отредактировал предоставленные ранее данные. Поскольку теперь очевидно, что эта ошибка является общей проблемой (см. Ниже), вы можете найти наборы данных для изучения, указанные в http://cran.r-project.org/web/packages/caper/vignettes/caper.pdf
1 ответ
Итак, я провел много экспериментов, и ответ почти наверняка заключается в том, что я поместил слишком много предикторов в функцию crunch(), и она "сломалась". Количество предикторов, которые он может принять, зависит от того, сколько предметов присутствует в наборе данных.
Я пришел к такому выводу, потому что не имело значения, какие предикторы я удалил; это было достаточно, чтобы просто удалить несколько наугад. Тем не менее, я не понимаю, почему функция crunch() выдает ошибку из этой ситуации вместо того, чтобы выходить мирно (при условии, что такое поведение намечено). Если бы кто-то мог уточнить это в комментарии / последующем ответе, я был бы признателен.