У меня есть следующий фрейм данных, в котором хранятся правильные попытки учащихся по каждому вопросу, где «1» обозначает правильную попытку и «0» обозначает неверную попытку, как показано ниже:
structure(list(X1 = c(1, 1), X2 = c(0, 0), X3 = c(1, 1), X4 = c(1,
0), X5 = c(1, 1), X6 = c(1, 1), X7 = c(1, 1), X8 = c(0, 0), X9 = c(0,
0), X10 = c(1, 1), X11 = c(1, 1), X12 = c(0, 0), X13 = c(0, 1
), X14 = c(0, 0), X15 = c(0, 0), X16 = c(1, 1), X17 = c(1, 1),
X18 = c(0, 0), X19 = c(1, 1), X20 = c(0, 0), X21 = c(1, 1
), X22 = c(1, 1), X23 = c(1, 1), X24 = c(1, 1), X25 = c(1,
1), X26 = c(1, 1), X27 = c(1, 1), X28 = c(0, 0), X29 = c(1,
1), X30 = c(1, 1), X31 = c(1, 1), X32 = c(0, 0), X33 = c(1,
1)), row.names = c(NA, -2L), class = c("tbl_df", "tbl", "data.frame"
))
Меня интересует этот вопрос: «учитывая, что учащийся ответил на вопрос 1 неправильно, какова вероятность того, что он тоже ответит неправильно на вопрос Q2?». Или, в более общем смысле, какова вероятность того, что он тоже ответит на Ци неправильно?
Было бы лучше, если бы эти условные вероятности могли быть представлены в матрице, где ij entry - это вероятность того, что он ответит на j-вопрос неправильно, учитывая, что он ответил на i-вопрос неправильно.
Моя основная идея об алгоритме для достижения этой цели заключается в следующем (для i-го вопроса):
1. Подмножество всех строк, где i-я запись равна 0
2. Вычислите пропорции «0» для каждого j-вопроса в подмножественной матрице.
3. Вернуть результат как вектор
4. Повторите 1-3 для всех i и свяжите эти векторы в матрицу.
Но есть ли более быстрый способ достичь того, чего я хочу?