Предиктивный интервал против Доверительного интервала в (Пуассоновской) GLM (в Python)

Вопрос или проблема

Короче говоря, я получаю предсказательный интервал меньше, чем доверительный интервал, хотя они должны быть шире. Любая помощь в понимании, почему это происходит, будет очень полезной 🙂

Позвольте начать с изложения проблемы. Я использую ГЛМ, чтобы предсказать некоторую переменную (скажем, сумму продаж). Если я суммирую предсказанное среднее для каждой строки данных, я получаю прогноз общей суммы продаж. Через год я получаю истинное значение. Цель состоит в том, чтобы иметь диапазон вокруг прогноза, такой, что если истинное значение за пределами этого диапазона, это может быть признаком того, что модель нуждается в повторном обучении.

С точки зрения статистики, это кажется хорошим примером для использования предсказательных интервалов. Поэтому я пытался реализовать их в Python. Вот мой код на примере игрушечных данных, после него я укажу на свои проблемы.

import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf
import scipy.stats as stats

# Генерация данных
np.random.seed(0)
n = 100
x1 = np.random.normal(size=n)
x2 = np.random.normal(size=n)
y = np.random.poisson(lam=np.exp(0.5 + 0.3 * x1 - 0.2 * x2), size=n)

# DataFrame
data = pd.DataFrame({'x1': x1, 'x2': x2, 'y': y})

# ГЛМ
model = smf.glm(formula="y ~ x1 + x2", data=data, family=sm.families.Poisson()).fit()

# Получение предсказаний
predictions=model.get_prediction(data)
pred_mean=predictions.summary_frame()['mean']
pred_lower_ci=predictions.summary_frame()['mean_ci_lower']
pred_upper_ci=predictions.summary_frame()['mean_ci_upper']

# Определяем доверительные интервалы
lower_bound_CI=np.sum(pred_lower_ci)
upper_bound_CI=np.sum(pred_upper_ci)

# Определяем предсказательные интервалы
alpha=0.05
total_mean=np.sum(pred_mean)
lower_bound_PI=stats.poisson.ppf(alpha/2,total_mean)
upper_bound_PI=stats.poisson.ppf(1-alpha/2,total_mean)

Я получаю в результате предсказанное значение 169. Доверительный интервал составляет [131.65,217.96], а предсказательный интервал — [144,195].

В чем мои проблемы?

  1. Как упоминалось в начале, мой CI шире, чем мой PI, хотя статистически должно быть наоборот. Я думал, что это может быть из-за того, что я суммирую ‘mean_ci_lower’ и ‘mean_ci_upper’, но та же проблема возникает при n=1 (то есть без какой-либо суммирования). Я знаю, что суммирование предполагает независимость данных.
    Кто-нибудь видит в этом что-то неправильное?

  2. Когда я пересматриваю свой способ вычисления PI, я думаю, что использовал бы ту же формулу, если бы хотел сам вычислить CI. Поэтому я задаюсь двумя вопросами. Правильный ли мой способ вычисления PI? Может быть, для распределения Пуассона, используя истинные квантили, оба интервала одинаковы? И если нет, и в действительности я вычисляю CI, почему это не тот же результат, что и у пакета statsmodels? Используют ли они нормальное приближение? Я пытался прочитать код в пакете, но в какой-то момент запутался. Как приемлемо использовать нормальное приближение? Также если семья ГЛМ — это гамма-семья (я ожидаю, что в основном буду сталкиваться с Гауссовской, Пуассоновской и Гамма-семьей)?

Если вы все еще читаете это, уже спасибо вам.
И если вы можете/имеете время помочь, я был бы очень признателен.

Ответ или решение

Теория

Когда речь идет о статистическом моделировании и, в частности, о генерализованных линейных моделях (GLM), важной задачей является интерпретация результатов модели и их использования для прогнозирования будущих данных. В данной ситуации рассматриваются два основных типа интервалов: доверительный интервал (confidence interval) и предсказательный интервал (prediction interval). Оба эти интервала имеют свои особенности применения и интерпретации.

Доверительный интервал (ДИ):
Доверительный интервал предназначен для описания неопределенности оценок параметров модели. В контексте предсказания с помощью GLM доверительный интервал предоставляет диапазон значений вокруг предсказаемой средней величины, в котором с заданной уверенностью (например, 95%) находится истинное среднее значение. Доверительный интервал обычно уже предсказательного, поскольку учитывает только неопределенность оценки среднего значения.

Предсказательный интервал (ПИ):
Предсказательный интервал предназначен для описания диапазона, в котором с заданной уверенностью ожидается нахождение фактического наблюдения. Он шире ДИ, так как учитывает не только неопределенность оценки среднего, но и вариабельность самих данных (остаточную дисперсию). Это особенно важно при работе с реальными данными, где нужно предсказать индивидуальные значения, а не только их математическое ожидание.

Пример

В вашем коде используется генерализованная линейная модель с распределением Пуассона для предсказания величины y (например, объем продаж) на основе двух независимых переменных x1 и x2. Вы применили статистический пакет statsmodels в Python для фитинга модели и построения доверительных и предсказательных интервалов.

Применение

Вы упомянули, что предсказательная ошибка проявляется в том, что вы наблюдаете более узкий предсказательный интервал по сравнению с доверительным интервалом. Это противоречит теории, так как предсказательные интервалы должны быть шире из-за учета дополнительной неопределенности. Давайте разберемся с возможными причинами этой несоответственности и правильными подходами к построению этих интервалов.

  1. Неправильное определение интервалов:

    • При расчете доверительного и предсказательного интервалов важно учитывать разницу в подходах. Вы используете poisson.ppf для расчета ПИ, учитывая распределение Пуассона. Это может быть корректной методикой для ПИ, но стоит учитывать, что применимые предположения должны соответствовать использованной модели данных.
  2. Ошибки при суммировании отдельных интервалов:

    • Возможно, проблема заключается в ошибочном суммировании индивидуальных доверительных интервалов. Для получения ДИ для суммы предсказываемых значений следует учитывать корреляции и независимость отдельный прогнозов – простое суммирование нижних и верхних границ доверительных интервалов может не учитывать эти аспекты.
  3. Отличия в методах расчёта для ДИ и ПИ:

    • statsmodels может применять асимптотические нормальные распределения для более простых вычислений доверительных интервалов в линейных моделях, даже если логлинейное распределение Пуассона лежит в основе предсказания. Это предположение может приводить к более узким доверительным интервалам по сравнению с реалистичным пониманием данных через доверительную область с использованием квантилей Пуассона.

Корректировка решений

  1. Ревизия расчета предсказательных интервалов:

    • Интеграция метода бутстрепинга или симуляции Монте-Карло для проверки распределения и соответствию эмпирических данных.
  2. Учет изменчивости данных:

    • Убедитесь, что предсказательная изменчивость корректно учтена при расчете ПИ путем добавления дисперсии остатков к вычисленному предсказанию.
  3. Документация:

    • Рассмотрите возможность углубленного изучения открытых исходных кодов statsmodels для ясного понимания применяемой математической теории.

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

Оцените материал
Добавить комментарий

Капча загружается...