У меня проблема с функцией bi c .glm в пакете R BMA . Чтобы быть как можно более точным c, я пытаюсь это сделать.
- Создать матрицу двоичных переменных предиктора с определенной c корреляцией.
- Возьмите одну из этих переменных и установите некоторые значения как пропущенные, основываясь на значениях другой переменной (иначе говоря, "пропущенные случайно")
- Запустите bi c .glm only используя не пропущенные результаты и связанные с ними предикторы.
Когда я подаю подмножества в bi c .glm, я получаю следующую ошибку: «Ошибка в обратном разрешении (R, rinv): неверно» к "аргумент". Я попытался прочесать основной код bi c .glm на github, но не мог понять, почему он мешает функции backsolve в bi c .glm. Автономный пример моего кода ниже. Может ли кто-нибудь увидеть, что происходит?
Я пробовал каждую форму поднабора не пропущенных значений - логических векторов, числовых векторов, индексации! Is.na - но все равно получал то же самое , bi c .glm работает на съемочной площадке, прежде чем изменить некоторые значения на пропущенные. Заранее спасибо за любую помощь.
library(BMA)
library(MultiRNG)
per = .40 # percentage of missingness
r = 0.2 # correlation btw variables
p = 0.4 # probability
R = matrix(r, nrow=8, ncol=8) + diag(8)*(1-r) ##correlation matrix
means = rep(p, 8)
# Generate variables and their number of observations (matrix: 8 rows, 100 columns)
random.binary = draw.correlated.binary(no.row = 100, d = 8, prop.vec = means, corr.mat = R)
colnames(random.binary) = c("Var1","Var2","Var3","Var4","Var5","Var6","Var7","MAR1")
# change 40% of var "MAR1" to missing based on value of var "Var1"
random.binary[,c("MAR1")][order(random.binary[,c("Var1")], decreasing = T)[1:(100*per)]] <- NA
pred.mat = random.binary[,1:7]
outc.mat = random.binary[,8]
# logical vector for non-missing outcomes
ry = !is.na(outc.mat)
# bic.glm does not work for the subset
mat = bic.glm(x = pred.mat[ry,], y = outc.mat[ry], glm.family = "binomial")