Determinação da significância estatística do coeficiente de regressão linear na presença de multicolinearidade

9

Suponha que eu tenha várias cidades com diferentes tamanhos populacionais e queira ver se há uma relação linear positiva entre o número de lojas de bebidas em uma cidade e o número de DUIs. Onde estou determinando se esse relacionamento é significativo ou não com base em um teste t do coeficiente de regressão estimado.

Agora claramente o pop. o tamanho de uma cidade será positivamente correlacionado com o número de DUIs e o número de lojas de bebidas. Portanto, se eu executar uma regressão linear simples em apenas lojas de bebidas alcoólicas e ver se seu coeficiente de regressão é estatisticamente significativo, provavelmente terei um problema de multicolinearidade e superestimarei o efeito das lojas de bebidas alcoólicas nas DUIs.

Qual dos dois métodos devo usar para corrigir isso?

  1. Eu deveria dividir o número de lojas de bebidas na cidade por sua população, a fim de obter um valor per capita de lojas de bebidas e depois voltar a isso.

  2. Devo regredir nas lojas e no tamanho das bebidas e depois ver se o coeficiente da loja é significativo ao controlar o tamanho.

  3. Algum outro método?

Sinceramente, não consigo decidir o que parece mais sensato. Eu vacilo entre eles, dependendo de qual eu penso, sou capaz de me convencer de que esse é o caminho certo.

Por um lado, as lojas de bebidas alcoólicas per capita parecem ser a variável certa a ser usada, uma vez que as DUIs são cometidas por indivíduos, mas isso não parece ser estatisticamente rigoroso. Por outro lado, controlar o tamanho parece estatisticamente rigoroso, mas indireto. Além disso, se eu redimensionar após calcular a variável per capita das lojas de bebidas, obter coeficientes de regressão muito semelhantes entre os dois métodos, mas o método 1 produz um valor p menor.

Thoth
fonte
3
Uma pergunta a ser respondida é se você deseja modelar taxas ou não. Pode ser útil
gung - Restabelece Monica
2
Uma questão importante e bem estruturada.
Rolando2
2
Vale enfatizar isso na resposta vinculada de @ gung: "Se você deve modelar contagens ou taxas realmente depende de qual é a sua pergunta substantiva. Você deve modelar a que corresponde ao que deseja saber". (ou seja, o objectivo não é para minimizar o valor de p, mas para avaliar um efeito de interesse)
GeoMatt22

Respostas:

5

Regressaria o "DUI per capita" (Y) em "licores de bebidas per capita" (X) e "tamanho da população" (Z). Dessa forma, seu Y reflete a propensão a dirigir embriagado de pessoas urbanas, enquanto X é a característica da população de uma determinada cidade. Z é uma variável de controle para o caso de haver efeito de tamanho em Y. Eu não acho que você verá um problema de multicolinearidade nesta configuração.

βZ

Aksakal
fonte
3

Se você estimar seu modelo com mínimos quadrados comuns, sua segunda regressão é bastante problemática.

E você pode pensar em como a variação do seu termo de erro varia com o tamanho da cidade.

A regressão (2) é equivalente à sua regressão (1), em que as observações são ponderadas pelo quadrado da população da cidade:

EuyEuxEunEu

yEu=uma+bxEu+ϵEu

nEuyEu=umanEu+bnEuxEu+vocêEu

Isso representa os mínimos quadrados ponderados e os pesos que você está aplicando são o quadrado da população da cidade. Você está dando muito peso às maiores cidades ?!

Observe que se você tivesse uma observação para cada indivíduo em uma cidade e atribuísse a cada indivíduo o valor médio da cidade, isso seria equivalente a executar uma regressão em que você está ponderando cada cidade pela população (não pela população ao quadrado).

Matthew Gunn
fonte
1

Fiz algumas experiências com dados simulados para ver qual método funciona melhor. Por favor, leia minhas descobertas abaixo.

Vamos analisar dois cenários diferentes - primeiro, onde não há relacionamento direto entre as lojas de bebidas alcoólicas e bebidas alcoólicas, e segundo, onde temos um relacionamento direto. Em seguida, examine cada um dos métodos para ver qual método funciona melhor.

Caso 1: Nenhuma relação direta, mas ambas estão relacionadas à população

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)

Agora que os dados são simulados, vamos ver como cada um dos métodos se sai.

## 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 altamente significativo, conforme o esperado. Embora o relacionamento seja indireto.

## 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 não tem significado. Parece funcionar, mas não vamos tirar conclusões ainda.

## 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 não é significativo, o valor-p também é bastante próximo ao método 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) altamente significativo! Não esperava isso, talvez esse método não seja o melhor para sua declaração de problema.

Caso 2: relacionamento direto com a Population e 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)

Vamos ver o desempenho de cada um dos métodos neste cenário.

## 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 ***

Método esperado, mas não ótimo, para fazer inferências causais.

## 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    

Isso é uma surpresa para mim, eu esperava que esse método capturasse o relacionamento, mas ele não o pegou. Portanto, este método falha neste cenário!

## 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 é significativo, o valor p faz muito sentido. Um vencedor claro para mim.

## 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; O método 2 produz valores de p mais precisos em diferentes cenários.

ab90hi
fonte