Экранирование (много) коллинеарности в модели регрессии

Я надеюсь, что этот не будет вопросом "спрашивать-и-отвечать"..., здесь идет: (много) коллинеарность относится к чрезвычайно высоким корреляциям между предикторами в модели регрессии. Как исправить их... хорошо, иногда Вы не должны "исправлять" коллинеарность, так как она не влияет на саму модель регрессии, но интерпретацию эффекта отдельных предикторов.

Один способ определить коллинеарность состоит в том, чтобы поместить каждый предиктор как зависимую переменную и другие предикторы как независимые переменные, определить R2, и если это больше, чем.9 (или.95), мы можем считать предиктор избыточным. Это - один "метод"... что относительно других подходов? Некоторые из них являются трудоемкими, как исключение предикторов из модели и наблюдения за b-содействующими изменениями - они должны заметно отличаться.

Конечно, мы должны всегда принимать во внимание определенный контекст/цель анализа... Иногда, только средство состоит в том, чтобы повторить исследование, но прямо сейчас, мне интересно различными способами экранировать избыточные предикторы, когда (много) коллинеарность происходит в модели регрессии.

63
задан dbliss 31 December 2013 в 22:42
поделиться

4 ответа

The Функция kappa () может помочь. Вот смоделированный пример:

> set.seed(42)
> x1 <- rnorm(100)
> x2 <- rnorm(100)
> x3 <- x1 + 2*x2 + rnorm(100)*0.0001    # so x3 approx a linear comb. of x1+x2
> mm12 <- model.matrix(~ x1 + x2)        # normal model, two indep. regressors
> mm123 <- model.matrix(~ x1 + x2 + x3)  # bad model with near collinearity
> kappa(mm12)                            # a 'low' kappa is good
[1] 1.166029
> kappa(mm123)                           # a 'high' kappa indicates trouble
[1] 121530.7

и мы идем дальше, делая третий регрессор все более и более коллинеарным:

> x4 <- x1 + 2*x2 + rnorm(100)*0.000001  # even more collinear
> mm124 <- model.matrix(~ x1 + x2 + x4)
> kappa(mm124)
[1] 13955982
> x5 <- x1 + 2*x2                        # now x5 is linear comb of x1,x2
> mm125 <- model.matrix(~ x1 + x2 + x5)
> kappa(mm125)
[1] 1.067568e+16
> 

При этом использовались приближения, см. help (kappa) для подробностей.

39
ответ дан 24 November 2019 в 16:22
поделиться

Чтобы добавить к тому, что Дирк сказал о методе числа условий, практическое правило состоит в том, что значения CN> 30 указывают на сильную коллинеарность . Другие методы, помимо числа условий, включают:

1) определитель ковариации матрица в диапазоне от 0 (Perfect Коллинеарность) до 1 (коллинеарность отсутствует)

# using Dirk's example
> det(cov(mm12[,-1]))
[1] 0.8856818
> det(cov(mm123[,-1]))
[1] 8.916092e-09

2) Использование того факта, что определитель диагональной матрицы является произведением собственных значений => Наличие одного или нескольких малых собственных значений указывает на коллинеарность

> eigen(cov(mm12[,-1]))$values
[1] 1.0876357 0.8143184

> eigen(cov(mm123[,-1]))$values
[1] 5.388022e+00 9.862794e-01 1.677819e-09

3) Значение матрицы Коэффициент инфляции дисперсии (VIF). VIF для предиктора i равен 1 / (1-R_i ^ 2), где R_i ^ 2 - это R ^ 2 из регрессии предиктора i против остальных предикторов. Коллинеарность присутствует, когда VIF хотя бы для одной независимой переменной велик. Полезное правило: VIF> 10 вызывает беспокойство . Для реализации на R см. здесь . Я также хотел бы прокомментировать, что использование R ^ 2 для определения коллинеарности должно идти рука об руку с визуальным исследованием диаграмм рассеяния, потому что отдельный выброс может «вызвать» коллинеарность там, где ее нет, или может СКРЫТЬ коллинеарность там, где она существует. .

34
ответ дан 24 November 2019 в 16:22
поделиться

Вам может понравиться справочник Вито Риччи "Функции R для регрессионного анализа" http://cran.r-project.org/doc/contrib/Ricci-refcard-regression.pdf

В ней лаконично перечислены многие полезные функции R, связанные с регрессией, включая диагностические функции. В частности, там перечислена функция vif из пакета car, которая позволяет оценить мультиколлинеарность. http://en.wikipedia.org/wiki/Variance_inflation_factor

Рассмотрение мультиколлинеарности часто идет рука об руку с вопросами оценки важности переменных. Если это относится к вам, возможно, стоит обратить внимание на пакет relaimpo: http://prof.beuth-hochschule.de/groemping/relaimpo/

18
ответ дан 24 November 2019 в 16:22
поделиться

См. Также раздел 9.4 в этой книге: Практическая регрессия и Anova с использованием R [Faraway 2002] .

Коллинеарность можно обнаружить несколькими способами:

  1. Исследование корреляционной матрицы предикторов выявит большие попарные коллинеарности.

  2. Регрессия x_i по всем остальным предикторам дает R ^ 2_i. Повторите для всех предикторов. R ^ 2_i, близкое к единице, указывает на проблему - может быть обнаружена неправильная линейная комбинация.

  3. Изучите собственные значения t (X)% *% X , где X обозначает матрицу модели; Маленькие собственные значения указывают на проблему.Можно показать, что число обусловленности 2-нормы представляет собой отношение наибольшего ненулевого сингулярного значения матрицы к наименьшему ненулевому сингулярному значению матрицы ($ \ kappa = \ sqrt {\ lambda_1 / \ lambda_p} $; см. ? Kappa ); \ kappa> = 30 считается большим.

8
ответ дан 24 November 2019 в 16:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: