다중 공선 성이 존재할 때 선형 회귀 계수의 통계적 유의성 결정


9

인구 규모가 다른 여러 도시가 있고 도시의 주류 판매점 수와 DUI 수 사이에 긍정적 인 선형 관계가 있는지 확인하고 싶다고 가정합니다. 추정 된 회귀 계수의 t- 검정을 기반으로이 관계가 유의한지 여부를 결정합니다.

이제 분명히 팝. 도시의 규모는 DUI의 수와 주류 판매점의 수와 양의 상관 관계가 있습니다. 따라서 주류 판매점에서 간단한 선형 회귀 분석을 실행하고 회귀 계수가 통계적으로 유의한지 확인하면 다중 공선 성 문제가 발생하여 주류 판매점이 DUI에 미치는 영향을 과대 평가할 수 있습니다.

이 문제를 해결하려면 두 가지 방법 중 어떤 것을 사용해야합니까?

  1. 1 인당 주류 판매점을 확보 한 후 회귀하려면 도시의 주류 판매점 수를 인구로 나누어야합니다.

  2. 주류 판매점과 규모를 모두 회귀 한 다음 규모를 관리 할 때 주류 판매점 계수가 중요한지 확인해야합니다.

  3. 다른 방법?

나는 어느 것이 더 합리적으로 보일지 정직하게 결정할 수 없습니다. 내가 생각하는 것에 따라 그것이 올바른 방법이라는 것을 스스로에게 확신시킬 수있는 것에 따라 나는 그들 사이를 진동시킨다.

한편으로 1 인당 주류 판매점은 DUI가 개인에 의해 커밋되기 때문에 사용하기에 적합한 변수처럼 보이지만 통계적으로 매우 엄격하지는 않습니다. 반면에, 크기를 제어하는 ​​것은 통계적으로 엄격하지만 다소 간접적 인 것 같습니다. 또한 1 인당 변수 당 주류 판매점을 계산 한 후 크기를 조정하면 두 방법 사이에서 매우 유사한 회귀 계수를 얻지 만 방법 1은 더 작은 p- 값을 생성합니다.


3
대답 할 질문은 비율을 모델링하고 싶은지 여부입니다. 그것은이를 읽고 도움이 될 수 있습니다 : 포아송 모델에서 공변량 또는 오프셋으로 시간을 사용의 차이는 무엇인가?
gung-복직 모니카

2
중요하고 체계적인 질문입니다.
rolando2

2
@gung의 연계 된 답변에서 이것을 강조 할 가치가있다 : "실제로 질문을하는 것은 실제 질문이 무엇인지에 달려있다. 당신이 알고 싶은 것에 해당하는 것을 모델링해야한다." (목표는 ap 값을 최소화하는 것이 아니라 관심 효과를 평가하는 것입니다)
GeoMatt22

답변:


5

"1 인당 리큐 스토어"(X) 및 "인구 크기"(Z)에서 "1 인당 DUI"(Y)를 회귀합니다. 이 방법으로 Y는 도시 사람들의 음주 운전 성향을 반영하며 X는 특정 도시의 인구 특성입니다. Z는 Y에 크기 효과가있는 경우를 대비하여 제어 변수입니다.이 설정에서 다중 공선 성 문제가 발생하지 않을 것이라고 생각합니다.

이 설정은 모델 1보다 더 흥미 롭습니다. 여기서 기본적으로 DUI의 수는 모집단에 비례한다고 가정하고 β예를 들어 대도시의 사람들은 음주 운전에 더 취약합니다. 또한 X는 문화 및 법적 환경을 직접 반영하며 이미 규모에 맞게 조정되었습니다. Sough의 크기가 다른 도시의 경우 거의 동일한 X로 끝날 수 있습니다. 또한 빨강 / 파란색 상태, 연안 / 대륙 등의 다른 제어 변수를 도입 할 수 있습니다.


3

평범한 최소 제곱으로 모형을 추정하는 경우 두 번째 회귀 분석은 다소 문제가 있습니다.

그리고 오류 용어의 분산이 도시 크기에 따라 어떻게 다른지 생각할 수 있습니다.

회귀 분석 (2)은 관측치가 도시 인구 의 제곱 으로 가중치가 지정된 회귀 분석 (1)과 같습니다.

각 도시 나는, 허락하다 와이나는 일인당 음주 운전 사고, 엑스나는 1 인당 주류 판매점으로 나는 도시의 인구가 되십시오.

회귀 (1)는 다음과 같습니다.

와이나는=+엑스나는+ϵ나는
상수없이 회귀 분석 (2)을 실행하면 모집단에 따라 회귀 분석 (1)의 각 관측치가 기본적으로 조정됩니다.

나는와이나는=나는+나는엑스나는+나는

가중치는 최소 제곱 이며 적용하는 가중치 는 도시 인구 의 제곱 입니다. 가장 큰 도시에 많은 무게를주고 있습니까?!

도시의 각 개인에 대한 관찰이 있고 각 개인에게 도시의 평균 값을 할당 한 경우, 인구 (제곱이 아닌)로 각 도시에 가중치를 부여하는 회귀를 실행하는 것과 같습니다.


1

시뮬레이션 된 데이터에 대해 몇 가지 실험을 수행하여 어떤 방법이 가장 효과적인지 확인했습니다. 아래 결과를 읽으십시오.

가지 시나리오를 살펴 보겠습니다. 첫째는 DUI와 주류 판매점간에 직접적인 관계가없는 곳이고 번째 시나리오는 직접적인 관계가있는 곳입니다. 그런 다음 각 방법을 조사하여 어떤 방법이 가장 효과적인지 확인하십시오.

사례 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_Store는 매우 중요합니다. 관계는 간접적이지만

## 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_Store는 중요하지 않으며 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- 값을 생성합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.