Визначення статистичної значущості коефіцієнта лінійної регресії за наявності мультиколінеарності


9

Припустимо, у мене є маса міст з різною чисельністю населення, і я хотів побачити, чи існує позитивна лінійна залежність між кількістю магазинів алкогольних напоїв у місті та кількістю ДУІ. Де я визначаю, чи є ця залежність значною чи ні, спираючись на t-тест розрахункового коефіцієнта регресії.

Тепер явно поп. розмір міста буде позитивно співвідноситися як з кількістю DUI, так і з кількістю магазинів алкогольних напоїв. Таким чином, якщо я запускаю просту лінійну регресію лише на магазини алкогольних напоїв і бачу, чи є її коефіцієнт регресії статистично значущим, я, швидше за все, зіткнуся з проблемою мультиколінеарності та завищую оцінку впливу спиртних напоїв на ДУІ.

Який із двох методів слід використовувати, щоб виправити це?

  1. Я повинен розділити кількість магазинів алкогольних напоїв у місті на його населення, щоб отримати кількість алкогольних напоїв на душу населення, а потім регресувати на цьому.

  2. Я повинен регресувати як в магазинах спиртних напоїв, так і в розмірах, а потім подивитися, чи важливий коефіцієнт запасу алкоголю при контролі розміру.

  3. Якийсь інший метод?

Я, чесно кажучи, не можу вирішити, що здається більш розумним. Я коливаюсь між ними, залежно від того, про кого я думаю, я здатний переконати себе, що це правильний шлях.

З одного боку, магазини спиртних напоїв на душу населення здаються правильною змінною для використання, оскільки ДУІ здійснюють особи, але це не дуже статистично суворо. З іншого боку, контроль за розміром здається статистично жорстким, але досить непрямим. Крім того, якщо я повторно оцінюю після обчислення запасів спиртних напоїв на душу населення, я отримую дуже схожі коефіцієнти регресії між двома методами, але метод 1 дає меншу p-величину.


3
Питання, на яке потрібно відповісти, чи потрібно моделювати тарифи чи ні. Це може допомогти прочитати це: У моделі Пуассона, яка різниця між використанням часу як коваріату чи зміщення?
gung - Відновіть Моніку

2
Важливе і добре поставлене питання.
rolando2

2
Варто наголосити на цьому з пов’язаної відповіді @ gung: "Чи слід моделювати підрахунок чи коефіцієнти дійсно залежать від того, що є вашим основним питанням. Ви повинні моделювати той, який відповідає тому, що ви хочете знати". (тобто мета - не мінімізувати значення ap, а оцінити ефект інтересу)
GeoMatt22

Відповіді:


5

Я б поскаржився на "DUI на душу населення" (Y) на "крамниці на душу населення" (X) та "кількість населення" (Z). Таким чином ваш Y відображає схильність до водіння міських людей у ​​нетверезому стані, тоді як X - це населення, характерне для даного міста. Z - контрольна змінна на всякий випадок, якщо впливає розмір на Y. Я не думаю, що ви не будете бачити проблему мультиколінеарності в цій установці.

Цей параметр цікавіший, ніж ваша модель 1. Тут ви базуєте, що кількість DUI пропорційна кількості населення, тоді як βZзафіксували б нелінійність, наприклад, люди у великих містах більш схильні до водіння у нетверезому стані. Також X відображає культурне та правове середовище безпосередньо, вже скориговане на розмір. Ви можете отримати приблизно однаковий X для міст різного розміру в Софі. Це також дозволяє ввести інші контрольні змінні, такі як червоний / синій стан, прибережний / континентальний тощо.


3

Якщо ви оцінюєте свою модель за допомогою звичайних найменших квадратів, ваш другий регрес є досить проблематичним.

І ви, можливо, захочете подумати про те, як різниця вашої помилки в залежності від розміру міста.

Регресія (2) еквівалентна регресії (1), де спостереження зважуються на площу населення міста:

Для кожного міста i, дозволяє уi будьте п'яними ДТП на душу населення, нехай хi бути спиртними напоями на душу населення, і нехай нi бути населенням міста.

Регресія (1):

уi=а+бхi+ϵi
Якщо ви запускаєте регресію (2) без постійної величини, ви по суті масштабували кожне спостереження регресії (1) населення, тобто ви працюєте:

нiуi=анi+бнiхi+уi

Це найменше зважені квадрати , а ваги, які ви застосовуєте, - це площа населення міста. Це велика вага, яку ви надаєте найбільшим містам ?!

Зауважте, що якщо ви мали спостереження за кожною людиною в місті і призначили кожній людині середнє значення для міста, це було б рівнозначно регресу, коли ви зважуєте кожне місто за кількістю населення (а не населенням у квадраті).


1

Я провів кілька експериментів над імітованими даними, щоб побачити, який метод найкраще працює. Будь ласка, прочитайте мої висновки нижче.

Давайте розглянемо два різних сценарії - Перший, коли немає прямих зв’язків між магазинами DUI & Liquor & Другим, де ми маємо прямий зв’язок. Потім вивчіть кожен із методів, щоб побачити, який метод найкраще працює.

Випадок 1: Немає прямих стосунків, але обидва стосуються населення

library(rmutil)
############
## Simulating Data

set.seed(111)  
# Simulating city populations 
popln <- rpareto(n=10000,m=10000,s=1.2)

# Simulating DUI numbers
e1 <- rnorm(10000,mean=0,sd=15)
DUI = 100 + popln * 0.04 + e1
summary(DUI)
truehist(log(DUI))

# Simulating Nbr of Liquor stores
e2 <- rnorm(100,mean=0,sd=5)
Nbr_Liquor_Stores = 20 + popln * 0.009 + e2
summary(Nbr_Liquor_Stores)
truehist(log(Nbr_Liquor_Stores))

dat <- data.frame(popln,DUI,Nbr_Liquor_Stores)

Тепер, коли дані моделюються, давайте подивимось, як працює кожен із методів.

## Method 0: Simple OLS
fit0 <- lm(DUI~Nbr_Liquor_Stores,data=dat)
summary(fit0)

Coefficients:
                   Estimate Std. Error  t value Pr(>|t|)    
(Intercept)       9.4353630  0.2801544    33.68   <2e-16 ***
Nbr_Liquor_Stores 4.4444207  0.0001609 27617.49   <2e-16 ***

Nbr_Liquor_Stores дуже важливий, як і очікувалося. Хоча відносини непрямі.

## Method 1: Divide Liquor Stores by population and then regress
fit1 <- lm( I(DUI/popln) ~ Nbr_Liquor_Stores, data=dat)
summary(fit1)

                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)        4.981e-01  4.143e-02  12.022   <2e-16 ***
Nbr_Liquor_Stores -1.325e-05  2.380e-05  -0.557    0.578    

Nbr_Liquor_Stores не має значення. Здається, це працює, але поки що не можна приступати до висновків.

## Method 2: Divide Liquor Stores by population and then regress
fit2 <- lm( DUI ~ Nbr_Liquor_Stores + popln, data=dat)
summary(fit2)

                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)        1.003e+02  6.022e-01 166.569   <2e-16 ***
Nbr_Liquor_Stores -1.603e-02  3.042e-02  -0.527    0.598    
popln              4.014e-02  2.738e-04 146.618   <2e-16 ***

Nbr_Liquor_Stores не суттєвий, значення p також досить близьке до способу 1.

## Method 3: "DUI per capita" on "liquer stores per capita" and "population size" 
fit3 <- lm( I(DUI/popln) ~ I(Nbr_Liquor_Stores/popln) + popln, data=dat)
summary(fit3)

                             Estimate Std. Error t value Pr(>|t|)    
(Intercept)                 2.841e-02  1.300e-02   2.187   0.0288 *  
I(Nbr_Liquor_Stores/popln)  4.886e+00  1.603e-02 304.867   <2e-16 ***
popln                      -8.426e-09  6.675e-08  -0.126   0.8996    

(Nbr_Liquor_Stores / popln) дуже важливий! Не очікували цього, можливо, цей метод не найкращий для вашої проблеми.

Випадок 2: Прямий зв'язок з обома Населеннями та Nbr_Liquor_Stores

### Simulating Data    

set.seed(111)  
# Simulating city populations 
popln <- rpareto(n=10000,m=10000,s=1.2)

# Simulating Nbr of Liquor stores
e2 <- rnorm(100,mean=0,sd=5)
Nbr_Liquor_Stores = 20 + popln * 0.009 + e2
summary(Nbr_Liquor_Stores)
truehist(log(Nbr_Liquor_Stores))

# Simulating DUI numbers
e1 <- rnorm(10000,mean=0,sd=15)
DUI = 100 + popln * 0.021 + Nbr_Liquor_Stores * 0.01 + e1
summary(DUI)
truehist(log(DUI))

dat <- data.frame(popln,DUI,Nbr_Liquor_Stores)

Давайте подивимось ефективність кожного з методів у цьому сценарії.

## Method 0: Simple OLS
fit0 <- lm(DUI~Nbr_Liquor_Stores,data=dat)
summary(fit0)

                   Estimate Std. Error t value Pr(>|t|)    
(Intercept)       5.244e+01  1.951e-01   268.8   <2e-16 ***
Nbr_Liquor_Stores 2.343e+00  1.121e-04 20908.9   <2e-16 ***

Очікуваний, але не чудовий метод зробити причинно-наслідкові умовиводи.

## Method 1: Divide Liquor Stores by population and then regress
fit1 <- lm( I(DUI/popln) ~ Nbr_Liquor_Stores, data=dat)
summary(fit1)

                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)        4.705e-01  4.005e-02  11.747   <2e-16 ***
Nbr_Liquor_Stores -1.294e-05  2.301e-05  -0.562    0.574    

Це для мене несподіванка, я очікував, що цей метод захопить відносини, але він не підходить до цього. Тож цей метод провалюється в цьому сценарії!

## Method 2: Divide Liquor Stores by population and then regress
fit2 <- lm( DUI ~ Nbr_Liquor_Stores + popln, data=dat)
summary(fit2)

                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)        1.013e+02  5.945e-01 170.391   <2e-16 ***
Nbr_Liquor_Stores -5.484e-02  2.825e-02  -1.941   0.0523 .  
popln              2.158e-02  2.543e-04  84.875   <2e-16 ***

Nbr_Liquor_Stores є важливим, значення p має багато сенсу. Ясний переможець для мене.

## Method 3: "DUI per capita" on "liquer stores per capita" and "population size" 
fit3 <- lm( I(DUI/popln) ~ I(Nbr_Liquor_Stores/popln) + popln, data=dat)
summary(fit3)

                             Estimate Std. Error t value Pr(>|t|)    
(Intercept)                 6.540e-02  1.485e-02   4.405 1.07e-05 ***
I(Nbr_Liquor_Stores/popln)  3.915e+00  1.553e-02 252.063  < 2e-16 ***
popln                      -2.056e-08  7.635e-08  -0.269    0.788    

TLDR; Спосіб 2 дає найбільш точні значення p для різних сценаріїв.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.