Объединение слотов с меньшими значениями в тесте на соответствие - PullRequest
0 голосов
/ 29 марта 2019

Следующая функция используется для проверки того, является ли x выборкой, взятой из Binom(size0, prob0).К вашему сведению, статистический тест под капотом - это критерий хи-квадрат Пирсона .

goodness.of.fit.test <- function(x, size0, prob0) {
  E <- length(x) * dbinom(0:size0, size0, prob0)

  x.count <- rep(0, size0 + 1)
  x.table <- table(x)
  x.count[as.numeric((names(x.table)))] <- unname(x.table)

  Q <- sum((x.count - E) ^ 2 / E)
  df <- size0
  1 - pchisq(Q, df)
}

Однако здесь есть одна загвоздка.Согласно Википедии,

Аппроксимация распределения хи-квадрат нарушается, если ожидаемые частоты слишком низкие.Обычно это приемлемо, если не более 20% событий имеют ожидаемые частоты ниже 5.

Проблема в том, что хвосты биномиального распределения в основном заполнены нулями, и я полагаю, что этопочему результат теста сильно колеблется.Я собираюсь исправить это, объединив слоты в таблице ожиданий, значение которых меньше 5, в больший слот и скорректирую x.count соответственно.

Например, я могу получить

> E <- 100 * dbinom(0:9, 9, 0.5)
> E
 [1]  0.1953125  1.7578125  7.0312500 16.4062500 24.6093750 24.6093750
 [7] 16.4062500  7.0312500  1.7578125  0.1953125
> x.count
 [1]  1  0  8 19 25 23 18  5  1  0

Элементы в E, которые больше или равны 5, должны быть оставлены как есть, но те, которые слишком малы, должны быть объединены в больший слот, пока этот слот не будет иметь значение не менее 5. В этом случае первыйдва элемента 0.1953125 + 1.7578125 < 5, поэтому нам нужно добавить 7.0312500.Кроме того, поскольку вы объединили E[1], E[2] и E[3] в новые adjusted$E[1], x.count[1], x.count[2] и x.count[3], они также должны быть объединены в adjusted$x.count[1].

> adjusted <- MAGIC(E, x.count)
> adjusted$E
 [1] 8.984375 16.4062500 24.6093750 24.6093750 16.4062500 8.984375
> adjusted$x.count
 [1]  9 19 25 23 18  6

Хотя я могу скорректировать свою руку на более короткую x, этот подход становится невозможным, когда он перерастает в вектор с миллионами элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...