Xác định ý nghĩa thống kê của hệ số hồi quy tuyến tính với sự có mặt của đa cộng tuyến


9

Giả sử tôi có một loạt các thành phố với quy mô dân số khác nhau và tôi muốn xem liệu có mối quan hệ tuyến tính tích cực giữa số lượng cửa hàng rượu trong một thành phố và số lượng DUI không. Trường hợp tôi xác định liệu mối quan hệ này có ý nghĩa hay không dựa trên thử nghiệm t của hệ số hồi quy ước tính.

Bây giờ rõ ràng là pop. quy mô của một thành phố sẽ có mối tương quan tích cực với cả số lượng DUI cũng như số lượng cửa hàng rượu. Do đó, nếu tôi thực hiện hồi quy tuyến tính đơn giản trên các cửa hàng rượu và xem liệu hệ số hồi quy của nó có ý nghĩa thống kê hay không, tôi có thể sẽ gặp phải vấn đề về đa cộng đồng, và ước tính quá mức ảnh hưởng của các cửa hàng rượu đối với DUIs.

Tôi nên sử dụng phương pháp nào trong hai phương pháp để sửa lỗi này?

  1. Tôi nên chia số lượng cửa hàng rượu trong thành phố cho dân số của mình để có được một cửa hàng rượu trên đầu người và sau đó thoái lui về điều đó.

  2. Tôi nên hồi quy trên cả cửa hàng rượu và kích thước, và sau đó xem thử hệ số cửa hàng rượu có đáng kể khi kiểm soát kích thước không.

  3. Một số phương pháp khác?

Thành thật tôi không thể quyết định cái nào hợp lý hơn. Tôi bỏ trống giữa họ, tùy theo suy nghĩ của tôi về việc tôi có thể thuyết phục bản thân rằng đó là cách đúng đắn.

Một mặt, các cửa hàng rượu trên đầu người có vẻ như là biến phù hợp để sử dụng, vì DUI được cam kết bởi các cá nhân, nhưng điều đó có vẻ không nghiêm ngặt về mặt thống kê. Mặt khác, việc kiểm soát kích thước có vẻ nghiêm ngặt về mặt thống kê, nhưng khá gián tiếp. Hơn nữa, nếu tôi hủy bỏ sau khi tính toán lưu trữ rượu trên đầu người, tôi nhận được hệ số hồi quy rất giống nhau giữa hai phương pháp, nhưng phương pháp 1 tạo ra giá trị p nhỏ hơn.


3
Một câu hỏi để trả lời là nếu bạn muốn mô hình tỷ lệ hay không. Có thể giúp đọc được điều này: Trong mô hình Poisson, sự khác biệt giữa việc sử dụng thời gian như một hiệp phương sai hoặc bù?
gung - Phục hồi Monica

2
Một câu hỏi quan trọng và có khung.
rolando2

2
Đáng nhấn mạnh điều này từ câu trả lời được liên kết của @ gung: "Việc bạn nên mô hình số lượng hay tỷ lệ thực sự phụ thuộc vào câu hỏi thực chất của bạn là gì. Bạn nên mô hình hóa câu hỏi tương ứng với những gì bạn muốn biết." (tức là mục tiêu không phải là để giảm thiểu giá trị ap, mà là để đánh giá hiệu quả của sự quan tâm)
GeoMatt22

Câu trả lời:


5

Tôi sẽ hồi quy "DUI bình quân đầu người" (Y) trên "cửa hàng chất lỏng trên đầu người" (X) và "quy mô dân số" (Z). Bằng cách này, chữ Y của bạn phản ánh xu hướng lái xe khi say rượu của người dân thành thị, trong khi X là đặc điểm dân số của một thành phố nhất định. Z là biến điều khiển chỉ trong trường hợp nếu có hiệu ứng kích thước trên Y. Tôi không nghĩ bạn sẽ thấy vấn đề đa cộng đồng trong thiết lập này.

Thiết lập này thú vị hơn mô hình của bạn 1. Ở đây, cơ sở của bạn là giả định rằng số lượng DUI tỷ lệ thuận với dân số, trong khi sẽ nắm bắt được tính phi tuyến, ví dụ: người dân ở các thành phố lớn dễ bị say rượu hơn. Ngoài ra X phản ánh trực tiếp môi trường văn hóa và pháp lý, đã được điều chỉnh theo kích thước. Bạn có thể kết thúc với cùng một X cho các thành phố có kích cỡ khác nhau trong Sough. Điều này cũng cho phép bạn giới thiệu các biến điều khiển khác như trạng thái Đỏ / Xanh lam, Vùng ven biển / Lục địa, v.v.βZ


3

Nếu ước lượng mô hình của bạn với bình phương tối thiểu thông thường, hồi quy thứ hai của bạn khá khó khăn.

Và bạn có thể muốn nghĩ về phương sai của thuật ngữ lỗi của bạn thay đổi như thế nào với quy mô thành phố.

Regression (2) tương đương với hồi quy của bạn (1) trong đó quan sát được trọng bởi các vuông dân số của thành phố:

Đối với mỗi thành phố , hãy để say rượu khi lái xe bình quân đầu người, hãy để là cửa hàng rượu trên đầu người và hãy để là dân số của thành phố.y i x iiyixinTôi

Hồi quy (1) là: Nếu bạn chạy hồi quy (2) không có hằng số, về cơ bản, bạn đã điều chỉnh tỷ lệ quan sát hồi quy (1) theo dân số, nghĩa là bạn đang chạy:

yTôi= =một+bxTôi+εTôi

nTôiyTôi= =mộtnTôi+bnTôixTôi+bạnTôi

Đây là trọng nhất hình vuông , và các trọng bạn đang áp dụng là hình vuông dân số của thành phố. Đó là rất nhiều trọng lượng bạn đang cho các thành phố lớn nhất?!

Lưu ý rằng nếu bạn có một quan sát cho từng cá nhân trong thành phố và gán cho mỗi cá nhân giá trị trung bình của thành phố, thì điều đó sẽ tương đương với việc thực hiện một hồi quy trong đó bạn tính trọng số của mỗi thành phố theo dân số (không phải bình phương dân số).


1

Tôi đã chạy một vài thử nghiệm trên dữ liệu mô phỏng để xem phương pháp nào hoạt động tốt nhất. Xin vui lòng đọc những phát hiện của tôi dưới đây.

Hãy xem xét hai kịch bản khác nhau - Thứ nhất khi không có mối quan hệ trực tiếp giữa các cửa hàng DUI & Rượu & Thứ hai nơi chúng tôi có mối quan hệ trực tiếp. Sau đó kiểm tra từng phương pháp để xem phương pháp nào hoạt động tốt nhất.

Trường hợp 1: Không có mối quan hệ trực tiếp nhưng cả hai đều liên quan đến dân số

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)

Bây giờ dữ liệu được mô phỏng, hãy xem cách mỗi giá trị của phương thức.

## 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 rất có ý nghĩa, như mong đợi. Mặc dù mối quan hệ là gián tiếp.

## 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 không có ý nghĩa. Có vẻ như để làm việc, nhưng cho phép không đi đến kết luận nào.

## 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 không đáng kể, giá trị p cũng khá gần với Phương thức 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) rất có ý nghĩa! Không ngờ rằng, có lẽ phương pháp này không phải là tốt nhất cho tuyên bố vấn đề của bạn.

Trường hợp 2: Mối quan hệ trực tiếp với cả Dân số & 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)

Chúng ta hãy xem hiệu suất của từng phương thức trong kịch bản này.

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

Dự kiến, nhưng không phải là một phương pháp tuyệt vời để thực hiện các suy luận nhân quả.

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

Đó là một bất ngờ đối với tôi, tôi đã mong đợi phương pháp này để nắm bắt mối quan hệ nhưng nó không chọn nó. Vì vậy, phương pháp này thất bại trong kịch bản này!

## 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 rất quan trọng, giá trị p mang nhiều ý nghĩa. Một người chiến thắng rõ ràng cho tôi.

## 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; Phương pháp 2 tạo ra các giá trị p chính xác nhất trong các tình huống khác nhau.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.