Неправильно ли выбирать функции на основе p-значения?

12

Есть несколько постов о том, как выбирать функции. Один из методов описывает важность функции на основе t-статистики. В R, varImp(model)примененном к линейной модели со стандартизованными характеристиками, используется абсолютное значение t-статистики для каждого параметра модели. Итак, в основном мы выбираем функцию на основе ее t-статистики, то есть, насколько точным является коэффициент. Но говорит ли точность моего коэффициента что-то о прогнозирующих способностях функции?

Может ли случиться так, что моя функция имеет низкую t-статистику, но все же повысит (скажем, точность) модели? Если да, то когда нужно исключить переменные на основе t-статистики? Или это просто отправная точка для проверки предсказательных способностей неважных переменных?

Алина
источник
3
Для теста среднего значения в одной выборке t-статистика - это просто среднее значение выборки, деленное на оцененную стандартную ошибку (стандартное отклонение выборки, деленное на квадратный корень размера выборки). Эта статистика сама по себе не зависит от какой-либо конкретной гипотезы. Выведение значения ара из этой статистики действительно зависит от гипотезы.
Дэн Хикс
@DanHicks Я отредактировал свой вопрос.
Алина
Я не очень знаком с каретой, но похоже, что varImp()она предназначена для информационной или диагностической функции и не используется напрямую для выбора или исключения функций.
david25272

Ответы:

11

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

Значения P говорят, что ложные характеристики важны

Рассмотрим следующую настройку сценария в R. Давайте создадим два вектора, первый - просто случайных бросков монет:5000

set.seed(154)
N <- 5000
y <- rnorm(N)

Второй вектор - наблюдений, каждое из которых случайным образом отнесено к одному из случайных классов одинакового размера:5005000500

N.classes <- 500
rand.class <- factor(cut(1:N, N.classes))

Теперь мы вписываемся линейная модель для прогнозирования с yучетом rand.classes.

M <- lm(y ~ rand.class - 1) #(*)

Правильное значение для всех коэффициентов равна нулю, ни один из них не имеют никакого предсказательной силы. Тем не менее, многие из них значимы на уровне 5%

ps <- coef(summary(M))[, "Pr(>|t|)"]
hist(ps, breaks=30)

Гистограмма р-значений

На самом деле, мы должны ожидать, что около 5% из них будут значительными, даже если у них нет предсказательной силы!

P-значения не могут обнаружить важные функции

Вот пример в другом направлении.

set.seed(154)
N <- 100
x1 <- runif(N)
x2 <- x1 + rnorm(N, sd = 0.05)
y <- x1 + x2 + rnorm(N)

M <- lm(y ~ x1 + x2)
summary(M)

Я создал два коррелированных предиктора, каждый из которых обладает предсказательной силой.

M <- lm(y ~ x1 + x2)
summary(M)

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)   0.1271     0.2092   0.608    0.545
x1            0.8369     2.0954   0.399    0.690
x2            0.9216     2.0097   0.459    0.648

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

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

(*) Обратите внимание, что здесь я перебиваю перехват, поэтому все сравнения проводятся с нулевой базовой точкой, а не с групповым средним значением первого класса. Это было предложение @ whuber.

Так как это привело к очень интересному обсуждению в комментариях, оригинальный код был

rand.class <- factor(sample(1:N.classes, N, replace=TRUE))

и

M <- lm(y ~ rand.class)

что привело к следующей гистограмме

Перекошенная гистограмма p-значений

Мэтью Друри
источник
2
Хм, почему это распределение р-значения не является равномерным?
говорит амеба: восстанови
4
Вау, как ты выбрал номер семени? Любые другие результаты в почти равномерной пс ...
psychOle
3
Я стараюсь всегда использовать одно и то же семя для такого рода вещей: en.wikipedia.org/wiki/154_(album)
Мэтью Друри,
9
Вы проводите неправильные тесты: вы сравниваете 499 групповых средних с первой группой средних. Для начального числа 154 среднее значение для первой группы, равное 1,18 ..., необычно велико (что может произойти из-за того, что размер группы 5 очень мал), поэтому большинство других имеют значительно отрицательные эффекты. Исправьте это, запустив модель lm(y ~ rand.class - 1). Это не меняет достоверность всех ваших замечаний (+1). Чтобы быть еще более убедительным, сбалансируйте размеры группы:rand.class <- cut(1:N, N.classes)
whuber
1
Конечно: / 100% я ожидал, что @whuber заскочит и скажет что-то совершенно ясное и очевидное, что я пропустил. Я исправлю это сейчас.
Мэтью Друри
2

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

t=(x¯s)n

x¯sn

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

Хью
источник
4
Я не думаю, что это правда, что любая функция с ненулевым эффектом улучшит производительность. Может быть, это верно для тренировочных данных, но это, конечно, не для тестовых данных.
Мэтью Друри
@MatthewDrury Вы говорите, что у нас нет методов для определения численности населения по выборкам?
Тодд Д
Нет, но это правда, что ложные функции могут помешать вашей способности делать это хорошо.
Мэтью Друри