Я хочу регрессировать переменную на . Должен ли я сделать это, используя сырые или ортогональные полиномы? Я посмотрел на вопрос на сайте, который касается этих вопросов, но я не совсем понимаю, в чем разница между их использованием.
Почему я не могу просто сделать «нормальный» регрессии , чтобы получить коэффициенты в (вместе с р-значения и все другие хороший материал) , а вместо этого придется беспокоиться ли использование необработанные или ортогональные полиномы? Мне кажется, что этот выбор выходит за рамки того, что я хочу сделать.
В статистической книге, которую я сейчас читаю (ISLR Tibshirani et al), эти вещи не упоминались. На самом деле, они были преуменьшены в пути.
Причина в том, AFAIK, что в lm()
функции в R использование y ~ poly(x, 2)
сумм равно использованию ортогональных многочленов, а использование y ~ x + I(x^2)
сумм - использованию необработанных. Но на стр. 116 авторы говорят, что мы используем первый вариант, потому что последний «громоздок», что не оставляет указаний на то, что эти команды на самом деле совершенно разные вещи (и, как следствие, имеют разные выходы).
(третий вопрос) Почему авторы ISLR так путают своих читателей?
источник
poly
это как-то связано с ортогональными полиномами, а я (x ^ 2) - нет (хотя я не знаю деталей) - но тем не менее, зачем авторам ISLR тогда рекомендовать метод, который не работает ? Кажется очень вводящим в заблуждение, если обе команды, кажется, делают то же самое, но только одна на самом деле в порядке.poly
и провел некоторое время с этой проблемой, но я не могу понять, почему poly (x, 2) и x + I (x ^ 2) имеют значение? Не могли бы вы просветить меня здесь, в комментариях, если вопрос оффтоп?R
техническая составляющая, которую я не понимал, но теперь это, кажется, полномасштабная проблема статистики, которая мешает мне выполнять кодирование регрессии, которое не должно быть это трудно кодировать.Ответы:
Я считаю, что ответ не столько о числовой стабильности (хотя это играет роль), сколько о снижении корреляции.
По сути, проблема сводится к тому, что когда мы регрессируем против группы многочленов высокого порядка, ковариаты, против которых мы регрессируем, становятся сильно коррелированными. Пример кода ниже:
Это чрезвычайно важно. По мере того, как ковариаты становятся более коррелированными, наша способность определять, какие из них важны (и каков их размер), быстро разрушается. Обычно это называют проблемой мультиколлинеарности. На пределе, если у нас было две переменные, которые были полностью коррелированы, когда мы регрессировали их против чего-либо, невозможно различить эти две - вы можете думать об этом как об экстремальной версии проблемы, но эта проблема влияет на наши оценки для меньшие степени корреляции также. Таким образом, в реальном смысле - даже если численная нестабильность не была проблемой - корреляция из полиномов более высокого порядка наносит огромный ущерб нашим процедурам вывода. Это будет проявляться в виде более крупных стандартных ошибок (и, следовательно, меньших значений t-статистики), которые вы могли бы увидеть (см. Пример регрессии ниже).
Если вы запустите этот код, интерпретация будет трудной задачей, потому что все коэффициенты меняются, и поэтому трудно сравнивать. Глядя на Т-статистику, мы видим, что способность определять коэффициенты была НАМНОГО больше с ортогональными полиномами. Для 3 соответствующих коэффициентов я получил t-stats (560,21,449) для ортогональной модели и только (28, -38,121) для необработанной полиномиальной модели. Это огромная разница для простой модели с несколькими полиномиальными членами относительно низкого порядка, которые имели значение.
Это не означает, что это происходит без затрат. Необходимо учитывать две основные затраты. 1) мы теряем некоторую интерпретируемость с ортогональными полиномами. Мы могли бы понять, что
x**3
означает коэффициент на , но интерпретировать коэффициент наx**3-3x
(третье поле Эрмита - не обязательно то, что вы будете использовать) может быть гораздо сложнее. Второе - когда мы говорим, что эти многочлены ортогональны, мы имеем в виду, что они ортогональны относительно некоторой меры расстояния. Выбор меры расстояния, соответствующей вашей ситуации, может быть затруднен. Тем не менее, сказав это, я считаю, чтоpoly
функция разработана таким образом, чтобы она была ортогональной по отношению к ковариации - что полезно для линейных регрессий.источник
raw.mod
нем оценивается наклон кривой при x = 0, вorthogonal.mod
нем оценивается предельный наклон (т. Е. Идентичный тому,lm(y ~ poly(x,1))
где опущены члены более высокого порядка). Нет никаких причин, по которым оценки этих совершенно разных оценок должны иметь сопоставимые стандартные ошибки. Можно легко построить контрпример, в которомraw.mod
t-статистика намного вышеИспользование сырого полинома вызовет проблемы, потому что у нас будет огромное количество. Вот небольшое доказательство: мы сравниваем число условий матрицы с необработанным и ортогональным многочленом.
Вы также можете проверить мой ответ здесь для примера.
Почему существуют большие коэффициенты для полинома высшего порядка?
источник
R
выводеprint(0.4, digits=20)
есть0.40000000000000002
.Я чувствую, что некоторые из этих ответов полностью упускают суть. Ответ Хайтао решает вычислительные проблемы с подгонкой необработанных полиномов, но ясно, что OP задает вопрос о статистических различиях между двумя подходами. То есть, если бы у нас был идеальный компьютер, который мог бы точно представлять все значения, почему бы мы предпочли один подход другому?
Создано в 2019-10-25 пакетом представлением (v0.3.0)
Предельный эффект
Petal.Width
при 0 от ортогонального соответствия и его стандартная ошибка в точности равны таковым из необработанного полиномиального соответствия. Использование ортогональных полиномов не повышает точность оценок одной и той же величины между двумя моделями.Создано в 2019-10-25 пакетом представлением (v0.3.0)
Теперь, если вы хотите получить эту интерпретационную выгоду по сравнению с интерпетационной выгодой от фактической способности понимать коэффициенты модели, тогда вам следует использовать ортогональные полиномы. Если вы предпочитаете смотреть на коэффициенты и точно знать, что они означают (хотя я сомневаюсь, что один из них обычно это делает), то вам следует использовать необработанные полиномы. Если вам все равно (то есть вы хотите контролировать только смешанные или генерировать прогнозные значения), то это действительно не имеет значения; Обе формы несут одинаковую информацию об этих целях. Я также утверждал бы, что ортогональные многочлены должны быть предпочтительнее при регуляризации (например, лассо), потому что удаление членов более высокого порядка не влияет на коэффициенты членов более низкого порядка, что не верно для необработанных многочленов,
источник
stats::
в вызовеpoly()
вlm()
течениеmargins
признать его (что глупо). Я хотел сосредоточить свои аргументы на точечных оценках и стандартных ошибках, и я знаю, что представлено много посторонней и отвлекающей информации, но я надеюсь, что текст иллюстрирует мои пункты.stats::poly()
. Ошибка говорит'degree' must be less than number of unique points
- что мне не очень помогает. Тем не менее,margin()
подкрепляет доказуемые заявления, так что это не важно.Я подтверждаю отличный ответ от @ user5957401 и добавляю комментарии по интерполяции, экстраполяции и отчетности.
Даже в области стабильных значений параметров коэффициенты / параметры, моделируемые ортогональными полиномами, будут иметь существенно меньшие стандартные ошибки, чем коэффициенты / параметры, моделируемые необработанными параметрами. По существу, ортогональные полиномы являются свободным набором дескрипторов нулевой ковариации. Это PCA бесплатно!
Единственный потенциальный недостаток - это объяснение тому, кто не понимает достоинства дескрипторов нулевой ковариации. Коэффициенты не могут быть немедленно интерпретированы в контексте эффектов первого порядка (подобного скорости) или второго порядка (подобного ускорению). Это может быть довольно обидно в деловой обстановке.
Так что я бы был на «порядок» более уверенно сообщать об ортогональной модели, чем необработанную. На практике я буду интерполировать любую модель, но я буду экстраполировать только ортогональную.
источник
Я бы просто прокомментировал, чтобы упомянуть об этом, но мне не хватает представителя, поэтому я постараюсь расширить ответ. Возможно, вам будет интересно увидеть, что в Разделе 7.8.1 лабораторной работы «Введение в статистическое обучение» (James et. Al., 2017, исправлено 8-е издание) они обсуждают некоторые различия между использованием ортогональных полиномов или нет, которое использует
raw=TRUE
илиraw=FALSE
вpoly()
функции. Например, оценки коэффициента будут меняться, но установленные значения не будут:В книге также обсуждается, как при использовании ортогональных многочленов p-значения, полученные с помощью
anova()
вложенного F-критерия (чтобы выяснить, какой степени многочлен может быть оправдан), совпадают с теми, которые получены при использовании стандартного t-критерия, выведенного с помощьюsummary(fit)
. Это показывает, что F-статистика в некоторых ситуациях равна квадрату t-статистики.источник