Ошибка R-функции bi c .glm при обработке, но не анализе пропущенных значений - PullRequest
0 голосов
/ 14 апреля 2020

У меня проблема с функцией bi c .glm в пакете R BMA . Чтобы быть как можно более точным c, я пытаюсь это сделать.

  1. Создать матрицу двоичных переменных предиктора с определенной c корреляцией.
  2. Возьмите одну из этих переменных и установите некоторые значения как пропущенные, основываясь на значениях другой переменной (иначе говоря, "пропущенные случайно")
  3. Запустите 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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...