У CrossValidated есть несколько вопросов о том, когда и как применять коррекцию смещения редкого события, разработанную King and Zeng (2001) . Я ищу что-то другое: минимальную демонстрацию, основанную на симуляции, которая существует.
В частности, король и дзенг
«... в данных по редким событиям смещения вероятностей могут быть существенно значимыми с размерами выборки в тысячах и имеют предсказуемое направление: оценочные вероятности событий слишком малы».
Вот моя попытка симулировать такой уклон в R:
# FUNCTIONS
do.one.sim = function(p){
N = length(p)
# Draw fake data based on probabilities p
y = rbinom(N, 1, p)
# Extract the fitted probability.
# If p is constant, glm does y ~ 1, the intercept-only model.
# If p is not constant, assume its smallest value is p[1]:
glm(y ~ p, family = 'binomial')$fitted[1]
}
mean.of.K.estimates = function(p, K){
mean(replicate(K, do.one.sim(p) ))
}
# MONTE CARLO
N = 100
p = rep(0.01, N)
reps = 100
# The following line may take about 30 seconds
sim = replicate(reps, mean.of.K.estimates(p, K=100))
# Z-score:
abs(p[1]-mean(sim))/(sd(sim)/sqrt(reps))
# Distribution of average probability estimates:
hist(sim)
Когда я запускаю это, я, как правило, получаю очень маленькие z-оценки, и гистограмма оценок очень близка к центру по истине p = 0,01.
Чего мне не хватает? Неужели моя симуляция недостаточно велика, чтобы показать истинный (и, очевидно, очень маленький) уклон? Требует ли смещение некоторого ковариата (больше, чем перехват), который будет включен?
Обновление 1: Кинг и Цзэн включают грубое приближение для смещения в уравнении 12 своей статьи. Отмечая в знаменателе, я резко сократил быть и повторно запускал моделирование, но до сих пор нет смещения расчетных вероятностей событий не очевидно. (Я использовал это только для вдохновения. Обратите внимание, что мой вопрос выше касается оценочных вероятностей событий, а не .)N
N
5
Обновление 2: Следуя предложению в комментариях, я включил в регрессию независимую переменную, что привело к эквивалентным результатам:
p.small = 0.01
p.large = 0.2
p = c(rep(p.small, round(N/2) ), rep(p.large, N- round(N/2) ) )
sim = replicate(reps, mean.of.K.estimates(p, K=100))
Объяснение: Я использовал p
себя в качестве независимой переменной, где p
есть вектор с повторениями небольшого значения (0,01) и большего значения (0,2). В конце sim
сохраняются только оценочные вероятности, соответствующие и нет признаков смещения.
Обновление 3 (5 мая 2016 г.): это заметно не меняет результаты, но моя новая функция внутреннего моделирования
do.one.sim = function(p){
N = length(p)
# Draw fake data based on probabilities p
y = rbinom(N, 1, p)
if(sum(y) == 0){ # then the glm MLE = minus infinity to get p = 0
return(0)
}else{
# Extract the fitted probability.
# If p is constant, glm does y ~ 1, the intercept only model.
# If p is not constant, assume its smallest value is p[1]:
return(glm(y ~ p, family = 'binomial')$fitted[1])
}
}
Объяснение: MLE, когда y тождественно равен нулю, не существует ( спасибо за комментарии здесь за напоминание ). R не может выдать предупреждение, потому что его " положительный допуск сходимости " фактически удовлетворен. Более свободно говоря, MLE существует и является минус бесконечность, что соответствует ; отсюда и моя функция обновления. Единственная другая связная вещь, которую я могу придумать, - это отбросить те прогоны симуляции, где y тождественно равен нулю, но это явно приведет к результатам, еще более противоречащим первоначальному утверждению, что «оценочные вероятности события слишком малы».
источник
Ответы:
Это интересный вопрос - я провел несколько симуляций, которые я публикую ниже в надежде, что это стимулирует дальнейшее обсуждение.
Прежде всего, несколько общих комментариев:
В статье, которую вы цитируете, речь идет о предвзятости. То, что мне не было ясно раньше (также в отношении комментариев, которые были сделаны выше), это что-то особенное в случаях, когда у вас 10/10000, а не 10/30 наблюдений. Однако после некоторых симуляций я бы согласился, что есть.
Проблема, которую я имел в виду (я часто сталкивался с этим, и недавно в статье «Методы в области экологии и эволюции» я писал об этом, но я не смог найти ссылку на нее) заключается в том, что вы можете получить вырожденные случаи с GLM в небольших данных. ситуации, когда MLE находится на расстоянии FAAAR от истины или даже на бесконечности - / + (полагаю, из-за нелинейной связи). Мне не ясно, как следует относиться к этим случаям при оценке смещения, но из моих моделей я бы сказал, что они кажутся ключевыми для смещения редких событий. Моя интуиция заключается в том, чтобы удалить их, но тогда не совсем ясно, как далеко они должны быть удалены. Может быть, что-то иметь в виду для исправления предвзятости.
Кроме того, эти вырожденные случаи кажутся склонными вызывать численные проблемы (поэтому я увеличил максимальное значение в функции glm, но можно подумать и об увеличении эпсилона, чтобы удостовериться, что кто-то действительно сообщает истинное MLE).
В любом случае, вот код, который вычисляет разницу между оценками и истинностью для перехвата, наклона и прогнозов в логистической регрессии, сначала для ситуации с небольшим размером выборки / умеренной заболеваемостью:
Результирующее смещение и стандартные ошибки для перехвата, наклона и прогнозирования
Я бы пришел к выводу, что есть довольно убедительные доказательства небольшого отрицательного смещения в точке пересечения и небольшого положительного смещения на склоне, хотя анализ полученных результатов показывает, что смещение мало по сравнению с дисперсией оценочных значений.
Если я устанавливаю параметры в ситуации редкого события
Я получаю больший уклон для перехвата, но все еще ничего в прогнозе
На гистограмме оценочных значений мы видим явление вырожденных оценок параметров (если их так называть)
Давайте удалим все строки, для которых оценки перехвата <20
Смещение уменьшается, и на рисунках все становится немного яснее - оценки параметров явно не распределяются нормально. Интересно, что это означает для достоверности CI, о которых сообщают.
Я бы пришел к выводу, что смещение редкого события на перехвате обусловлено самими редкими событиями, а именно теми редкими, чрезвычайно малыми оценками. Не уверен, хотим мы их удалить или нет, не уверен, какой будет отсечка.
Однако важно отметить, что в любом случае, кажется, что нет предвзятости в отношении прогнозов в масштабе ответа - функция связи просто поглощает эти чрезвычайно малые значения.
источник
Смещение редких событий происходит только при наличии регрессоров. Это не произойдет в модели только для перехвата, подобной моделируемой здесь. См. Этот пост для деталей: http://statisticalhorizons.com/linear-vs-logistic#comment-276108
источник
Рисунок 7 в документе, кажется, наиболее непосредственно касается вопроса о предвзятости в прогнозах. Я не совсем понимаю эту цифру (в частности, интерпретация «оценочные вероятности событий слишком малы» кажется чрезмерным упрощением), но мне удалось воспроизвести нечто подобное, основываясь на кратком описании их моделирования в разделе 6.1:
Первый график - моя репликация их фигуры 7 с добавлением пунктирных кривых, представляющих весь спектр результатов за 10 испытаний.
Согласно статье,
x
здесь есть предикторная переменная в регрессии, взятая из стандартной нормали. Таким образом, как показано на втором графике, относительная частота наблюдений дляx > 3
(где наиболее заметное отклонение происходит на первом графике) уменьшается все меньше.Третий график показывает «истинные» вероятности моделирования в процессе генерации как функцию от
x
. Похоже, что наибольший уклон происходит там, гдеx
он редок или отсутствует.Взятые вместе, они предполагают, что ФП полностью неверно истолковал центральное утверждение статьи, путая «редкое событие» (т.е.
x > 3
) с «событием, для которогоP(Y = 1)
очень мало». Предположительно, статья касается первого, а не второго.источник